Mercurial > repos > blastem
comparison m68k_core.h @ 1298:d5a47597b61f
Prevent blowing past our native translated instruction size of 255 bytes when translating movem with a large register list. Fixes bug in which Fantastic Dizzy was completely broken on 32-bit builds
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 25 Mar 2017 00:21:32 -0700 |
parents | 2e6dcb5c11a2 |
children | 208803173ebc |
comparison
equal
deleted
inserted
replaced
1297:71b1a080b30c | 1298:d5a47597b61f |
---|---|
22 #define INT_PENDING_NONE 255 | 22 #define INT_PENDING_NONE 255 |
23 | 23 |
24 typedef void (*start_fun)(uint8_t * addr, void * context); | 24 typedef void (*start_fun)(uint8_t * addr, void * context); |
25 | 25 |
26 typedef struct { | 26 typedef struct { |
27 code_ptr impl; | |
28 uint16_t reglist; | |
29 uint8_t reg_to_mem; | |
30 uint8_t size; | |
31 int8_t dir; | |
32 } movem_fun; | |
33 | |
34 typedef struct { | |
27 cpu_options gen; | 35 cpu_options gen; |
28 | 36 |
29 int8_t dregs[8]; | 37 int8_t dregs[8]; |
30 int8_t aregs[8]; | 38 int8_t aregs[8]; |
31 int8_t flag_regs[5]; | 39 int8_t flag_regs[5]; |
44 code_ptr native_addr; | 52 code_ptr native_addr; |
45 code_ptr native_addr_and_sync; | 53 code_ptr native_addr_and_sync; |
46 code_ptr get_sr; | 54 code_ptr get_sr; |
47 code_ptr set_sr; | 55 code_ptr set_sr; |
48 code_ptr set_ccr; | 56 code_ptr set_ccr; |
57 code_info extra_code; | |
58 movem_fun *big_movem; | |
59 uint32_t num_movem; | |
60 uint32_t movem_storage; | |
49 } m68k_options; | 61 } m68k_options; |
50 | 62 |
51 typedef struct m68k_context { | 63 typedef struct m68k_context { |
52 uint8_t flags[5]; | 64 uint8_t flags[5]; |
53 uint8_t status; | 65 uint8_t status; |