improve 64bit portability
[picodrive.git] / cpu / musashi / m68kcpu.h
index 350c975..a1dff7d 100644 (file)
 #define M68KCPU__HEADER\r
 \r
 // notaz: something's missing this\r
-#ifndef UINT16\r
+#ifndef UINT64\r
 #define UINT64 unsigned long long\r
+#endif\r
+#ifndef UINT16\r
 #define UINT32 unsigned int\r
 #define UINT16 unsigned short\r
 #define UINT8  unsigned char\r
 /* Exception Vectors handled by emulation */\r
 #define EXCEPTION_BUS_ERROR                2 /* This one is not emulated! */\r
 #define EXCEPTION_ADDRESS_ERROR            3 /* This one is partially emulated (doesn't stack a proper frame yet) */\r
+#undef EXCEPTION_ILLEGAL_INSTRUCTION\r
 #define EXCEPTION_ILLEGAL_INSTRUCTION      4\r
 #define EXCEPTION_ZERO_DIVIDE              5\r
 #define EXCEPTION_CHK                      6\r
@@ -917,6 +920,7 @@ typedef struct
 \r
        // notaz\r
        sint cyc_remaining_cycles;\r
+       sint not_polling;\r
 } m68ki_cpu_core;\r
 \r
 // notaz\r
@@ -1534,7 +1538,8 @@ INLINE void m68ki_set_sr_noint_nosp(uint value)
 INLINE void m68ki_set_sr(uint value)\r
 {\r
        m68ki_set_sr_noint(value);\r
-       m68ki_check_interrupts();\r
+       if (GET_CYCLES() >= 0) // notaz\r
+               m68ki_check_interrupts();\r
 }\r
 \r
 \r
@@ -1619,7 +1624,7 @@ INLINE void m68ki_stack_frame_buserr(uint sr)
 /* Format 8 stack frame (68010).\r
  * 68010 only.  This is the 29 word bus/address error frame.\r
  */\r
-void m68ki_stack_frame_1000(uint pc, uint sr, uint vector)\r
+INLINE void m68ki_stack_frame_1000(uint pc, uint sr, uint vector)\r
 {\r
        /* VERSION\r
      * NUMBER\r
@@ -1673,7 +1678,7 @@ void m68ki_stack_frame_1000(uint pc, uint sr, uint vector)
  * if the error happens at an instruction boundary.\r
  * PC stacked is address of next instruction.\r
  */\r
-void m68ki_stack_frame_1010(uint sr, uint vector, uint pc)\r
+INLINE void m68ki_stack_frame_1010(uint sr, uint vector, uint pc)\r
 {\r
        /* INTERNAL REGISTER */\r
        m68ki_push_16(0);\r
@@ -1720,7 +1725,7 @@ void m68ki_stack_frame_1010(uint sr, uint vector, uint pc)
  * if the error happens during instruction execution.\r
  * PC stacked is address of instruction in progress.\r
  */\r
-void m68ki_stack_frame_1011(uint sr, uint vector, uint pc)\r
+INLINE void m68ki_stack_frame_1011(uint sr, uint vector, uint pc)\r
 {\r
        /* INTERNAL REGISTERS (18 words) */\r
        m68ki_push_32(0);\r
@@ -1964,7 +1969,7 @@ m68k_read_memory_8(0x00ffff01);
 \r
 \r
 /* Service an interrupt request and start exception processing */\r
-void m68ki_exception_interrupt(uint int_level)\r
+INLINE void m68ki_exception_interrupt(uint int_level)\r
 {\r
        uint vector;\r
        uint sr;\r
@@ -2009,6 +2014,7 @@ void m68ki_exception_interrupt(uint int_level)
 \r
        /* Get the new PC */\r
        new_pc = m68ki_read_data_32((vector<<2) + REG_VBR);\r
+       //new_pc = m68k_read_immediate_32((vector<<2) + REG_VBR); // notaz hack\r
 \r
        /* If vector is uninitialized, call the uninitialized interrupt vector */\r
        if(new_pc == 0)\r