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;