void r4300i_LW (void) { s32 Address = GPR[Opcode.base].UW[0] + (short)Opcode.offset; if ((Address & 3) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); } #if (!defined(EXTERNAL_RELEASE)) Log_LW(PROGRAM_COUNTER,Address); #endif if (Opcode.rt == 0) { return; } if (!r4300i_LW_VAddr(Address,&GPR[Opcode.rt].UW[0])) { if (ShowTLBMisses) { //DisplayError("LW TLB: %X",Address); } TLB_READ_EXCEPTION(Address); } else { GPR[Opcode.rt].DW = GPR[Opcode.rt].W[0]; //TranslateVaddr(&Address); //if (Address == 0x00090AA0) { // LogMessage("%X: Read %X from %X",PROGRAM_COUNTER,GPR[Opcode.rt].UW[0],GPR[Opcode.base].UW[0] + (short)Opcode.offset); //} } }
void r4300i_LW (void) { uint32_t Address = GPR[Opcode.base].UW[0] + (int16_t)Opcode.offset; if (Opcode.rt == 0) { return; } if (!r4300i_LW_VAddr(Address,&GPR[Opcode.rt].UW[0])) { //if (ShowTLBMisses) { printf("LW TLB: %X",Address); //} TLB_READ_EXCEPTION(Address); } else { GPR[Opcode.rt].DW = GPR[Opcode.rt].W[0]; } }
void r4300i_LWU (void) { uint32_t Address = GPR[Opcode.base].UW[0] + (int16_t)Opcode.offset; if ((Address & 3) != 0) { ADDRESS_ERROR_EXCEPTION(Address,1); } if (Opcode.rt == 0) { return; } if (!r4300i_LW_VAddr(Address,&GPR[Opcode.rt].UW[0])) { //if (ShowTLBMisses) { DisplayError("LWU TLB: %X",Address); //} TLB_READ_EXCEPTION(Address); } else { GPR[Opcode.rt].UDW = GPR[Opcode.rt].UW[0]; } }