| #define DEBUG | |
| #define H8500_MSIZE (8*64*1024) | |
| #define CSIZE 1000 | |
| union rtype | |
| { | |
| unsigned long l; | |
| unsigned short s[2]; | |
| unsigned char *c; | |
| }; | |
| /* Local register names */ | |
| typedef enum | |
| { | |
| R0, R1, R2, R3, R4, R5, R6, R7, | |
| R_SR, /* 8 */ | |
| R_PC, /* 9 */ | |
| R_BR, /* 10 */ | |
| R_BP, /* 11 */ | |
| R_CP, /* 14 */ | |
| R_DP, /* 13 */ | |
| R_EP, /* 12 */ | |
| R_TP, /* 15 */ | |
| R_HARD_0, /* 16 */ | |
| R_HARD8_0, /* 17 */ | |
| R_LAST, | |
| } reg_type; | |
| typedef struct | |
| { | |
| fastref type; | |
| union | |
| { | |
| int code; | |
| unsigned char *bptr; | |
| unsigned short *wptr; | |
| unsigned long *lptr; | |
| unsigned char **segptr; | |
| union rtype *rptr; | |
| } | |
| reg; | |
| int literal; | |
| union | |
| { | |
| unsigned char **segreg; | |
| unsigned short *wptr; | |
| union rtype *rptr; | |
| } | |
| r2; | |
| } | |
| ea_type; | |
| typedef struct | |
| { | |
| ea_type srca; | |
| ea_type srcb; | |
| ea_type dst; | |
| fastref opcode; | |
| fastref flags; | |
| int next_pc; | |
| int oldpc; | |
| int cycles; | |
| #ifdef DEBUG | |
| h8500_opcode_info *op; | |
| #endif | |
| } | |
| decoded_inst; | |
| typedef struct | |
| { | |
| int exception; | |
| union rtype regs[20]; | |
| unsigned char *memory; | |
| unsigned short *cache_idx; | |
| int cache_top; | |
| int maximum; | |
| int csize; | |
| decoded_inst *cache; | |
| int cycles; | |
| int insts; | |
| int ticks; | |
| int compiles; | |
| } | |
| cpu_state_type; |