FAME integration finished, some adjustments of CPU core stuff
[picodrive.git] / cpu / fame / famec.c
index 609b76f..8c71c07 100644 (file)
@@ -523,7 +523,7 @@ static u32 flag_I;
 #endif\r
 \r
 \r
-static void init_jump_table(void);\r
+static int init_jump_table(void);\r
 \r
 /* Custom function handler */\r
 typedef void (*icust_handler_func)(u32 vector);\r
@@ -626,35 +626,6 @@ static const s32 exception_cycle_table[256] =
 };\r
 \r
 \r
-/********************/\r
-/* helper functions */\r
-/********************/\r
-\r
-\r
-#if 0\r
-static void famec_SetFetch(u32 low_adr, u32 high_adr, u32 fetch_adr)\r
-{\r
-    u32 i, j;\r
-\r
-       i = (low_adr >> M68K_FETCHSFT) & M68K_FETCHMASK;\r
-       j = (high_adr >> M68K_FETCHSFT) & M68K_FETCHMASK;\r
-\r
-       while (i <= j)\r
-               g_m68kcontext->Fetch[i++] = fetch_adr;\r
-}\r
-\r
-static void famec_SetBanks(void)\r
-{\r
-       u32 i=0;\r
-       while(m68kcontext.fetch[i].low_addr != (u32)-1)\r
-       {\r
-               famec_SetFetch(m68kcontext.fetch[i].low_addr,m68kcontext.fetch[i].high_addr,m68kcontext.fetch[i].offset);\r
-               i++;\r
-       }\r
-}\r
-#endif\r
-\r
-\r
 /***********************/\r
 /* core main functions */\r
 /***********************/\r
@@ -939,8 +910,12 @@ int m68k_emulate(s32 cycles)
 {\r
        if (!initialised)\r
        {\r
+#ifdef FAMEC_NO_GOTOS\r
                init_jump_table();\r
                return 0;\r
+#else\r
+               goto init_jump_table;\r
+#endif\r
        }\r
 \r
        /* Comprobar si la CPU esta detenida debido a un doble error de bus */\r
@@ -965,8 +940,8 @@ int m68k_emulate(s32 cycles)
        // Cache SR\r
        SET_SR(m68kcontext.sr)\r
 \r
-               // Cache PPL\r
-               flag_I = M68K_PPL;\r
+       // Cache PPL\r
+       flag_I = M68K_PPL;\r
 \r
        // Fijar PC\r
        SET_PC(m68kcontext.pc)\r
@@ -1078,12 +1053,16 @@ famec_Exec:
 #endif\r
 \r
        return cycles - m68kcontext.io_cycle_counter;\r
-}\r
-\r
 \r
+#ifdef FAMEC_NO_GOTOS\r
+}\r
 \r
-static void init_jump_table(void)\r
+static int init_jump_table(void)\r
+{{\r
+#else\r
+init_jump_table:\r
 {\r
+#endif\r
        u32 i, j;\r
 \r
        for(i = 0x0000; i <= 0xFFFF; i += 0x0001)\r
@@ -5090,6 +5069,7 @@ static void init_jump_table(void)
                JumpTable[0xF000 + i] = CAST_OP(0xF000);\r
 \r
        initialised = 1;\r
-}\r
+       return 0;\r
+}}\r
 \r
 \r