--- BasiliskII/src/uae_cpu/basilisk_glue.cpp 2002/09/01 15:17:13 1.13 +++ BasiliskII/src/uae_cpu/basilisk_glue.cpp 2005/01/30 21:42:16 1.17 @@ -1,7 +1,7 @@ /* * basilisk_glue.cpp - Glue UAE CPU to Basilisk II CPU engine interface * - * Basilisk II (C) 1997-2002 Christian Bauer + * Basilisk II (C) 1997-2005 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,16 +22,18 @@ #include "cpu_emulation.h" #include "main.h" +#include "prefs.h" #include "emul_op.h" #include "rom_patches.h" #include "m68k.h" #include "memory.h" #include "readcpu.h" #include "newcpu.h" +#include "compiler/compemu.h" // RAM and ROM pointers -uint32 RAMBaseMac = 0; // RAM base (Mac address space) gb-- init is important +uint32 RAMBaseMac = 0; // RAM base (Mac address space) gb-- initializer is important uint8 *RAMBaseHost; // RAM base (host address space) uint32 RAMSize; // Size of RAM uint32 ROMBaseMac; // ROM base (Mac address space) @@ -49,8 +51,12 @@ int MacFrameLayout; // Frame buffer la uintptr MEMBaseDiff; // Global offset between a Mac address and its Host equivalent #endif +#if USE_JIT +bool UseJIT = false; +#endif + // From newcpu.cpp -extern int quit_program; +extern bool quit_program; /* @@ -90,6 +96,11 @@ bool Init680x0(void) #endif init_m68k(); +#if USE_JIT + UseJIT = compiler_use_jit(); + if (UseJIT) + compiler_init(); +#endif return true; } @@ -100,6 +111,10 @@ bool Init680x0(void) void Exit680x0(void) { +#if USE_JIT + if (UseJIT) + compiler_exit(); +#endif exit_m68k(); } @@ -122,6 +137,11 @@ void InitFrameBufferMapping(void) void Start680x0(void) { m68k_reset(); +#if USE_JIT + if (UseJIT) + m68k_compile_execute(); + else +#endif m68k_execute(); } @@ -178,7 +198,7 @@ void Execute68kTrap(uint16 trap, struct // Execute trap m68k_setpc(m68k_areg(regs, 7)); fill_prefetch_0(); - quit_program = 0; + quit_program = false; m68k_execute(); // Clean up stack @@ -193,7 +213,7 @@ void Execute68kTrap(uint16 trap, struct r->d[i] = m68k_dreg(regs, i); for (i=0; i<7; i++) r->a[i] = m68k_areg(regs, i); - quit_program = 0; + quit_program = false; } @@ -225,7 +245,7 @@ void Execute68k(uint32 addr, struct M68k // Execute routine m68k_setpc(addr); fill_prefetch_0(); - quit_program = 0; + quit_program = false; m68k_execute(); // Clean up stack @@ -240,5 +260,5 @@ void Execute68k(uint32 addr, struct M68k r->d[i] = m68k_dreg(regs, i); for (i=0; i<7; i++) r->a[i] = m68k_areg(regs, i); - quit_program = 0; + quit_program = false; }