diff options
Diffstat (limited to 'src/emu/cpu/sh4/sh4.c')
-rw-r--r-- | src/emu/cpu/sh4/sh4.c | 485 |
1 files changed, 243 insertions, 242 deletions
diff --git a/src/emu/cpu/sh4/sh4.c b/src/emu/cpu/sh4/sh4.c index 5a2dd91fe9b..d7e1784cd4f 100644 --- a/src/emu/cpu/sh4/sh4.c +++ b/src/emu/cpu/sh4/sh4.c @@ -30,16 +30,15 @@ CPU_DISASSEMBLE( sh4 ); -INLINE SH4 *get_safe_token(running_device *device) +INLINE sh4_state *get_safe_token(running_device *device) { assert(device != NULL); - assert(device->type() == CPU); - assert(cpu_get_type(device) == CPU_SH4); - return (SH4 *)downcast<legacy_cpu_device *>(device)->token(); + assert(device->type() == SH4); + return (sh4_state *)downcast<legacy_cpu_device *>(device)->token(); } /* Called for unimplemented opcodes */ -static void TODO(SH4 *sh4) +static void TODO(sh4_state *sh4) { } @@ -121,7 +120,7 @@ UINT32 abs; } #endif -INLINE UINT8 RB(SH4 *sh4, offs_t A) +INLINE UINT8 RB(sh4_state *sh4, offs_t A) { if (A >= 0xfe000000) return sh4_internal_r(sh4->internal, ((A & 0x0fc) >> 2) | ((A & 0x1fe0000) >> 11), 0xff << ((A & 3)*8)) >> ((A & 3)*8); @@ -132,7 +131,7 @@ INLINE UINT8 RB(SH4 *sh4, offs_t A) return memory_read_byte_64le(sh4->program, A & AM); } -INLINE UINT16 RW(SH4 *sh4, offs_t A) +INLINE UINT16 RW(sh4_state *sh4, offs_t A) { if (A >= 0xfe000000) return sh4_internal_r(sh4->internal, ((A & 0x0fc) >> 2) | ((A & 0x1fe0000) >> 11), 0xffff << ((A & 2)*8)) >> ((A & 2)*8); @@ -143,7 +142,7 @@ INLINE UINT16 RW(SH4 *sh4, offs_t A) return memory_read_word_64le(sh4->program, A & AM); } -INLINE UINT32 RL(SH4 *sh4, offs_t A) +INLINE UINT32 RL(sh4_state *sh4, offs_t A) { if (A >= 0xfe000000) return sh4_internal_r(sh4->internal, ((A & 0x0fc) >> 2) | ((A & 0x1fe0000) >> 11), 0xffffffff); @@ -154,7 +153,7 @@ INLINE UINT32 RL(SH4 *sh4, offs_t A) return memory_read_dword_64le(sh4->program, A & AM); } -INLINE void WB(SH4 *sh4, offs_t A, UINT8 V) +INLINE void WB(sh4_state *sh4, offs_t A, UINT8 V) { if (A >= 0xfe000000) @@ -172,7 +171,7 @@ INLINE void WB(SH4 *sh4, offs_t A, UINT8 V) memory_write_byte_64le(sh4->program, A & AM,V); } -INLINE void WW(SH4 *sh4, offs_t A, UINT16 V) +INLINE void WW(sh4_state *sh4, offs_t A, UINT16 V) { if (A >= 0xfe000000) { @@ -189,7 +188,7 @@ INLINE void WW(SH4 *sh4, offs_t A, UINT16 V) memory_write_word_64le(sh4->program, A & AM,V); } -INLINE void WL(SH4 *sh4, offs_t A, UINT32 V) +INLINE void WL(sh4_state *sh4, offs_t A, UINT32 V) { if (A >= 0xfe000000) { @@ -213,7 +212,7 @@ INLINE void WL(SH4 *sh4, offs_t A, UINT32 V) * 0011 nnnn mmmm 1100 1 - * ADD Rm,Rn */ -INLINE void ADD(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void ADD(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] += sh4->r[m]; } @@ -222,7 +221,7 @@ INLINE void ADD(SH4 *sh4, UINT32 m, UINT32 n) * 0111 nnnn iiii iiii 1 - * ADD #imm,Rn */ -INLINE void ADDI(SH4 *sh4, UINT32 i, UINT32 n) +INLINE void ADDI(sh4_state *sh4, UINT32 i, UINT32 n) { sh4->r[n] += (INT32)(INT16)(INT8)i; } @@ -231,7 +230,7 @@ INLINE void ADDI(SH4 *sh4, UINT32 i, UINT32 n) * 0011 nnnn mmmm 1110 1 carry * ADDC Rm,Rn */ -INLINE void ADDC(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void ADDC(sh4_state *sh4, UINT32 m, UINT32 n) { UINT32 tmp0, tmp1; @@ -250,7 +249,7 @@ INLINE void ADDC(SH4 *sh4, UINT32 m, UINT32 n) * 0011 nnnn mmmm 1111 1 overflow * ADDV Rm,Rn */ -INLINE void ADDV(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void ADDV(sh4_state *sh4, UINT32 m, UINT32 n) { INT32 dest, src, ans; @@ -284,7 +283,7 @@ INLINE void ADDV(SH4 *sh4, UINT32 m, UINT32 n) * 0010 nnnn mmmm 1001 1 - * AND Rm,Rn */ -INLINE void AND(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void AND(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] &= sh4->r[m]; } @@ -294,7 +293,7 @@ INLINE void AND(SH4 *sh4, UINT32 m, UINT32 n) * 1100 1001 iiii iiii 1 - * AND #imm,R0 */ -INLINE void ANDI(SH4 *sh4, UINT32 i) +INLINE void ANDI(sh4_state *sh4, UINT32 i) { sh4->r[0] &= i; } @@ -303,7 +302,7 @@ INLINE void ANDI(SH4 *sh4, UINT32 i) * 1100 1101 iiii iiii 1 - * AND.B #imm,@(R0,GBR) */ -INLINE void ANDM(SH4 *sh4, UINT32 i) +INLINE void ANDM(sh4_state *sh4, UINT32 i) { UINT32 temp; @@ -317,7 +316,7 @@ INLINE void ANDM(SH4 *sh4, UINT32 i) * 1000 1011 dddd dddd 3/1 - * BF disp8 */ -INLINE void BF(SH4 *sh4, UINT32 d) +INLINE void BF(sh4_state *sh4, UINT32 d) { if ((sh4->sr & T) == 0) { @@ -331,7 +330,7 @@ INLINE void BF(SH4 *sh4, UINT32 d) * 1000 1111 dddd dddd 3/1 - * BFS disp8 */ -INLINE void BFS(SH4 *sh4, UINT32 d) +INLINE void BFS(sh4_state *sh4, UINT32 d) { if ((sh4->sr & T) == 0) { @@ -346,7 +345,7 @@ INLINE void BFS(SH4 *sh4, UINT32 d) * 1010 dddd dddd dddd 2 - * BRA disp12 */ -INLINE void BRA(SH4 *sh4, UINT32 d) +INLINE void BRA(sh4_state *sh4, UINT32 d) { INT32 disp = ((INT32)d << 20) >> 20; @@ -370,7 +369,7 @@ INLINE void BRA(SH4 *sh4, UINT32 d) * 0000 mmmm 0010 0011 2 - * BRAF Rm */ -INLINE void BRAF(SH4 *sh4, UINT32 m) +INLINE void BRAF(sh4_state *sh4, UINT32 m) { sh4->delay = sh4->pc; sh4->pc += sh4->r[m] + 2; @@ -381,7 +380,7 @@ INLINE void BRAF(SH4 *sh4, UINT32 m) * 1011 dddd dddd dddd 2 - * BSR disp12 */ -INLINE void BSR(SH4 *sh4, UINT32 d) +INLINE void BSR(sh4_state *sh4, UINT32 d) { INT32 disp = ((INT32)d << 20) >> 20; @@ -395,7 +394,7 @@ INLINE void BSR(SH4 *sh4, UINT32 d) * 0000 mmmm 0000 0011 2 - * BSRF Rm */ -INLINE void BSRF(SH4 *sh4, UINT32 m) +INLINE void BSRF(sh4_state *sh4, UINT32 m) { sh4->pr = sh4->pc + 2; sh4->delay = sh4->pc; @@ -407,7 +406,7 @@ INLINE void BSRF(SH4 *sh4, UINT32 m) * 1000 1001 dddd dddd 3/1 - * BT disp8 */ -INLINE void BT(SH4 *sh4, UINT32 d) +INLINE void BT(sh4_state *sh4, UINT32 d) { if ((sh4->sr & T) != 0) { @@ -421,7 +420,7 @@ INLINE void BT(SH4 *sh4, UINT32 d) * 1000 1101 dddd dddd 2/1 - * BTS disp8 */ -INLINE void BTS(SH4 *sh4, UINT32 d) +INLINE void BTS(sh4_state *sh4, UINT32 d) { if ((sh4->sr & T) != 0) { @@ -436,7 +435,7 @@ INLINE void BTS(SH4 *sh4, UINT32 d) * 0000 0000 0010 1000 1 - * CLRMAC */ -INLINE void CLRMAC(SH4 *sh4) +INLINE void CLRMAC(sh4_state *sh4) { sh4->mach = 0; sh4->macl = 0; @@ -446,7 +445,7 @@ INLINE void CLRMAC(SH4 *sh4) * 0000 0000 0000 1000 1 - * CLRT */ -INLINE void CLRT(SH4 *sh4) +INLINE void CLRT(sh4_state *sh4) { sh4->sr &= ~T; } @@ -455,7 +454,7 @@ INLINE void CLRT(SH4 *sh4) * 0011 nnnn mmmm 0000 1 comparison result * CMP_EQ Rm,Rn */ -INLINE void CMPEQ(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void CMPEQ(sh4_state *sh4, UINT32 m, UINT32 n) { if (sh4->r[n] == sh4->r[m]) sh4->sr |= T; @@ -467,7 +466,7 @@ INLINE void CMPEQ(SH4 *sh4, UINT32 m, UINT32 n) * 0011 nnnn mmmm 0011 1 comparison result * CMP_GE Rm,Rn */ -INLINE void CMPGE(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void CMPGE(sh4_state *sh4, UINT32 m, UINT32 n) { if ((INT32) sh4->r[n] >= (INT32) sh4->r[m]) sh4->sr |= T; @@ -479,7 +478,7 @@ INLINE void CMPGE(SH4 *sh4, UINT32 m, UINT32 n) * 0011 nnnn mmmm 0111 1 comparison result * CMP_GT Rm,Rn */ -INLINE void CMPGT(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void CMPGT(sh4_state *sh4, UINT32 m, UINT32 n) { if ((INT32) sh4->r[n] > (INT32) sh4->r[m]) sh4->sr |= T; @@ -491,7 +490,7 @@ INLINE void CMPGT(SH4 *sh4, UINT32 m, UINT32 n) * 0011 nnnn mmmm 0110 1 comparison result * CMP_HI Rm,Rn */ -INLINE void CMPHI(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void CMPHI(sh4_state *sh4, UINT32 m, UINT32 n) { if ((UINT32) sh4->r[n] > (UINT32) sh4->r[m]) sh4->sr |= T; @@ -503,7 +502,7 @@ INLINE void CMPHI(SH4 *sh4, UINT32 m, UINT32 n) * 0011 nnnn mmmm 0010 1 comparison result * CMP_HS Rm,Rn */ -INLINE void CMPHS(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void CMPHS(sh4_state *sh4, UINT32 m, UINT32 n) { if ((UINT32) sh4->r[n] >= (UINT32) sh4->r[m]) sh4->sr |= T; @@ -516,7 +515,7 @@ INLINE void CMPHS(SH4 *sh4, UINT32 m, UINT32 n) * 0100 nnnn 0001 0101 1 comparison result * CMP_PL Rn */ -INLINE void CMPPL(SH4 *sh4, UINT32 n) +INLINE void CMPPL(sh4_state *sh4, UINT32 n) { if ((INT32) sh4->r[n] > 0) sh4->sr |= T; @@ -528,7 +527,7 @@ INLINE void CMPPL(SH4 *sh4, UINT32 n) * 0100 nnnn 0001 0001 1 comparison result * CMP_PZ Rn */ -INLINE void CMPPZ(SH4 *sh4, UINT32 n) +INLINE void CMPPZ(sh4_state *sh4, UINT32 n) { if ((INT32) sh4->r[n] >= 0) sh4->sr |= T; @@ -540,7 +539,7 @@ INLINE void CMPPZ(SH4 *sh4, UINT32 n) * 0010 nnnn mmmm 1100 1 comparison result * CMP_STR Rm,Rn */ -INLINE void CMPSTR(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void CMPSTR(sh4_state *sh4, UINT32 m, UINT32 n) { UINT32 temp; INT32 HH, HL, LH, LL; @@ -560,7 +559,7 @@ INLINE void CMPSTR(SH4 *sh4, UINT32 m, UINT32 n) * 1000 1000 iiii iiii 1 comparison result * CMP/EQ #imm,R0 */ -INLINE void CMPIM(SH4 *sh4, UINT32 i) +INLINE void CMPIM(sh4_state *sh4, UINT32 i) { UINT32 imm = (UINT32)(INT32)(INT16)(INT8)i; @@ -574,7 +573,7 @@ INLINE void CMPIM(SH4 *sh4, UINT32 i) * 0010 nnnn mmmm 0111 1 calculation result * DIV0S Rm,Rn */ -INLINE void DIV0S(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void DIV0S(sh4_state *sh4, UINT32 m, UINT32 n) { if ((sh4->r[n] & 0x80000000) == 0) sh4->sr &= ~Q; @@ -594,7 +593,7 @@ INLINE void DIV0S(SH4 *sh4, UINT32 m, UINT32 n) * 0000 0000 0001 1001 1 0 * DIV0U */ -INLINE void DIV0U(SH4 *sh4) +INLINE void DIV0U(sh4_state *sh4) { sh4->sr &= ~(M | Q | T); } @@ -603,7 +602,7 @@ INLINE void DIV0U(SH4 *sh4) * 0011 nnnn mmmm 0100 1 calculation result * DIV1 Rm,Rn */ -INLINE void DIV1(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void DIV1(sh4_state *sh4, UINT32 m, UINT32 n) { UINT32 tmp0; UINT32 old_q; @@ -695,7 +694,7 @@ INLINE void DIV1(SH4 *sh4, UINT32 m, UINT32 n) } /* DMULS.L Rm,Rn */ -INLINE void DMULS(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void DMULS(sh4_state *sh4, UINT32 m, UINT32 n) { UINT32 RnL, RnH, RmL, RmH, Res0, Res1, Res2; UINT32 temp0, temp1, temp2, temp3; @@ -744,7 +743,7 @@ INLINE void DMULS(SH4 *sh4, UINT32 m, UINT32 n) } /* DMULU.L Rm,Rn */ -INLINE void DMULU(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void DMULU(sh4_state *sh4, UINT32 m, UINT32 n) { UINT32 RnL, RnH, RmL, RmH, Res0, Res1, Res2; UINT32 temp0, temp1, temp2, temp3; @@ -772,7 +771,7 @@ INLINE void DMULU(SH4 *sh4, UINT32 m, UINT32 n) } /* DT Rn */ -INLINE void DT(SH4 *sh4, UINT32 n) +INLINE void DT(sh4_state *sh4, UINT32 n) { sh4->r[n]--; if (sh4->r[n] == 0) @@ -798,38 +797,38 @@ INLINE void DT(SH4 *sh4, UINT32 n) } /* EXTS.B Rm,Rn */ -INLINE void EXTSB(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void EXTSB(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] = ((INT32)sh4->r[m] << 24) >> 24; } /* EXTS.W Rm,Rn */ -INLINE void EXTSW(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void EXTSW(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] = ((INT32)sh4->r[m] << 16) >> 16; } /* EXTU.B Rm,Rn */ -INLINE void EXTUB(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void EXTUB(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] = sh4->r[m] & 0x000000ff; } /* EXTU.W Rm,Rn */ -INLINE void EXTUW(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void EXTUW(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] = sh4->r[m] & 0x0000ffff; } /* JMP @Rm */ -INLINE void JMP(SH4 *sh4, UINT32 m) +INLINE void JMP(sh4_state *sh4, UINT32 m) { sh4->delay = sh4->pc; sh4->pc = sh4->ea = sh4->r[m]; } /* JSR @Rm */ -INLINE void JSR(SH4 *sh4, UINT32 m) +INLINE void JSR(sh4_state *sh4, UINT32 m) { sh4->delay = sh4->pc; sh4->pr = sh4->pc + 2; @@ -839,7 +838,7 @@ INLINE void JSR(SH4 *sh4, UINT32 m) /* LDC Rm,SR */ -INLINE void LDCSR(SH4 *sh4, UINT32 m) +INLINE void LDCSR(sh4_state *sh4, UINT32 m) { UINT32 reg; @@ -853,19 +852,19 @@ UINT32 reg; } /* LDC Rm,GBR */ -INLINE void LDCGBR(SH4 *sh4, UINT32 m) +INLINE void LDCGBR(sh4_state *sh4, UINT32 m) { sh4->gbr = sh4->r[m]; } /* LDC Rm,VBR */ -INLINE void LDCVBR(SH4 *sh4, UINT32 m) +INLINE void LDCVBR(sh4_state *sh4, UINT32 m) { sh4->vbr = sh4->r[m]; } /* LDC.L @Rm+,SR */ -INLINE void LDCMSR(SH4 *sh4, UINT32 m) +INLINE void LDCMSR(sh4_state *sh4, UINT32 m) { UINT32 old; @@ -882,7 +881,7 @@ UINT32 old; } /* LDC.L @Rm+,GBR */ -INLINE void LDCMGBR(SH4 *sh4, UINT32 m) +INLINE void LDCMGBR(sh4_state *sh4, UINT32 m) { sh4->ea = sh4->r[m]; sh4->gbr = RL(sh4, sh4->ea ); @@ -891,7 +890,7 @@ INLINE void LDCMGBR(SH4 *sh4, UINT32 m) } /* LDC.L @Rm+,VBR */ -INLINE void LDCMVBR(SH4 *sh4, UINT32 m) +INLINE void LDCMVBR(sh4_state *sh4, UINT32 m) { sh4->ea = sh4->r[m]; sh4->vbr = RL(sh4, sh4->ea ); @@ -900,25 +899,25 @@ INLINE void LDCMVBR(SH4 *sh4, UINT32 m) } /* LDS Rm,MACH */ -INLINE void LDSMACH(SH4 *sh4, UINT32 m) +INLINE void LDSMACH(sh4_state *sh4, UINT32 m) { sh4->mach = sh4->r[m]; } /* LDS Rm,MACL */ -INLINE void LDSMACL(SH4 *sh4, UINT32 m) +INLINE void LDSMACL(sh4_state *sh4, UINT32 m) { sh4->macl = sh4->r[m]; } /* LDS Rm,PR */ -INLINE void LDSPR(SH4 *sh4, UINT32 m) +INLINE void LDSPR(sh4_state *sh4, UINT32 m) { sh4->pr = sh4->r[m]; } /* LDS.L @Rm+,MACH */ -INLINE void LDSMMACH(SH4 *sh4, UINT32 m) +INLINE void LDSMMACH(sh4_state *sh4, UINT32 m) { sh4->ea = sh4->r[m]; sh4->mach = RL(sh4, sh4->ea ); @@ -926,7 +925,7 @@ INLINE void LDSMMACH(SH4 *sh4, UINT32 m) } /* LDS.L @Rm+,MACL */ -INLINE void LDSMMACL(SH4 *sh4, UINT32 m) +INLINE void LDSMMACL(sh4_state *sh4, UINT32 m) { sh4->ea = sh4->r[m]; sh4->macl = RL(sh4, sh4->ea ); @@ -934,7 +933,7 @@ INLINE void LDSMMACL(SH4 *sh4, UINT32 m) } /* LDS.L @Rm+,PR */ -INLINE void LDSMPR(SH4 *sh4, UINT32 m) +INLINE void LDSMPR(sh4_state *sh4, UINT32 m) { sh4->ea = sh4->r[m]; sh4->pr = RL(sh4, sh4->ea ); @@ -942,7 +941,7 @@ INLINE void LDSMPR(SH4 *sh4, UINT32 m) } /* MAC.L @Rm+,@Rn+ */ -INLINE void MAC_L(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MAC_L(sh4_state *sh4, UINT32 m, UINT32 n) { UINT32 RnL, RnH, RmL, RmH, Res0, Res1, Res2; UINT32 temp0, temp1, temp2, temp3; @@ -1019,7 +1018,7 @@ INLINE void MAC_L(SH4 *sh4, UINT32 m, UINT32 n) } /* MAC.W @Rm+,@Rn+ */ -INLINE void MAC_W(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MAC_W(sh4_state *sh4, UINT32 m, UINT32 n) { INT32 tempm, tempn, dest, src, ans; UINT32 templ; @@ -1071,55 +1070,55 @@ INLINE void MAC_W(SH4 *sh4, UINT32 m, UINT32 n) } /* MOV Rm,Rn */ -INLINE void MOV(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOV(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] = sh4->r[m]; } /* MOV.B Rm,@Rn */ -INLINE void MOVBS(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVBS(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->ea = sh4->r[n]; WB(sh4, sh4->ea, sh4->r[m] & 0x000000ff); } /* MOV.W Rm,@Rn */ -INLINE void MOVWS(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVWS(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->ea = sh4->r[n]; WW(sh4, sh4->ea, sh4->r[m] & 0x0000ffff); } /* MOV.L Rm,@Rn */ -INLINE void MOVLS(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVLS(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->ea = sh4->r[n]; WL(sh4, sh4->ea, sh4->r[m] ); } /* MOV.B @Rm,Rn */ -INLINE void MOVBL(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVBL(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->ea = sh4->r[m]; sh4->r[n] = (UINT32)(INT32)(INT16)(INT8) RB(sh4, sh4->ea ); } /* MOV.W @Rm,Rn */ -INLINE void MOVWL(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVWL(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->ea = sh4->r[m]; sh4->r[n] = (UINT32)(INT32)(INT16) RW(sh4, sh4->ea ); } /* MOV.L @Rm,Rn */ -INLINE void MOVLL(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVLL(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->ea = sh4->r[m]; sh4->r[n] = RL(sh4, sh4->ea ); } /* MOV.B Rm,@-Rn */ -INLINE void MOVBM(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVBM(sh4_state *sh4, UINT32 m, UINT32 n) { /* SMG : bug fix, was reading sh4->r[n] */ UINT32 data = sh4->r[m] & 0x000000ff; @@ -1129,7 +1128,7 @@ INLINE void MOVBM(SH4 *sh4, UINT32 m, UINT32 n) } /* MOV.W Rm,@-Rn */ -INLINE void MOVWM(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVWM(sh4_state *sh4, UINT32 m, UINT32 n) { UINT32 data = sh4->r[m] & 0x0000ffff; @@ -1138,7 +1137,7 @@ INLINE void MOVWM(SH4 *sh4, UINT32 m, UINT32 n) } /* MOV.L Rm,@-Rn */ -INLINE void MOVLM(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVLM(sh4_state *sh4, UINT32 m, UINT32 n) { UINT32 data = sh4->r[m]; @@ -1147,7 +1146,7 @@ INLINE void MOVLM(SH4 *sh4, UINT32 m, UINT32 n) } /* MOV.B @Rm+,Rn */ -INLINE void MOVBP(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVBP(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] = (UINT32)(INT32)(INT16)(INT8) RB(sh4, sh4->r[m] ); if (n != m) @@ -1155,7 +1154,7 @@ INLINE void MOVBP(SH4 *sh4, UINT32 m, UINT32 n) } /* MOV.W @Rm+,Rn */ -INLINE void MOVWP(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVWP(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] = (UINT32)(INT32)(INT16) RW(sh4, sh4->r[m] ); if (n != m) @@ -1163,7 +1162,7 @@ INLINE void MOVWP(SH4 *sh4, UINT32 m, UINT32 n) } /* MOV.L @Rm+,Rn */ -INLINE void MOVLP(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVLP(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] = RL(sh4, sh4->r[m] ); if (n != m) @@ -1171,55 +1170,55 @@ INLINE void MOVLP(SH4 *sh4, UINT32 m, UINT32 n) } /* MOV.B Rm,@(R0,Rn) */ -INLINE void MOVBS0(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVBS0(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->ea = sh4->r[n] + sh4->r[0]; WB(sh4, sh4->ea, sh4->r[m] & 0x000000ff ); } /* MOV.W Rm,@(R0,Rn) */ -INLINE void MOVWS0(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVWS0(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->ea = sh4->r[n] + sh4->r[0]; WW(sh4, sh4->ea, sh4->r[m] & 0x0000ffff ); } /* MOV.L Rm,@(R0,Rn) */ -INLINE void MOVLS0(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVLS0(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->ea = sh4->r[n] + sh4->r[0]; WL(sh4, sh4->ea, sh4->r[m] ); } /* MOV.B @(R0,Rm),Rn */ -INLINE void MOVBL0(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVBL0(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->ea = sh4->r[m] + sh4->r[0]; sh4->r[n] = (UINT32)(INT32)(INT16)(INT8) RB(sh4, sh4->ea ); } /* MOV.W @(R0,Rm),Rn */ -INLINE void MOVWL0(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVWL0(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->ea = sh4->r[m] + sh4->r[0]; sh4->r[n] = (UINT32)(INT32)(INT16) RW(sh4, sh4->ea ); } /* MOV.L @(R0,Rm),Rn */ -INLINE void MOVLL0(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MOVLL0(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->ea = sh4->r[m] + sh4->r[0]; sh4->r[n] = RL(sh4, sh4->ea ); } /* MOV #imm,Rn */ -INLINE void MOVI(SH4 *sh4, UINT32 i, UINT32 n) +INLINE void MOVI(sh4_state *sh4, UINT32 i, UINT32 n) { sh4->r[n] = (UINT32)(INT32)(INT16)(INT8) i; } /* MOV.W @(disp8,PC),Rn */ -INLINE void MOVWI(SH4 *sh4, UINT32 d, UINT32 n) +INLINE void MOVWI(sh4_state *sh4, UINT32 d, UINT32 n) { UINT32 disp = d & 0xff; sh4->ea = sh4->pc + disp * 2 + 2; @@ -1227,7 +1226,7 @@ INLINE void MOVWI(SH4 *sh4, UINT32 d, UINT32 n) } /* MOV.L @(disp8,PC),Rn */ -INLINE void MOVLI(SH4 *sh4, UINT32 d, UINT32 n) +INLINE void MOVLI(sh4_state *sh4, UINT32 d, UINT32 n) { UINT32 disp = d & 0xff; sh4->ea = ((sh4->pc + 2) & ~3) + disp * 4; @@ -1235,7 +1234,7 @@ INLINE void MOVLI(SH4 *sh4, UINT32 d, UINT32 n) } /* MOV.B @(disp8,GBR),R0 */ -INLINE void MOVBLG(SH4 *sh4, UINT32 d) +INLINE void MOVBLG(sh4_state *sh4, UINT32 d) { UINT32 disp = d & 0xff; sh4->ea = sh4->gbr + disp; @@ -1243,7 +1242,7 @@ INLINE void MOVBLG(SH4 *sh4, UINT32 d) } /* MOV.W @(disp8,GBR),R0 */ -INLINE void MOVWLG(SH4 *sh4, UINT32 d) +INLINE void MOVWLG(sh4_state *sh4, UINT32 d) { UINT32 disp = d & 0xff; sh4->ea = sh4->gbr + disp * 2; @@ -1251,7 +1250,7 @@ INLINE void MOVWLG(SH4 *sh4, UINT32 d) } /* MOV.L @(disp8,GBR),R0 */ -INLINE void MOVLLG(SH4 *sh4, UINT32 d) +INLINE void MOVLLG(sh4_state *sh4, UINT32 d) { UINT32 disp = d & 0xff; sh4->ea = sh4->gbr + disp * 4; @@ -1259,7 +1258,7 @@ INLINE void MOVLLG(SH4 *sh4, UINT32 d) } /* MOV.B R0,@(disp8,GBR) */ -INLINE void MOVBSG(SH4 *sh4, UINT32 d) +INLINE void MOVBSG(sh4_state *sh4, UINT32 d) { UINT32 disp = d & 0xff; sh4->ea = sh4->gbr + disp; @@ -1267,7 +1266,7 @@ INLINE void MOVBSG(SH4 *sh4, UINT32 d) } /* MOV.W R0,@(disp8,GBR) */ -INLINE void MOVWSG(SH4 *sh4, UINT32 d) +INLINE void MOVWSG(sh4_state *sh4, UINT32 d) { UINT32 disp = d & 0xff; sh4->ea = sh4->gbr + disp * 2; @@ -1275,7 +1274,7 @@ INLINE void MOVWSG(SH4 *sh4, UINT32 d) } /* MOV.L R0,@(disp8,GBR) */ -INLINE void MOVLSG(SH4 *sh4, UINT32 d) +INLINE void MOVLSG(sh4_state *sh4, UINT32 d) { UINT32 disp = d & 0xff; sh4->ea = sh4->gbr + disp * 4; @@ -1283,7 +1282,7 @@ INLINE void MOVLSG(SH4 *sh4, UINT32 d) } /* MOV.B R0,@(disp4,Rn) */ -INLINE void MOVBS4(SH4 *sh4, UINT32 d, UINT32 n) +INLINE void MOVBS4(sh4_state *sh4, UINT32 d, UINT32 n) { UINT32 disp = d & 0x0f; sh4->ea = sh4->r[n] + disp; @@ -1291,7 +1290,7 @@ INLINE void MOVBS4(SH4 *sh4, UINT32 d, UINT32 n) } /* MOV.W R0,@(disp4,Rn) */ -INLINE void MOVWS4(SH4 *sh4, UINT32 d, UINT32 n) +INLINE void MOVWS4(sh4_state *sh4, UINT32 d, UINT32 n) { UINT32 disp = d & 0x0f; sh4->ea = sh4->r[n] + disp * 2; @@ -1299,7 +1298,7 @@ INLINE void MOVWS4(SH4 *sh4, UINT32 d, UINT32 n) } /* MOV.L Rm,@(disp4,Rn) */ -INLINE void MOVLS4(SH4 *sh4, UINT32 m, UINT32 d, UINT32 n) +INLINE void MOVLS4(sh4_state *sh4, UINT32 m, UINT32 d, UINT32 n) { UINT32 disp = d & 0x0f; sh4->ea = sh4->r[n] + disp * 4; @@ -1307,7 +1306,7 @@ INLINE void MOVLS4(SH4 *sh4, UINT32 m, UINT32 d, UINT32 n) } /* MOV.B @(disp4,Rm),R0 */ -INLINE void MOVBL4(SH4 *sh4, UINT32 m, UINT32 d) +INLINE void MOVBL4(sh4_state *sh4, UINT32 m, UINT32 d) { UINT32 disp = d & 0x0f; sh4->ea = sh4->r[m] + disp; @@ -1315,7 +1314,7 @@ INLINE void MOVBL4(SH4 *sh4, UINT32 m, UINT32 d) } /* MOV.W @(disp4,Rm),R0 */ -INLINE void MOVWL4(SH4 *sh4, UINT32 m, UINT32 d) +INLINE void MOVWL4(sh4_state *sh4, UINT32 m, UINT32 d) { UINT32 disp = d & 0x0f; sh4->ea = sh4->r[m] + disp * 2; @@ -1323,7 +1322,7 @@ INLINE void MOVWL4(SH4 *sh4, UINT32 m, UINT32 d) } /* MOV.L @(disp4,Rm),Rn */ -INLINE void MOVLL4(SH4 *sh4, UINT32 m, UINT32 d, UINT32 n) +INLINE void MOVLL4(sh4_state *sh4, UINT32 m, UINT32 d, UINT32 n) { UINT32 disp = d & 0x0f; sh4->ea = sh4->r[m] + disp * 4; @@ -1331,7 +1330,7 @@ INLINE void MOVLL4(SH4 *sh4, UINT32 m, UINT32 d, UINT32 n) } /* MOVA @(disp8,PC),R0 */ -INLINE void MOVA(SH4 *sh4, UINT32 d) +INLINE void MOVA(sh4_state *sh4, UINT32 d) { UINT32 disp = d & 0xff; sh4->ea = ((sh4->pc + 2) & ~3) + disp * 4; @@ -1339,38 +1338,38 @@ INLINE void MOVA(SH4 *sh4, UINT32 d) } /* MOVT Rn */ -INLINE void MOVT(SH4 *sh4, UINT32 n) +INLINE void MOVT(sh4_state *sh4, UINT32 n) { sh4->r[n] = sh4->sr & T; } /* MUL.L Rm,Rn */ -INLINE void MULL(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MULL(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->macl = sh4->r[n] * sh4->r[m]; sh4->sh4_icount--; } /* MULS Rm,Rn */ -INLINE void MULS(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MULS(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->macl = (INT16) sh4->r[n] * (INT16) sh4->r[m]; } /* MULU Rm,Rn */ -INLINE void MULU(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void MULU(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->macl = (UINT16) sh4->r[n] * (UINT16) sh4->r[m]; } /* NEG Rm,Rn */ -INLINE void NEG(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void NEG(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] = 0 - sh4->r[m]; } /* NEGC Rm,Rn */ -INLINE void NEGC(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void NEGC(sh4_state *sh4, UINT32 m, UINT32 n) { UINT32 temp; @@ -1383,31 +1382,31 @@ INLINE void NEGC(SH4 *sh4, UINT32 m, UINT32 n) } /* NOP */ -INLINE void NOP(SH4 *sh4) +INLINE void NOP(sh4_state *sh4) { } /* NOT Rm,Rn */ -INLINE void NOT(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void NOT(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] = ~sh4->r[m]; } /* OR Rm,Rn */ -INLINE void OR(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void OR(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] |= sh4->r[m]; } /* OR #imm,R0 */ -INLINE void ORI(SH4 *sh4, UINT32 i) +INLINE void ORI(sh4_state *sh4, UINT32 i) { sh4->r[0] |= i; sh4->sh4_icount -= 2; } /* OR.B #imm,@(R0,GBR) */ -INLINE void ORM(SH4 *sh4, UINT32 i) +INLINE void ORM(sh4_state *sh4, UINT32 i) { UINT32 temp; @@ -1418,7 +1417,7 @@ INLINE void ORM(SH4 *sh4, UINT32 i) } /* ROTCL Rn */ -INLINE void ROTCL(SH4 *sh4, UINT32 n) +INLINE void ROTCL(sh4_state *sh4, UINT32 n) { UINT32 temp; @@ -1428,7 +1427,7 @@ INLINE void ROTCL(SH4 *sh4, UINT32 n) } /* ROTCR Rn */ -INLINE void ROTCR(SH4 *sh4, UINT32 n) +INLINE void ROTCR(sh4_state *sh4, UINT32 n) { UINT32 temp; temp = (sh4->sr & T) << 31; @@ -1440,21 +1439,21 @@ INLINE void ROTCR(SH4 *sh4, UINT32 n) } /* ROTL Rn */ -INLINE void ROTL(SH4 *sh4, UINT32 n) +INLINE void ROTL(sh4_state *sh4, UINT32 n) { sh4->sr = (sh4->sr & ~T) | ((sh4->r[n] >> 31) & T); sh4->r[n] = (sh4->r[n] << 1) | (sh4->r[n] >> 31); } /* ROTR Rn */ -INLINE void ROTR(SH4 *sh4, UINT32 n) +INLINE void ROTR(sh4_state *sh4, UINT32 n) { sh4->sr = (sh4->sr & ~T) | (sh4->r[n] & T); sh4->r[n] = (sh4->r[n] >> 1) | (sh4->r[n] << 31); } /* RTE */ -INLINE void RTE(SH4 *sh4) +INLINE void RTE(sh4_state *sh4) { sh4->delay = sh4->pc; sh4->pc = sh4->ea = sh4->spc; @@ -1468,7 +1467,7 @@ INLINE void RTE(SH4 *sh4) } /* RTS */ -INLINE void RTS(SH4 *sh4) +INLINE void RTS(sh4_state *sh4) { sh4->delay = sh4->pc; sh4->pc = sh4->ea = sh4->pr; @@ -1476,77 +1475,77 @@ INLINE void RTS(SH4 *sh4) } /* SETT */ -INLINE void SETT(SH4 *sh4) +INLINE void SETT(sh4_state *sh4) { sh4->sr |= T; } /* SHAL Rn (same as SHLL) */ -INLINE void SHAL(SH4 *sh4, UINT32 n) +INLINE void SHAL(sh4_state *sh4, UINT32 n) { sh4->sr = (sh4->sr & ~T) | ((sh4->r[n] >> 31) & T); sh4->r[n] <<= 1; } /* SHAR Rn */ -INLINE void SHAR(SH4 *sh4, UINT32 n) +INLINE void SHAR(sh4_state *sh4, UINT32 n) { sh4->sr = (sh4->sr & ~T) | (sh4->r[n] & T); sh4->r[n] = (UINT32)((INT32)sh4->r[n] >> 1); } /* SHLL Rn (same as SHAL) */ -INLINE void SHLL(SH4 *sh4, UINT32 n) +INLINE void SHLL(sh4_state *sh4, UINT32 n) { sh4->sr = (sh4->sr & ~T) | ((sh4->r[n] >> 31) & T); sh4->r[n] <<= 1; } /* SHLL2 Rn */ -INLINE void SHLL2(SH4 *sh4, UINT32 n) +INLINE void SHLL2(sh4_state *sh4, UINT32 n) { sh4->r[n] <<= 2; } /* SHLL8 Rn */ -INLINE void SHLL8(SH4 *sh4, UINT32 n) +INLINE void SHLL8(sh4_state *sh4, UINT32 n) { sh4->r[n] <<= 8; } /* SHLL16 Rn */ -INLINE void SHLL16(SH4 *sh4, UINT32 n) +INLINE void SHLL16(sh4_state *sh4, UINT32 n) { sh4->r[n] <<= 16; } /* SHLR Rn */ -INLINE void SHLR(SH4 *sh4, UINT32 n) +INLINE void SHLR(sh4_state *sh4, UINT32 n) { sh4->sr = (sh4->sr & ~T) | (sh4->r[n] & T); sh4->r[n] >>= 1; } /* SHLR2 Rn */ -INLINE void SHLR2(SH4 *sh4, UINT32 n) +INLINE void SHLR2(sh4_state *sh4, UINT32 n) { sh4->r[n] >>= 2; } /* SHLR8 Rn */ -INLINE void SHLR8(SH4 *sh4, UINT32 n) +INLINE void SHLR8(sh4_state *sh4, UINT32 n) { sh4->r[n] >>= 8; } /* SHLR16 Rn */ -INLINE void SHLR16(SH4 *sh4, UINT32 n) +INLINE void SHLR16(sh4_state *sh4, UINT32 n) { sh4->r[n] >>= 16; } /* SLEEP */ -INLINE void SLEEP(SH4 *sh4) +INLINE void SLEEP(sh4_state *sh4) { /* 0 = normal mode */ /* 1 = enters into power-down mode */ @@ -1562,25 +1561,25 @@ INLINE void SLEEP(SH4 *sh4) } /* STC SR,Rn */ -INLINE void STCSR(SH4 *sh4, UINT32 n) +INLINE void STCSR(sh4_state *sh4, UINT32 n) { sh4->r[n] = sh4->sr; } /* STC GBR,Rn */ -INLINE void STCGBR(SH4 *sh4, UINT32 n) +INLINE void STCGBR(sh4_state *sh4, UINT32 n) { sh4->r[n] = sh4->gbr; } /* STC VBR,Rn */ -INLINE void STCVBR(SH4 *sh4, UINT32 n) +INLINE void STCVBR(sh4_state *sh4, UINT32 n) { sh4->r[n] = sh4->vbr; } /* STC.L SR,@-Rn */ -INLINE void STCMSR(SH4 *sh4, UINT32 n) +INLINE void STCMSR(sh4_state *sh4, UINT32 n) { sh4->r[n] -= 4; sh4->ea = sh4->r[n]; @@ -1589,7 +1588,7 @@ INLINE void STCMSR(SH4 *sh4, UINT32 n) } /* STC.L GBR,@-Rn */ -INLINE void STCMGBR(SH4 *sh4, UINT32 n) +INLINE void STCMGBR(sh4_state *sh4, UINT32 n) { sh4->r[n] -= 4; sh4->ea = sh4->r[n]; @@ -1598,7 +1597,7 @@ INLINE void STCMGBR(SH4 *sh4, UINT32 n) } /* STC.L VBR,@-Rn */ -INLINE void STCMVBR(SH4 *sh4, UINT32 n) +INLINE void STCMVBR(sh4_state *sh4, UINT32 n) { sh4->r[n] -= 4; sh4->ea = sh4->r[n]; @@ -1607,25 +1606,25 @@ INLINE void STCMVBR(SH4 *sh4, UINT32 n) } /* STS MACH,Rn */ -INLINE void STSMACH(SH4 *sh4, UINT32 n) +INLINE void STSMACH(sh4_state *sh4, UINT32 n) { sh4->r[n] = sh4->mach; } /* STS MACL,Rn */ -INLINE void STSMACL(SH4 *sh4, UINT32 n) +INLINE void STSMACL(sh4_state *sh4, UINT32 n) { sh4->r[n] = sh4->macl; } /* STS PR,Rn */ -INLINE void STSPR(SH4 *sh4, UINT32 n) +INLINE void STSPR(sh4_state *sh4, UINT32 n) { sh4->r[n] = sh4->pr; } /* STS.L MACH,@-Rn */ -INLINE void STSMMACH(SH4 *sh4, UINT32 n) +INLINE void STSMMACH(sh4_state *sh4, UINT32 n) { sh4->r[n] -= 4; sh4->ea = sh4->r[n]; @@ -1633,7 +1632,7 @@ INLINE void STSMMACH(SH4 *sh4, UINT32 n) } /* STS.L MACL,@-Rn */ -INLINE void STSMMACL(SH4 *sh4, UINT32 n) +INLINE void STSMMACL(sh4_state *sh4, UINT32 n) { sh4->r[n] -= 4; sh4->ea = sh4->r[n]; @@ -1641,7 +1640,7 @@ INLINE void STSMMACL(SH4 *sh4, UINT32 n) } /* STS.L PR,@-Rn */ -INLINE void STSMPR(SH4 *sh4, UINT32 n) +INLINE void STSMPR(sh4_state *sh4, UINT32 n) { sh4->r[n] -= 4; sh4->ea = sh4->r[n]; @@ -1649,13 +1648,13 @@ INLINE void STSMPR(SH4 *sh4, UINT32 n) } /* SUB Rm,Rn */ -INLINE void SUB(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void SUB(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] -= sh4->r[m]; } /* SUBC Rm,Rn */ -INLINE void SUBC(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void SUBC(sh4_state *sh4, UINT32 m, UINT32 n) { UINT32 tmp0, tmp1; @@ -1671,7 +1670,7 @@ INLINE void SUBC(SH4 *sh4, UINT32 m, UINT32 n) } /* SUBV Rm,Rn */ -INLINE void SUBV(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void SUBV(sh4_state *sh4, UINT32 m, UINT32 n) { INT32 dest, src, ans; @@ -1702,7 +1701,7 @@ INLINE void SUBV(SH4 *sh4, UINT32 m, UINT32 n) } /* SWAP.B Rm,Rn */ -INLINE void SWAPB(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void SWAPB(sh4_state *sh4, UINT32 m, UINT32 n) { UINT32 temp0, temp1; @@ -1713,7 +1712,7 @@ INLINE void SWAPB(SH4 *sh4, UINT32 m, UINT32 n) } /* SWAP.W Rm,Rn */ -INLINE void SWAPW(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void SWAPW(sh4_state *sh4, UINT32 m, UINT32 n) { UINT32 temp; @@ -1722,7 +1721,7 @@ INLINE void SWAPW(SH4 *sh4, UINT32 m, UINT32 n) } /* TAS.B @Rn */ -INLINE void TAS(SH4 *sh4, UINT32 n) +INLINE void TAS(sh4_state *sh4, UINT32 n) { UINT32 temp; sh4->ea = sh4->r[n]; @@ -1739,7 +1738,7 @@ INLINE void TAS(SH4 *sh4, UINT32 n) } /* TRAPA #imm */ -INLINE void TRAPA(SH4 *sh4, UINT32 i) +INLINE void TRAPA(sh4_state *sh4, UINT32 i) { UINT32 imm = i & 0xff; @@ -1764,7 +1763,7 @@ INLINE void TRAPA(SH4 *sh4, UINT32 i) } /* TST Rm,Rn */ -INLINE void TST(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void TST(sh4_state *sh4, UINT32 m, UINT32 n) { if ((sh4->r[n] & sh4->r[m]) == 0) sh4->sr |= T; @@ -1773,7 +1772,7 @@ INLINE void TST(SH4 *sh4, UINT32 m, UINT32 n) } /* TST #imm,R0 */ -INLINE void TSTI(SH4 *sh4, UINT32 i) +INLINE void TSTI(sh4_state *sh4, UINT32 i) { UINT32 imm = i & 0xff; @@ -1784,7 +1783,7 @@ INLINE void TSTI(SH4 *sh4, UINT32 i) } /* TST.B #imm,@(R0,GBR) */ -INLINE void TSTM(SH4 *sh4, UINT32 i) +INLINE void TSTM(sh4_state *sh4, UINT32 i) { UINT32 imm = i & 0xff; @@ -1797,20 +1796,20 @@ INLINE void TSTM(SH4 *sh4, UINT32 i) } /* XOR Rm,Rn */ -INLINE void XOR(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void XOR(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] ^= sh4->r[m]; } /* XOR #imm,R0 */ -INLINE void XORI(SH4 *sh4, UINT32 i) +INLINE void XORI(sh4_state *sh4, UINT32 i) { UINT32 imm = i & 0xff; sh4->r[0] ^= imm; } /* XOR.B #imm,@(R0,GBR) */ -INLINE void XORM(SH4 *sh4, UINT32 i) +INLINE void XORM(sh4_state *sh4, UINT32 i) { UINT32 imm = i & 0xff; UINT32 temp; @@ -1823,7 +1822,7 @@ INLINE void XORM(SH4 *sh4, UINT32 i) } /* XTRCT Rm,Rn */ -INLINE void XTRCT(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void XTRCT(sh4_state *sh4, UINT32 m, UINT32 n) { UINT32 temp; @@ -1833,49 +1832,49 @@ INLINE void XTRCT(SH4 *sh4, UINT32 m, UINT32 n) } /* STC SSR,Rn */ -INLINE void STCSSR(SH4 *sh4, UINT32 n) +INLINE void STCSSR(sh4_state *sh4, UINT32 n) { sh4->r[n] = sh4->ssr; } /* STC SPC,Rn */ -INLINE void STCSPC(SH4 *sh4, UINT32 n) +INLINE void STCSPC(sh4_state *sh4, UINT32 n) { sh4->r[n] = sh4->spc; } /* STC SGR,Rn */ -INLINE void STCSGR(SH4 *sh4, UINT32 n) +INLINE void STCSGR(sh4_state *sh4, UINT32 n) { sh4->r[n] = sh4->sgr; } /* STS FPUL,Rn */ -INLINE void STSFPUL(SH4 *sh4, UINT32 n) +INLINE void STSFPUL(sh4_state *sh4, UINT32 n) { sh4->r[n] = sh4->fpul; } /* STS FPSCR,Rn */ -INLINE void STSFPSCR(SH4 *sh4, UINT32 n) +INLINE void STSFPSCR(sh4_state *sh4, UINT32 n) { sh4->r[n] = sh4->fpscr & 0x003FFFFF; } /* STC DBR,Rn */ -INLINE void STCDBR(SH4 *sh4, UINT32 n) +INLINE void STCDBR(sh4_state *sh4, UINT32 n) { sh4->r[n] = sh4->dbr; } /* STCRBANK Rm_BANK,Rn */ -INLINE void STCRBANK(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void STCRBANK(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] = sh4->rbnk[sh4->sr&sRB ? 0 : 1][m & 7]; } /* STCMRBANK Rm_BANK,@-Rn */ -INLINE void STCMRBANK(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void STCMRBANK(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->r[n] -= 4; sh4->ea = sh4->r[n]; @@ -1884,24 +1883,24 @@ INLINE void STCMRBANK(SH4 *sh4, UINT32 m, UINT32 n) } /* MOVCA.L R0,@Rn */ -INLINE void MOVCAL(SH4 *sh4, UINT32 n) +INLINE void MOVCAL(sh4_state *sh4, UINT32 n) { sh4->ea = sh4->r[n]; WL(sh4, sh4->ea, sh4->r[0] ); } -INLINE void CLRS(SH4 *sh4) +INLINE void CLRS(sh4_state *sh4) { sh4->sr &= ~S; } -INLINE void SETS(SH4 *sh4) +INLINE void SETS(sh4_state *sh4) { sh4->sr |= S; } /* STS.L SGR,@-Rn */ -INLINE void STCMSGR(SH4 *sh4, UINT32 n) +INLINE void STCMSGR(sh4_state *sh4, UINT32 n) { sh4->r[n] -= 4; sh4->ea = sh4->r[n]; @@ -1909,7 +1908,7 @@ INLINE void STCMSGR(SH4 *sh4, UINT32 n) } /* STS.L FPUL,@-Rn */ -INLINE void STSMFPUL(SH4 *sh4, UINT32 n) +INLINE void STSMFPUL(sh4_state *sh4, UINT32 n) { sh4->r[n] -= 4; sh4->ea = sh4->r[n]; @@ -1917,7 +1916,7 @@ INLINE void STSMFPUL(SH4 *sh4, UINT32 n) } /* STS.L FPSCR,@-Rn */ -INLINE void STSMFPSCR(SH4 *sh4, UINT32 n) +INLINE void STSMFPSCR(sh4_state *sh4, UINT32 n) { sh4->r[n] -= 4; sh4->ea = sh4->r[n]; @@ -1925,7 +1924,7 @@ INLINE void STSMFPSCR(SH4 *sh4, UINT32 n) } /* STC.L DBR,@-Rn */ -INLINE void STCMDBR(SH4 *sh4, UINT32 n) +INLINE void STCMDBR(sh4_state *sh4, UINT32 n) { sh4->r[n] -= 4; sh4->ea = sh4->r[n]; @@ -1933,7 +1932,7 @@ INLINE void STCMDBR(SH4 *sh4, UINT32 n) } /* STC.L SSR,@-Rn */ -INLINE void STCMSSR(SH4 *sh4, UINT32 n) +INLINE void STCMSSR(sh4_state *sh4, UINT32 n) { sh4->r[n] -= 4; sh4->ea = sh4->r[n]; @@ -1941,7 +1940,7 @@ INLINE void STCMSSR(SH4 *sh4, UINT32 n) } /* STC.L SPC,@-Rn */ -INLINE void STCMSPC(SH4 *sh4, UINT32 n) +INLINE void STCMSPC(sh4_state *sh4, UINT32 n) { sh4->r[n] -= 4; sh4->ea = sh4->r[n]; @@ -1949,7 +1948,7 @@ INLINE void STCMSPC(SH4 *sh4, UINT32 n) } /* LDS.L @Rm+,FPUL */ -INLINE void LDSMFPUL(SH4 *sh4, UINT32 m) +INLINE void LDSMFPUL(sh4_state *sh4, UINT32 m) { sh4->ea = sh4->r[m]; sh4->fpul = RL(sh4, sh4->ea ); @@ -1957,7 +1956,7 @@ INLINE void LDSMFPUL(SH4 *sh4, UINT32 m) } /* LDS.L @Rm+,FPSCR */ -INLINE void LDSMFPSCR(SH4 *sh4, UINT32 m) +INLINE void LDSMFPSCR(sh4_state *sh4, UINT32 m) { UINT32 s; @@ -1977,7 +1976,7 @@ UINT32 s; } /* LDC.L @Rm+,DBR */ -INLINE void LDCMDBR(SH4 *sh4, UINT32 m) +INLINE void LDCMDBR(sh4_state *sh4, UINT32 m) { sh4->ea = sh4->r[m]; sh4->dbr = RL(sh4, sh4->ea ); @@ -1985,7 +1984,7 @@ INLINE void LDCMDBR(SH4 *sh4, UINT32 m) } /* LDC.L @Rn+,Rm_BANK */ -INLINE void LDCMRBANK(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void LDCMRBANK(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->ea = sh4->r[n]; sh4->rbnk[sh4->sr&sRB ? 0 : 1][m & 7] = RL(sh4, sh4->ea ); @@ -1993,7 +1992,7 @@ INLINE void LDCMRBANK(SH4 *sh4, UINT32 m, UINT32 n) } /* LDC.L @Rm+,SSR */ -INLINE void LDCMSSR(SH4 *sh4, UINT32 m) +INLINE void LDCMSSR(sh4_state *sh4, UINT32 m) { sh4->ea = sh4->r[m]; sh4->ssr = RL(sh4, sh4->ea ); @@ -2001,7 +2000,7 @@ INLINE void LDCMSSR(SH4 *sh4, UINT32 m) } /* LDC.L @Rm+,SPC */ -INLINE void LDCMSPC(SH4 *sh4, UINT32 m) +INLINE void LDCMSPC(sh4_state *sh4, UINT32 m) { sh4->ea = sh4->r[m]; sh4->spc = RL(sh4, sh4->ea ); @@ -2009,13 +2008,13 @@ INLINE void LDCMSPC(SH4 *sh4, UINT32 m) } /* LDS Rm,FPUL */ -INLINE void LDSFPUL(SH4 *sh4, UINT32 m) +INLINE void LDSFPUL(sh4_state *sh4, UINT32 m) { sh4->fpul = sh4->r[m]; } /* LDS Rm,FPSCR */ -INLINE void LDSFPSCR(SH4 *sh4, UINT32 m) +INLINE void LDSFPSCR(sh4_state *sh4, UINT32 m) { UINT32 s; @@ -2032,13 +2031,13 @@ UINT32 s; } /* LDC Rm,DBR */ -INLINE void LDCDBR(SH4 *sh4, UINT32 m) +INLINE void LDCDBR(sh4_state *sh4, UINT32 m) { sh4->dbr = sh4->r[m]; } /* SHAD Rm,Rn */ -INLINE void SHAD(SH4 *sh4, UINT32 m,UINT32 n) +INLINE void SHAD(sh4_state *sh4, UINT32 m,UINT32 n) { if ((sh4->r[m] & 0x80000000) == 0) sh4->r[n] = sh4->r[n] << (sh4->r[m] & 0x1F); @@ -2052,7 +2051,7 @@ INLINE void SHAD(SH4 *sh4, UINT32 m,UINT32 n) } /* SHLD Rm,Rn */ -INLINE void SHLD(SH4 *sh4, UINT32 m,UINT32 n) +INLINE void SHLD(sh4_state *sh4, UINT32 m,UINT32 n) { if ((sh4->r[m] & 0x80000000) == 0) sh4->r[n] = sh4->r[n] << (sh4->r[m] & 0x1F); @@ -2063,24 +2062,24 @@ INLINE void SHLD(SH4 *sh4, UINT32 m,UINT32 n) } /* LDCRBANK Rn,Rm_BANK */ -INLINE void LDCRBANK(SH4 *sh4, UINT32 m, UINT32 n) +INLINE void LDCRBANK(sh4_state *sh4, UINT32 m, UINT32 n) { sh4->rbnk[sh4->sr&sRB ? 0 : 1][m & 7] = sh4->r[n]; } /* LDC Rm,SSR */ -INLINE void LDCSSR(SH4 *sh4, UINT32 m) +INLINE void LDCSSR(sh4_state *sh4, UINT32 m) { sh4->ssr = sh4->r[m]; } /* LDC Rm,SPC */ -INLINE void LDCSPC(SH4 *sh4, UINT32 m) +INLINE void LDCSPC(sh4_state *sh4, UINT32 m) { sh4->spc = sh4->r[m]; } -static UINT32 sh4_getsqremap(SH4 *sh4, UINT32 address) +static UINT32 sh4_getsqremap(sh4_state *sh4, UINT32 address) { if (!sh4->sh4_mmu_enabled) return address; @@ -2102,7 +2101,7 @@ static UINT32 sh4_getsqremap(SH4 *sh4, UINT32 address) } /* PREF @Rn */ -INLINE void PREFM(SH4 *sh4, UINT32 n) +INLINE void PREFM(sh4_state *sh4, UINT32 n) { int a; UINT32 addr,dest,sq; @@ -2140,7 +2139,7 @@ INLINE void PREFM(SH4 *sh4, UINT32 n) /***************************************************************************** * OPCODE DISPATCHERS *****************************************************************************/ -INLINE void op0000(SH4 *sh4, UINT16 opcode) +INLINE void op0000(sh4_state *sh4, UINT16 opcode) { switch (opcode & 0xF) { @@ -2261,12 +2260,12 @@ INLINE void op0000(SH4 *sh4, UINT16 opcode) } } -INLINE void op0001(SH4 *sh4, UINT16 opcode) +INLINE void op0001(sh4_state *sh4, UINT16 opcode) { MOVLS4(sh4, Rm, opcode & 0x0f, Rn); } -INLINE void op0010(SH4 *sh4, UINT16 opcode) +INLINE void op0010(sh4_state *sh4, UINT16 opcode) { switch (opcode & 15) { @@ -2289,7 +2288,7 @@ INLINE void op0010(SH4 *sh4, UINT16 opcode) } } -INLINE void op0011(SH4 *sh4, UINT16 opcode) +INLINE void op0011(sh4_state *sh4, UINT16 opcode) { switch (opcode & 15) { @@ -2312,7 +2311,7 @@ INLINE void op0011(SH4 *sh4, UINT16 opcode) } } -INLINE void op0100(SH4 *sh4, UINT16 opcode) +INLINE void op0100(sh4_state *sh4, UINT16 opcode) { switch (opcode & 0xF) { @@ -2507,12 +2506,12 @@ INLINE void op0100(SH4 *sh4, UINT16 opcode) } } -INLINE void op0101(SH4 *sh4, UINT16 opcode) +INLINE void op0101(sh4_state *sh4, UINT16 opcode) { MOVLL4(sh4, Rm, opcode & 0x0f, Rn); } -INLINE void op0110(SH4 *sh4, UINT16 opcode) +INLINE void op0110(sh4_state *sh4, UINT16 opcode) { switch (opcode & 15) { @@ -2535,12 +2534,12 @@ INLINE void op0110(SH4 *sh4, UINT16 opcode) } } -INLINE void op0111(SH4 *sh4, UINT16 opcode) +INLINE void op0111(sh4_state *sh4, UINT16 opcode) { ADDI(sh4, opcode & 0xff, Rn); } -INLINE void op1000(SH4 *sh4, UINT16 opcode) +INLINE void op1000(sh4_state *sh4, UINT16 opcode) { switch ( opcode & (15<<8) ) { @@ -2564,22 +2563,22 @@ INLINE void op1000(SH4 *sh4, UINT16 opcode) } -INLINE void op1001(SH4 *sh4, UINT16 opcode) +INLINE void op1001(sh4_state *sh4, UINT16 opcode) { MOVWI(sh4, opcode & 0xff, Rn); } -INLINE void op1010(SH4 *sh4, UINT16 opcode) +INLINE void op1010(sh4_state *sh4, UINT16 opcode) { BRA(sh4, opcode & 0xfff); } -INLINE void op1011(SH4 *sh4, UINT16 opcode) +INLINE void op1011(sh4_state *sh4, UINT16 opcode) { BSR(sh4, opcode & 0xfff); } -INLINE void op1100(SH4 *sh4, UINT16 opcode) +INLINE void op1100(sh4_state *sh4, UINT16 opcode) { switch (opcode & (15<<8)) { @@ -2602,12 +2601,12 @@ INLINE void op1100(SH4 *sh4, UINT16 opcode) } } -INLINE void op1101(SH4 *sh4, UINT16 opcode) +INLINE void op1101(sh4_state *sh4, UINT16 opcode) { MOVLI(sh4, opcode & 0xff, Rn); } -INLINE void op1110(SH4 *sh4, UINT16 opcode) +INLINE void op1110(sh4_state *sh4, UINT16 opcode) { MOVI(sh4, opcode & 0xff, Rn); } @@ -2616,7 +2615,7 @@ INLINE void op1110(SH4 *sh4, UINT16 opcode) /* FMOV @Rm+,DRn PR=0 SZ=1 1111nnn0mmmm1001 */ /* FMOV @Rm+,XDn PR=0 SZ=1 1111nnn1mmmm1001 */ /* FMOV @Rm+,XDn PR=1 1111nnn1mmmm1001 */ -INLINE void FMOVMRIFR(SH4 *sh4, UINT32 m,UINT32 n) +INLINE void FMOVMRIFR(sh4_state *sh4, UINT32 m,UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ n = n & 14; @@ -2652,7 +2651,7 @@ INLINE void FMOVMRIFR(SH4 *sh4, UINT32 m,UINT32 n) /* FMOV DRm,@Rn PR=0 SZ=1 1111nnnnmmm01010 */ /* FMOV XDm,@Rn PR=0 SZ=1 1111nnnnmmm11010 */ /* FMOV XDm,@Rn PR=1 1111nnnnmmm11010 */ -INLINE void FMOVFRMR(SH4 *sh4,UINT32 m,UINT32 n) +INLINE void FMOVFRMR(sh4_state *sh4,UINT32 m,UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ m= m & 14; @@ -2682,7 +2681,7 @@ INLINE void FMOVFRMR(SH4 *sh4,UINT32 m,UINT32 n) /* FMOV DRm,@-Rn PR=0 SZ=1 1111nnnnmmm01011 */ /* FMOV XDm,@-Rn PR=0 SZ=1 1111nnnnmmm11011 */ /* FMOV XDm,@-Rn PR=1 1111nnnnmmm11011 */ -INLINE void FMOVFRMDR(SH4 *sh4,UINT32 m,UINT32 n) +INLINE void FMOVFRMDR(sh4_state *sh4,UINT32 m,UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ m= m & 14; @@ -2716,7 +2715,7 @@ INLINE void FMOVFRMDR(SH4 *sh4,UINT32 m,UINT32 n) /* FMOV DRm,@(R0,Rn) PR=0 SZ=1 1111nnnnmmm00111 */ /* FMOV XDm,@(R0,Rn) PR=0 SZ=1 1111nnnnmmm10111 */ /* FMOV XDm,@(R0,Rn) PR=1 1111nnnnmmm10111 */ -INLINE void FMOVFRS0(SH4 *sh4,UINT32 m,UINT32 n) +INLINE void FMOVFRS0(sh4_state *sh4,UINT32 m,UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ m= m & 14; @@ -2746,7 +2745,7 @@ INLINE void FMOVFRS0(SH4 *sh4,UINT32 m,UINT32 n) /* FMOV @(R0,Rm),DRn PR=0 SZ=1 1111nnn0mmmm0110 */ /* FMOV @(R0,Rm),XDn PR=0 SZ=1 1111nnn1mmmm0110 */ /* FMOV @(R0,Rm),XDn PR=1 1111nnn1mmmm0110 */ -INLINE void FMOVS0FR(SH4 *sh4,UINT32 m,UINT32 n) +INLINE void FMOVS0FR(sh4_state *sh4,UINT32 m,UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ n= n & 14; @@ -2777,7 +2776,7 @@ INLINE void FMOVS0FR(SH4 *sh4,UINT32 m,UINT32 n) /* FMOV @Rm,XDn PR=0 SZ=1 1111nnn1mmmm1000 */ /* FMOV @Rm,XDn PR=1 1111nnn1mmmm1000 */ /* FMOV @Rm,DRn PR=1 1111nnn0mmmm1000 */ -INLINE void FMOVMRFR(SH4 *sh4,UINT32 m,UINT32 n) +INLINE void FMOVMRFR(sh4_state *sh4,UINT32 m,UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ if (n & 1) { @@ -2816,7 +2815,7 @@ INLINE void FMOVMRFR(SH4 *sh4,UINT32 m,UINT32 n) /* FMOV XDm,DRn PR=1 XDm -> DRn 1111nnn0mmm11100 */ /* FMOV DRm,XDn PR=1 DRm -> XDn 1111nnn1mmm01100 */ /* FMOV XDm,XDn PR=1 XDm -> XDn 1111nnn1mmm11100 */ -INLINE void FMOVFR(SH4 *sh4,UINT32 m,UINT32 n) +INLINE void FMOVFR(sh4_state *sh4,UINT32 m,UINT32 n) { if ((sh4->fpu_sz == 0) && (sh4->fpu_pr == 0)) /* SZ = 0 */ sh4->fr[n] = sh4->fr[m]; @@ -2842,38 +2841,38 @@ INLINE void FMOVFR(SH4 *sh4,UINT32 m,UINT32 n) } /* FLDI1 FRn 1111nnnn10011101 */ -INLINE void FLDI1(SH4 *sh4, UINT32 n) +INLINE void FLDI1(sh4_state *sh4, UINT32 n) { sh4->fr[n] = 0x3F800000; } /* FLDI0 FRn 1111nnnn10001101 */ -INLINE void FLDI0(SH4 *sh4, UINT32 n) +INLINE void FLDI0(sh4_state *sh4, UINT32 n) { sh4->fr[n] = 0; } /* FLDS FRm,FPUL 1111mmmm00011101 */ -INLINE void FLDS(SH4 *sh4, UINT32 m) +INLINE void FLDS(sh4_state *sh4, UINT32 m) { sh4->fpul = sh4->fr[m]; } /* FSTS FPUL,FRn 1111nnnn00001101 */ -INLINE void FSTS(SH4 *sh4, UINT32 n) +INLINE void FSTS(sh4_state *sh4, UINT32 n) { sh4->fr[n] = sh4->fpul; } /* FRCHG 1111101111111101 */ -INLINE void FRCHG(SH4 *sh4) +INLINE void FRCHG(sh4_state *sh4) { sh4->fpscr ^= FR; sh4_swap_fp_registers(sh4); } /* FSCHG 1111001111111101 */ -INLINE void FSCHG(SH4 *sh4) +INLINE void FSCHG(sh4_state *sh4) { sh4->fpscr ^= SZ; sh4->fpu_sz = (sh4->fpscr & SZ) ? 1 : 0; @@ -2881,7 +2880,7 @@ INLINE void FSCHG(SH4 *sh4) /* FTRC FRm,FPUL PR=0 1111mmmm00111101 */ /* FTRC DRm,FPUL PR=1 1111mmm000111101 */ -INLINE void FTRC(SH4 *sh4, UINT32 n) +INLINE void FTRC(sh4_state *sh4, UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ n = n & 14; @@ -2894,7 +2893,7 @@ INLINE void FTRC(SH4 *sh4, UINT32 n) /* FLOAT FPUL,FRn PR=0 1111nnnn00101101 */ /* FLOAT FPUL,DRn PR=1 1111nnn000101101 */ -INLINE void FLOAT(SH4 *sh4, UINT32 n) +INLINE void FLOAT(sh4_state *sh4, UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ n = n & 14; @@ -2906,7 +2905,7 @@ INLINE void FLOAT(SH4 *sh4, UINT32 n) /* FNEG FRn PR=0 1111nnnn01001101 */ /* FNEG DRn PR=1 1111nnn001001101 */ -INLINE void FNEG(SH4 *sh4, UINT32 n) +INLINE void FNEG(sh4_state *sh4, UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ FP_RFD(n) = -FP_RFD(n); @@ -2917,7 +2916,7 @@ INLINE void FNEG(SH4 *sh4, UINT32 n) /* FABS FRn PR=0 1111nnnn01011101 */ /* FABS DRn PR=1 1111nnn001011101 */ -INLINE void FABS(SH4 *sh4, UINT32 n) +INLINE void FABS(sh4_state *sh4, UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ #ifdef LSB_FIRST @@ -2934,7 +2933,7 @@ INLINE void FABS(SH4 *sh4, UINT32 n) /* FCMP/EQ FRm,FRn PR=0 1111nnnnmmmm0100 */ /* FCMP/EQ DRm,DRn PR=1 1111nnn0mmm00100 */ -INLINE void FCMP_EQ(SH4 *sh4, UINT32 m,UINT32 n) +INLINE void FCMP_EQ(sh4_state *sh4, UINT32 m,UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ n = n & 14; @@ -2953,7 +2952,7 @@ INLINE void FCMP_EQ(SH4 *sh4, UINT32 m,UINT32 n) /* FCMP/GT FRm,FRn PR=0 1111nnnnmmmm0101 */ /* FCMP/GT DRm,DRn PR=1 1111nnn0mmm00101 */ -INLINE void FCMP_GT(SH4 *sh4, UINT32 m,UINT32 n) +INLINE void FCMP_GT(sh4_state *sh4, UINT32 m,UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ n = n & 14; @@ -2971,7 +2970,7 @@ INLINE void FCMP_GT(SH4 *sh4, UINT32 m,UINT32 n) } /* FCNVDS DRm,FPUL PR=1 1111mmm010111101 */ -INLINE void FCNVDS(SH4 *sh4, UINT32 n) +INLINE void FCNVDS(sh4_state *sh4, UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ n = n & 14; @@ -2982,7 +2981,7 @@ INLINE void FCNVDS(SH4 *sh4, UINT32 n) } /* FCNVSD FPUL, DRn PR=1 1111nnn010101101 */ -INLINE void FCNVSD(SH4 *sh4, UINT32 n) +INLINE void FCNVSD(sh4_state *sh4, UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ n = n & 14; @@ -2992,7 +2991,7 @@ INLINE void FCNVSD(SH4 *sh4, UINT32 n) /* FADD FRm,FRn PR=0 1111nnnnmmmm0000 */ /* FADD DRm,DRn PR=1 1111nnn0mmm00000 */ -INLINE void FADD(SH4 *sh4, UINT32 m,UINT32 n) +INLINE void FADD(sh4_state *sh4, UINT32 m,UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ n = n & 14; @@ -3005,7 +3004,7 @@ INLINE void FADD(SH4 *sh4, UINT32 m,UINT32 n) /* FSUB FRm,FRn PR=0 1111nnnnmmmm0001 */ /* FSUB DRm,DRn PR=1 1111nnn0mmm00001 */ -INLINE void FSUB(SH4 *sh4, UINT32 m,UINT32 n) +INLINE void FSUB(sh4_state *sh4, UINT32 m,UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ n = n & 14; @@ -3019,7 +3018,7 @@ INLINE void FSUB(SH4 *sh4, UINT32 m,UINT32 n) /* FMUL FRm,FRn PR=0 1111nnnnmmmm0010 */ /* FMUL DRm,DRn PR=1 1111nnn0mmm00010 */ -INLINE void FMUL(SH4 *sh4, UINT32 m,UINT32 n) +INLINE void FMUL(sh4_state *sh4, UINT32 m,UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ n = n & 14; @@ -3032,7 +3031,7 @@ INLINE void FMUL(SH4 *sh4, UINT32 m,UINT32 n) /* FDIV FRm,FRn PR=0 1111nnnnmmmm0011 */ /* FDIV DRm,DRn PR=1 1111nnn0mmm00011 */ -INLINE void FDIV(SH4 *sh4, UINT32 m,UINT32 n) +INLINE void FDIV(sh4_state *sh4, UINT32 m,UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ n = n & 14; @@ -3048,7 +3047,7 @@ INLINE void FDIV(SH4 *sh4, UINT32 m,UINT32 n) } /* FMAC FR0,FRm,FRn PR=0 1111nnnnmmmm1110 */ -INLINE void FMAC(SH4 *sh4, UINT32 m,UINT32 n) +INLINE void FMAC(sh4_state *sh4, UINT32 m,UINT32 n) { if (sh4->fpu_pr == 0) { /* PR = 0 */ FP_RFS(n) = (FP_RFS(0) * FP_RFS(m)) + FP_RFS(n); @@ -3057,7 +3056,7 @@ INLINE void FMAC(SH4 *sh4, UINT32 m,UINT32 n) /* FSQRT FRn PR=0 1111nnnn01101101 */ /* FSQRT DRn PR=1 1111nnnn01101101 */ -INLINE void FSQRT(SH4 *sh4, UINT32 n) +INLINE void FSQRT(sh4_state *sh4, UINT32 n) { if (sh4->fpu_pr) { /* PR = 1 */ n = n & 14; @@ -3072,7 +3071,7 @@ INLINE void FSQRT(SH4 *sh4, UINT32 n) } /* FSRRA FRn PR=0 1111nnnn01111101 */ -INLINE void FSRRA(SH4 *sh4, UINT32 n) +INLINE void FSRRA(sh4_state *sh4, UINT32 n) { if (FP_RFS(n) < 0) return; @@ -3080,7 +3079,7 @@ INLINE void FSRRA(SH4 *sh4, UINT32 n) } /* FSSCA FPUL,FRn PR=0 1111nnn011111101 */ -INLINE void FSSCA(SH4 *sh4, UINT32 n) +INLINE void FSSCA(sh4_state *sh4, UINT32 n) { float angle; @@ -3090,7 +3089,7 @@ float angle; } /* FIPR FVm,FVn PR=0 1111nnmm11101101 */ -INLINE void FIPR(SH4 *sh4, UINT32 n) +INLINE void FIPR(sh4_state *sh4, UINT32 n) { UINT32 m; float ml[4]; @@ -3104,7 +3103,7 @@ int a; } /* FTRV XMTRX,FVn PR=0 1111nn0111111101 */ -INLINE void FTRV(SH4 *sh4, UINT32 n) +INLINE void FTRV(sh4_state *sh4, UINT32 n) { int i,j; float sum[4]; @@ -3119,7 +3118,7 @@ float sum[4]; FP_RFS(n + i) = sum[i]; } -INLINE void op1111(SH4 *sh4, UINT16 opcode) +INLINE void op1111(sh4_state *sh4, UINT16 opcode) { switch (opcode & 0xf) { @@ -3246,7 +3245,7 @@ INLINE void op1111(SH4 *sh4, UINT16 opcode) static CPU_RESET( sh4 ) { - SH4 *sh4 = get_safe_token(device); + sh4_state *sh4 = get_safe_token(device); emu_timer *tsaved[4]; emu_timer *tsave[5]; UINT32 *m; @@ -3327,7 +3326,7 @@ static CPU_RESET( sh4 ) /* Execute cycles - returns number of cycles actually run */ static CPU_EXECUTE( sh4 ) { - SH4 *sh4 = get_safe_token(device); + sh4_state *sh4 = get_safe_token(device); if (sh4->cpu_off) { @@ -3384,7 +3383,7 @@ static CPU_EXECUTE( sh4 ) static CPU_INIT( sh4 ) { const struct sh4_config *conf = (const struct sh4_config *)device->baseconfig().static_config(); - SH4 *sh4 = get_safe_token(device); + sh4_state *sh4 = get_safe_token(device); sh4_common_init(device); @@ -3472,7 +3471,7 @@ static CPU_INIT( sh4 ) static CPU_SET_INFO( sh4 ) { - SH4 *sh4 = get_safe_token(device); + sh4_state *sh4 = get_safe_token(device); switch (state) { @@ -3608,7 +3607,7 @@ static CPU_SET_INFO( sh4 ) void sh4_set_ftcsr_callback(running_device *device, sh4_ftcsr_callback callback) { - SH4 *sh4 = get_safe_token(device); + sh4_state *sh4 = get_safe_token(device); sh4->ftcsr_read_callback = callback; } @@ -3625,7 +3624,7 @@ ADDRESS_MAP_END static READ64_HANDLER( sh4_tlb_r ) { - SH4 *sh4 = get_safe_token(space->cpu); + sh4_state *sh4 = get_safe_token(space->cpu); int offs = offset*8; @@ -3643,7 +3642,7 @@ static READ64_HANDLER( sh4_tlb_r ) static WRITE64_HANDLER( sh4_tlb_w ) { - SH4 *sh4 = get_safe_token(space->cpu); + sh4_state *sh4 = get_safe_token(space->cpu); int offs = offset*8; @@ -3674,12 +3673,12 @@ ADDRESS_MAP_END CPU_GET_INFO( sh4 ) { - SH4 *sh4 = (device != NULL && device->token() != NULL) ? get_safe_token(device) : NULL; + sh4_state *sh4 = (device != NULL && device->token() != NULL) ? get_safe_token(device) : NULL; switch (state) { /* --- the following bits of info are returned as 64-bit signed integers --- */ - case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(SH4); break; + case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(sh4_state); break; case CPUINFO_INT_INPUT_LINES: info->i = 5; break; case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break; case DEVINFO_INT_ENDIANNESS: info->i = ENDIANNESS_LITTLE; break; @@ -3882,3 +3881,5 @@ CPU_GET_INFO( sh4 ) #endif } } + +DEFINE_LEGACY_CPU_DEVICE(SH4, sh4); |