start implementing cached interpreter
This commit is contained in:
@@ -930,7 +930,7 @@ void JIT::lb(const Instruction instr) {
|
||||
void JIT::ld(const Instruction instr) {
|
||||
if (regs.IsRegConstant(instr.rs())) {
|
||||
const s64 address = regs.Read<s64>(instr.rs()) + (s16)instr;
|
||||
if (check_address_error(0b111, address)) {
|
||||
if (Core::IsAddressError(0b111, address)) {
|
||||
// regs.cop0.HandleTLBException(address);
|
||||
// regs.cop0.FireException(Cop0::ExceptionCode::AddressErrorLoad, 0, regs.oldPC);
|
||||
// return;
|
||||
@@ -1014,7 +1014,7 @@ void JIT::ldr(const Instruction instr) {
|
||||
void JIT::lh(const Instruction instr) {
|
||||
if (regs.IsRegConstant(instr.rs())) {
|
||||
const u64 address = regs.Read<s64>(instr.rs()) + (s16)instr;
|
||||
if (check_address_error(0b1, address)) {
|
||||
if (Core::IsAddressError(0b1, address)) {
|
||||
// regs.cop0.HandleTLBException(address);
|
||||
// regs.cop0.FireException(Cop0::ExceptionCode::AddressErrorLoad, 0, regs.oldPC);
|
||||
// return;
|
||||
@@ -1043,7 +1043,7 @@ void JIT::lhu(const Instruction instr) {
|
||||
u32 paddr;
|
||||
if (regs.IsRegConstant(instr.rs())) {
|
||||
const s64 address = regs.Read<s64>(instr.rs()) + (s16)instr;
|
||||
if (check_address_error(0b1, address)) {
|
||||
if (Core::IsAddressError(0b1, address)) {
|
||||
regs.cop0.HandleTLBException(address);
|
||||
regs.cop0.FireException(Cop0::ExceptionCode::AddressErrorLoad, 0, regs.oldPC);
|
||||
return;
|
||||
@@ -1080,7 +1080,7 @@ void JIT::lw(const Instruction instr) {
|
||||
u32 paddr = 0;
|
||||
if (regs.IsRegConstant(instr.rs())) {
|
||||
const u64 address = regs.Read<s64>(instr.rs()) + offset;
|
||||
if (check_address_error(0b11, address)) {
|
||||
if (Core::IsAddressError(0b11, address)) {
|
||||
// regs.cop0.HandleTLBException(address);
|
||||
// regs.cop0.FireException(Cop0::ExceptionCode::AddressErrorLoad, 0, regs.oldPC);
|
||||
// return;
|
||||
@@ -1344,7 +1344,7 @@ void JIT::sw(const Instruction instr) {
|
||||
if (regs.IsRegConstant(instr.rs(), instr.rt())) {
|
||||
const s16 offset = instr;
|
||||
const u64 address = regs.Read<s64>(instr.rs()) + offset;
|
||||
if (check_address_error(0b11, address)) {
|
||||
if (Core::IsAddressError(0b11, address)) {
|
||||
// regs.cop0.HandleTLBException(address);
|
||||
// regs.cop0.FireException(Cop0::ExceptionCode::AddressErrorStore, 0, regs.oldPC);
|
||||
panic("[JIT]: Unhandled ADES exception in SW!");
|
||||
@@ -1367,7 +1367,7 @@ void JIT::sw(const Instruction instr) {
|
||||
if (regs.IsRegConstant(instr.rs())) {
|
||||
const s16 offset = instr;
|
||||
const u64 address = regs.Read<s64>(instr.rs()) + offset;
|
||||
if (check_address_error(0b11, address)) {
|
||||
if (Core::IsAddressError(0b11, address)) {
|
||||
// regs.cop0.HandleTLBException(address);
|
||||
// regs.cop0.FireException(Cop0::ExceptionCode::AddressErrorStore, 0, regs.oldPC);
|
||||
panic("[JIT]: Unhandled ADES exception in SW!");
|
||||
|
||||
Reference in New Issue
Block a user