void _fastcall r4300i_SD (void) { DWORD Address = GPR[Opcode.base].UW[0] + (short)Opcode.offset; if ((Address & 7) != 0) { ADDRESS_ERROR_EXCEPTION(Address,FALSE); } if (!r4300i_SD_VAddr(Address,GPR[Opcode.rt].UDW)) { DisplayError("SD TLB: %X",Address); } }
void _fastcall r4300i_SDC1 (void) { DWORD Address = GPR[Opcode.base].UW[0] + (short)Opcode.offset; TEST_COP1_USABLE_EXCEPTION if ((Address & 7) != 0) { ADDRESS_ERROR_EXCEPTION(Address,FALSE); } if (!r4300i_SD_VAddr(Address,*(__int64 *)FPRDoubleLocation[Opcode.ft])) { DisplayError("SDC1 TLB: %X",Address); } }
void r4300i_SD (void) { uint32_t Address = GPR[Opcode.base].UW[0] + (int16_t)Opcode.offset; if ((Address & 7) != 0) { ADDRESS_ERROR_EXCEPTION(Address,0); } if (!r4300i_SD_VAddr(Address,GPR[Opcode.rt].UDW)) { } }
void r4300i_SDC1 (void) { uint32_t Address = GPR[Opcode.base].UW[0] + (int16_t)Opcode.offset; TEST_COP1_USABLE_EXCEPTION if ((Address & 7) != 0) { ADDRESS_ERROR_EXCEPTION(Address,0); } if (!r4300i_SD_VAddr(Address,*(int64_t *)FPRDoubleLocation[Opcode.ft])) { } }
void _fastcall r4300i_SDR (void) { DWORD Offset, Address; QWORD Value; Address = GPR[Opcode.base].UW[0] + (short)Opcode.offset; Offset = Address & 7; if (!r4300i_LD_VAddr((Address & ~7),&Value)) { DisplayError("SDL TLB: %X",Address); return; } Value &= SDR_MASK[Offset]; Value += GPR[Opcode.rt].UDW << SDR_SHIFT[Offset]; if (!r4300i_SD_VAddr((Address & ~7),Value)) { DisplayError("SDL TLB: %X",Address); } }
void r4300i_SDL (void) { s32 Offset, Address; u64 Value; Address = GPR[Opcode.base].UW[0] + (short)Opcode.offset; Offset = Address & 7; if (!r4300i_LD_VAddr((Address & ~7),&Value)) { //DisplayError("SDL TLB: %X",Address); return; } Value &= SDL_MASK[Offset]; Value += GPR[Opcode.rt].UDW >> SDL_SHIFT[Offset]; if (!r4300i_SD_VAddr((Address & ~7),Value)) { //DisplayError("SDL TLB: %X",Address); } }
void r4300i_SDR (void) { uint32_t Offset, Address; uint64_t Value; Address = GPR[Opcode.base].UW[0] + (int16_t)Opcode.offset; Offset = Address & 7; if (!r4300i_LD_VAddr((Address & ~7),&Value)) { return; } Value &= SDR_MASK[Offset]; Value += GPR[Opcode.rt].UDW << SDR_SHIFT[Offset]; if (!r4300i_SD_VAddr((Address & ~7),Value)) { } }
void _fastcall r4300i_SDL (void) { DWORD Offset, Address; QWORD Value; Address = GPR[Opcode.base].UW[0] + (short)Opcode.offset; Offset = Address & 7; if (!r4300i_LD_VAddr((Address & ~7),&Value)) { #ifndef EXTERNAL_RELEASE DisplayError("SDL TLB: %X",Address); #endif return; } Value &= SDL_MASK[Offset]; Value += GPR[Opcode.rt].UDW >> SDL_SHIFT[Offset]; if (!r4300i_SD_VAddr((Address & ~7),Value)) { #ifndef EXTERNAL_RELEASE DisplayError("SDL TLB: %X",Address); #endif } }