#define PICODRIVE_HACK\r
// Options //\r
\r
-\r
+#ifndef FAMEC_NO_GOTOS\r
+// computed gotos is a GNU extension\r
+#ifndef __GNUC__\r
+#define FAMEC_NO_GOTOS\r
+#endif\r
+// as of 3.3, clang takes over 3h to compile this in computed goto mode..\r
+#ifdef __clang__\r
+#define FAMEC_NO_GOTOS\r
+#endif\r
+#endif\r
+ \r
#undef INLINE\r
#ifdef _MSC_VER\r
#define INLINE\r
//u32 oldSR = GET_SR;\r
\r
m68kcontext.io_cycle_counter -= exception_cycle_table[vect];\r
+#ifdef FAMEC_EMULATE_TRACE\r
+ m68kcontext.execinfo &= ~FM68K_EMULATE_TRACE;\r
+#endif\r
\r
PRE_IO\r
\r
\r
/* adjust SR */\r
flag_S = M68K_SR_S;\r
+ flag_T = 0;\r
\r
#ifndef FAMEC_32BIT_PC\r
newPC&=M68K_ADR_MASK\r
#ifdef FAMEC_EMULATE_TRACE\r
if (m68kcontext.execinfo & FM68K_EMULATE_TRACE)\r
{\r
- m68kcontext.io_cycle_counter = cycles_needed;\r
+ m68kcontext.io_cycle_counter += cycles_needed;\r
cycles_needed = 0;\r
m68kcontext.execinfo &= ~FM68K_EMULATE_TRACE;\r
m68kcontext.execinfo |= FM68K_DO_TRACE;\r
SET_PC(execute_exception(M68K_TRACE_EX, GET_PC, GET_SR));\r
- flag_T=0;\r
if (m68kcontext.io_cycle_counter > 0)\r
{\r
//NEXT\r
if (cycles_needed != 0)\r
{\r
u32 line;\r
- m68kcontext.io_cycle_counter = cycles_needed;\r
+ m68kcontext.io_cycle_counter += cycles_needed;\r
cycles_needed = 0;\r
if (m68kcontext.io_cycle_counter <= 0) goto famec_End;\r
line=interrupt_chk__();\r