ソースを参照

code region dump added for Musashi

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@439 be3aeb3a-fb24-0410-a615-afba39da0efa
notaz 16 年 前
コミット
6cab49fd07
3 ファイル変更31 行追加1 行削除
  1. 27 0
      Pico/Sek.c
  2. 2 0
      cpu/musashi/Makefile
  3. 2 1
      cpu/musashi/m68kconf.h

+ 27 - 0
Pico/Sek.c

@@ -193,3 +193,30 @@ PICO_INTERNAL void SekSetRealTAS(int use_real)
 #endif
 }
 
+#if defined(EMU_M68K) && M68K_INSTRUCTION_HOOK == OPT_SPECIFY_HANDLER
+static unsigned char op_flags[0x400000/2] = { 0, };
+static int atexit_set = 0;
+
+static void make_idc(void)
+{
+  FILE *f = fopen("idc.idc", "w");
+  int i;
+  if (!f) return;
+  fprintf(f, "#include <idc.idc>\nstatic main() {\n");
+  for (i = 0; i < 0x400000/2; i++)
+    if (op_flags[i] != 0)
+      fprintf(f, "  MakeCode(0x%06x);\n", i*2);
+  fprintf(f, "}\n");
+  fclose(f);
+}
+
+void instruction_hook(void)
+{
+  if (!atexit_set) {
+    atexit(make_idc);
+    atexit_set = 1;
+  }
+  if (REG_PC < 0x400000)
+    op_flags[REG_PC/2] = 1;
+}
+#endif

+ 2 - 0
cpu/musashi/Makefile

@@ -1,3 +1,5 @@
+all : m68kops.c
+
 m68kops.c : m68kmake
 	./$<
 

+ 2 - 1
cpu/musashi/m68kconf.h

@@ -155,7 +155,8 @@
  * instruction.
  */
 #define M68K_INSTRUCTION_HOOK       OPT_OFF
-#define M68K_INSTRUCTION_CALLBACK() your_instruction_hook_function()
+//#define M68K_INSTRUCTION_HOOK       OPT_SPECIFY_HANDLER
+#define M68K_INSTRUCTION_CALLBACK() instruction_hook()
 
 
 /* If ON, the CPU will emulate the 4-byte prefetch queue of a real 68000 */