From 7aeda3b0c72540095354661febb42903446f41d8 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Thu, 30 Oct 2014 18:17:51 +0300 Subject: [PATCH] ARMv7: more opcodes --- rpcs3/Emu/ARMv7/ARMv7DisAsm.cpp | 1077 +++++++++++++- rpcs3/Emu/ARMv7/ARMv7DisAsm.h | 264 +++- rpcs3/Emu/ARMv7/ARMv7Interpreter.cpp | 1929 ++++++++++++++++++++++++-- rpcs3/Emu/ARMv7/ARMv7Interpreter.h | 266 +++- rpcs3/Emu/ARMv7/ARMv7Opcodes.h | 392 +++++- rpcs3/Emu/Cell/PPCDecoder.cpp | 2 +- 6 files changed, 3707 insertions(+), 223 deletions(-) diff --git a/rpcs3/Emu/ARMv7/ARMv7DisAsm.cpp b/rpcs3/Emu/ARMv7/ARMv7DisAsm.cpp index 751462d2fb..89829191c8 100644 --- a/rpcs3/Emu/ARMv7/ARMv7DisAsm.cpp +++ b/rpcs3/Emu/ARMv7/ARMv7DisAsm.cpp @@ -8,29 +8,87 @@ void ARMv7DisAsm::UNK(const u32 data) void ARMv7DisAsm::NULL_OP(const u32 data, const ARMv7_encoding type) { - Write("NULL"); + Write("Illegal opcode (null)"); } -void ARMv7DisAsm::PUSH(const u32 data, const ARMv7_encoding type) +void ARMv7DisAsm::ADC_IMM(const u32 data, const ARMv7_encoding type) { - Write("PUSH..."); - //Write(fmt::Format("push {%s}", GetRegsListString(regs_list).c_str())); + Write(__FUNCTION__); } -void ARMv7DisAsm::POP(const u32 data, const ARMv7_encoding type) +void ARMv7DisAsm::ADC_REG(const u32 data, const ARMv7_encoding type) { - Write("POP..."); - //Write(fmt::Format("pop {%s}", GetRegsListString(regs_list).c_str())); + Write(__FUNCTION__); } -void ARMv7DisAsm::NOP(const u32 data, const ARMv7_encoding type) +void ARMv7DisAsm::ADC_RSR(const u32 data, const ARMv7_encoding type) { - Write("NOP"); + Write(__FUNCTION__); } + +void ARMv7DisAsm::ADD_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::ADD_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::ADD_RSR(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::ADD_SPI(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::ADD_SPR(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::ADR(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::AND_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::AND_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::AND_RSR(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::ASR_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::ASR_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + void ARMv7DisAsm::B(const u32 data, const ARMv7_encoding type) { - Write("B..."); + Write(__FUNCTION__); //if ((cond & 0xe) == 0xe) //{ // Write(fmt::Format("b 0x%x", DisAsmBranchTarget(imm) + intstr_size)); @@ -41,116 +99,1037 @@ void ARMv7DisAsm::B(const u32 data, const ARMv7_encoding type) //} } -void ARMv7DisAsm::CBZ(const u32 data, const ARMv7_encoding type) + +void ARMv7DisAsm::BFC(const u32 data, const ARMv7_encoding type) { - Write("CBZ..."); - //Write(fmt::Format("cbz 0x%x,%s", DisAsmBranchTarget(imm) + intstr_size, g_arm_reg_name[rn])); + Write(__FUNCTION__); } -void ARMv7DisAsm::CBNZ(const u32 data, const ARMv7_encoding type) +void ARMv7DisAsm::BFI(const u32 data, const ARMv7_encoding type) { - Write("CBNZ..."); - //Write(fmt::Format("cbnz 0x%x,%s", DisAsmBranchTarget(imm) + intstr_size, g_arm_reg_name[rn])); + Write(__FUNCTION__); } + +void ARMv7DisAsm::BIC_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::BIC_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::BIC_RSR(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::BKPT(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + void ARMv7DisAsm::BL(const u32 data, const ARMv7_encoding type) { - Write("BL..."); + Write(__FUNCTION__); //Write(fmt::Format("bl 0x%x", DisAsmBranchTarget(imm) + intstr_size)); } void ARMv7DisAsm::BLX(const u32 data, const ARMv7_encoding type) { - Write("BLX..."); + Write(__FUNCTION__); //Write(fmt::Format("bl 0x%x", DisAsmBranchTarget(imm) + intstr_size)); } -void ARMv7DisAsm::ADC_IMM(const u32 data, const ARMv7_encoding type) +void ARMv7DisAsm::BX(const u32 data, const ARMv7_encoding type) { - Write("ADC..."); + Write(__FUNCTION__); } -void ARMv7DisAsm::ADC_REG(const u32 data, const ARMv7_encoding type) + +void ARMv7DisAsm::CB_Z(const u32 data, const ARMv7_encoding type) { - Write("ADC..."); + Write(__FUNCTION__); + //Write(fmt::Format("cbz 0x%x,%s", DisAsmBranchTarget(imm) + intstr_size, g_arm_reg_name[rn])); + //Write(fmt::Format("cbnz 0x%x,%s", DisAsmBranchTarget(imm) + intstr_size, g_arm_reg_name[rn])); } -void ARMv7DisAsm::ADC_RSR(const u32 data, const ARMv7_encoding type) + +void ARMv7DisAsm::CLZ(const u32 data, const ARMv7_encoding type) { - Write("ADC..."); + Write(__FUNCTION__); } -void ARMv7DisAsm::ADD_IMM(const u32 data, const ARMv7_encoding type) + +void ARMv7DisAsm::CMN_IMM(const u32 data, const ARMv7_encoding type) { - Write("ADD..."); + Write(__FUNCTION__); } -void ARMv7DisAsm::ADD_REG(const u32 data, const ARMv7_encoding type) +void ARMv7DisAsm::CMN_REG(const u32 data, const ARMv7_encoding type) { - Write("ADD..."); + Write(__FUNCTION__); } -void ARMv7DisAsm::ADD_RSR(const u32 data, const ARMv7_encoding type) +void ARMv7DisAsm::CMN_RSR(const u32 data, const ARMv7_encoding type) { - Write("ADD..."); + Write(__FUNCTION__); } -void ARMv7DisAsm::ADD_SPI(const u32 data, const ARMv7_encoding type) + +void ARMv7DisAsm::CMP_IMM(const u32 data, const ARMv7_encoding type) { - Write("ADD SP..."); + Write(__FUNCTION__); } -void ARMv7DisAsm::ADD_SPR(const u32 data, const ARMv7_encoding type) +void ARMv7DisAsm::CMP_REG(const u32 data, const ARMv7_encoding type) { - Write("ADD SP..."); + Write(__FUNCTION__); } +void ARMv7DisAsm::CMP_RSR(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::DBG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::EOR_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::EOR_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::EOR_RSR(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::IT(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::LDM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LDMDA(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LDMDB(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LDMIB(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::LDR_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LDR_LIT(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LDR_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::LDRB_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LDRB_LIT(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LDRB_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::LDRD_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LDRD_LIT(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LDRD_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::LDRH_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LDRH_LIT(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LDRH_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::LDRSB_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LDRSB_LIT(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LDRSB_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::LDRSH_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LDRSH_LIT(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LDRSH_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::LSL_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LSL_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::LSR_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::LSR_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::MLA(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::MLS(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + void ARMv7DisAsm::MOV_IMM(const u32 data, const ARMv7_encoding type) { - Write("MOV..."); + Write(__FUNCTION__); } void ARMv7DisAsm::MOV_REG(const u32 data, const ARMv7_encoding type) { - Write("MOV..."); + Write(__FUNCTION__); } void ARMv7DisAsm::MOVT(const u32 data, const ARMv7_encoding type) { - Write("MOVT..."); + Write(__FUNCTION__); } -void ARMv7DisAsm::SUB_IMM(const u32 data, const ARMv7_encoding type) + +void ARMv7DisAsm::MRS(const u32 data, const ARMv7_encoding type) { - Write("SUB..."); + Write(__FUNCTION__); } -void ARMv7DisAsm::SUB_REG(const u32 data, const ARMv7_encoding type) +void ARMv7DisAsm::MSR_IMM(const u32 data, const ARMv7_encoding type) { - Write("SUB..."); + Write(__FUNCTION__); } -void ARMv7DisAsm::SUB_RSR(const u32 data, const ARMv7_encoding type) +void ARMv7DisAsm::MSR_REG(const u32 data, const ARMv7_encoding type) { - Write("SUB..."); + Write(__FUNCTION__); } -void ARMv7DisAsm::SUB_SPI(const u32 data, const ARMv7_encoding type) + +void ARMv7DisAsm::MUL(const u32 data, const ARMv7_encoding type) { - Write("SUB SP..."); + Write(__FUNCTION__); } -void ARMv7DisAsm::SUB_SPR(const u32 data, const ARMv7_encoding type) + +void ARMv7DisAsm::MVN_IMM(const u32 data, const ARMv7_encoding type) { - Write("SUB SP..."); + Write(__FUNCTION__); } +void ARMv7DisAsm::MVN_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::MVN_RSR(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::NEG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::NOP(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::ORN_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::ORN_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::ORR_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::ORR_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::ORR_RSR(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::PKH(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::POP(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); + //Write(fmt::Format("pop {%s}", GetRegsListString(regs_list).c_str())); +} + +void ARMv7DisAsm::PUSH(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); + //Write(fmt::Format("push {%s}", GetRegsListString(regs_list).c_str())); +} + + +void ARMv7DisAsm::QADD(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::QADD16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::QADD8(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::QASX(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::QDADD(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::QDSUB(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::QSAX(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::QSUB(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::QSUB16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::QSUB8(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::RBIT(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::REV(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::REV16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::REVSH(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::ROR_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::ROR_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::RRX(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::RSB_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::RSB_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::RSB_RSR(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::RSC_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::RSC_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::RSC_RSR(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::SADD16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SADD8(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SASX(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::SBC_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SBC_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SBC_RSR(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::SBFX(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::SDIV(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::SEL(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::SHADD16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SHADD8(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SHASX(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SHSAX(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SHSUB16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SHSUB8(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::SMLA__(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SMLAD(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SMLAL(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SMLAL__(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SMLALD(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SMLAW_(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SMLSD(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SMLSLD(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SMMLA(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SMMLS(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SMMUL(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SMUAD(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SMUL__(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SMULL(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SMULW_(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SMUSD(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::SSAT(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SSAT16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SSAX(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SSUB16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SSUB8(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::STM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::STMDA(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::STMDB(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::STMIB(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + void ARMv7DisAsm::STR_IMM(const u32 data, const ARMv7_encoding type) { - Write("STR..."); + Write(__FUNCTION__); } void ARMv7DisAsm::STR_REG(const u32 data, const ARMv7_encoding type) { - Write("STR..."); + Write(__FUNCTION__); } + + +void ARMv7DisAsm::STRB_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::STRB_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::STRD_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::STRD_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::STRH_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::STRH_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::SUB_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SUB_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SUB_RSR(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SUB_SPI(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SUB_SPR(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::SVC(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::SWP_(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::SXTAB(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SXTAB16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SXTAH(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SXTB(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SXTB16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::SXTH(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::TB_(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::TEQ_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::TEQ_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::TEQ_RSR(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::TST_IMM(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::TST_REG(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::TST_RSR(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + + +void ARMv7DisAsm::UADD16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UADD8(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UASX(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UBFX(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UDIV(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UHADD16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UHADD8(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UHASX(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UHSAX(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UHSUB16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UHSUB8(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UMAAL(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UMLAL(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UMULL(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UQADD16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UQADD8(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UQASX(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UQSAX(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UQSUB16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UQSUB8(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::USAD8(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::USADA8(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::USAT(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::USAT16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::USAX(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::USUB16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::USUB8(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UXTAB(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UXTAB16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UXTAH(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UXTB(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UXTB16(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + +void ARMv7DisAsm::UXTH(const u32 data, const ARMv7_encoding type) +{ + Write(__FUNCTION__); +} + diff --git a/rpcs3/Emu/ARMv7/ARMv7DisAsm.h b/rpcs3/Emu/ARMv7/ARMv7DisAsm.h index a3a9ac63fc..e6a7fe1f8b 100644 --- a/rpcs3/Emu/ARMv7/ARMv7DisAsm.h +++ b/rpcs3/Emu/ARMv7/ARMv7DisAsm.h @@ -48,16 +48,6 @@ protected: virtual void UNK(const u32 data); virtual void NULL_OP(const u32 data, const ARMv7_encoding type); - virtual void NOP(const u32 data, const ARMv7_encoding type); - - virtual void PUSH(const u32 data, const ARMv7_encoding type); - virtual void POP(const u32 data, const ARMv7_encoding type); - - virtual void B(const u32 data, const ARMv7_encoding type); - virtual void CBZ(const u32 data, const ARMv7_encoding type); - virtual void CBNZ(const u32 data, const ARMv7_encoding type); - virtual void BL(const u32 data, const ARMv7_encoding type); - virtual void BLX(const u32 data, const ARMv7_encoding type); virtual void ADC_IMM(const u32 data, const ARMv7_encoding type); virtual void ADC_REG(const u32 data, const ARMv7_encoding type); @@ -69,16 +59,266 @@ protected: virtual void ADD_SPI(const u32 data, const ARMv7_encoding type); virtual void ADD_SPR(const u32 data, const ARMv7_encoding type); + virtual void ADR(const u32 data, const ARMv7_encoding type); + + virtual void AND_IMM(const u32 data, const ARMv7_encoding type); + virtual void AND_REG(const u32 data, const ARMv7_encoding type); + virtual void AND_RSR(const u32 data, const ARMv7_encoding type); + + virtual void ASR_IMM(const u32 data, const ARMv7_encoding type); + virtual void ASR_REG(const u32 data, const ARMv7_encoding type); + + virtual void B(const u32 data, const ARMv7_encoding type); + + virtual void BFC(const u32 data, const ARMv7_encoding type); + virtual void BFI(const u32 data, const ARMv7_encoding type); + + virtual void BIC_IMM(const u32 data, const ARMv7_encoding type); + virtual void BIC_REG(const u32 data, const ARMv7_encoding type); + virtual void BIC_RSR(const u32 data, const ARMv7_encoding type); + + virtual void BKPT(const u32 data, const ARMv7_encoding type); + + virtual void BL(const u32 data, const ARMv7_encoding type); + virtual void BLX(const u32 data, const ARMv7_encoding type); + virtual void BX(const u32 data, const ARMv7_encoding type); + + virtual void CB_Z(const u32 data, const ARMv7_encoding type); + + virtual void CLZ(const u32 data, const ARMv7_encoding type); + + virtual void CMN_IMM(const u32 data, const ARMv7_encoding type); + virtual void CMN_REG(const u32 data, const ARMv7_encoding type); + virtual void CMN_RSR(const u32 data, const ARMv7_encoding type); + + virtual void CMP_IMM(const u32 data, const ARMv7_encoding type); + virtual void CMP_REG(const u32 data, const ARMv7_encoding type); + virtual void CMP_RSR(const u32 data, const ARMv7_encoding type); + + virtual void DBG(const u32 data, const ARMv7_encoding type); + + virtual void EOR_IMM(const u32 data, const ARMv7_encoding type); + virtual void EOR_REG(const u32 data, const ARMv7_encoding type); + virtual void EOR_RSR(const u32 data, const ARMv7_encoding type); + + virtual void IT(const u32 data, const ARMv7_encoding type); + + virtual void LDM(const u32 data, const ARMv7_encoding type); + virtual void LDMDA(const u32 data, const ARMv7_encoding type); + virtual void LDMDB(const u32 data, const ARMv7_encoding type); + virtual void LDMIB(const u32 data, const ARMv7_encoding type); + + virtual void LDR_IMM(const u32 data, const ARMv7_encoding type); + virtual void LDR_LIT(const u32 data, const ARMv7_encoding type); + virtual void LDR_REG(const u32 data, const ARMv7_encoding type); + + virtual void LDRB_IMM(const u32 data, const ARMv7_encoding type); + virtual void LDRB_LIT(const u32 data, const ARMv7_encoding type); + virtual void LDRB_REG(const u32 data, const ARMv7_encoding type); + + virtual void LDRD_IMM(const u32 data, const ARMv7_encoding type); + virtual void LDRD_LIT(const u32 data, const ARMv7_encoding type); + virtual void LDRD_REG(const u32 data, const ARMv7_encoding type); + + virtual void LDRH_IMM(const u32 data, const ARMv7_encoding type); + virtual void LDRH_LIT(const u32 data, const ARMv7_encoding type); + virtual void LDRH_REG(const u32 data, const ARMv7_encoding type); + + virtual void LDRSB_IMM(const u32 data, const ARMv7_encoding type); + virtual void LDRSB_LIT(const u32 data, const ARMv7_encoding type); + virtual void LDRSB_REG(const u32 data, const ARMv7_encoding type); + + virtual void LDRSH_IMM(const u32 data, const ARMv7_encoding type); + virtual void LDRSH_LIT(const u32 data, const ARMv7_encoding type); + virtual void LDRSH_REG(const u32 data, const ARMv7_encoding type); + + virtual void LSL_IMM(const u32 data, const ARMv7_encoding type); + virtual void LSL_REG(const u32 data, const ARMv7_encoding type); + + virtual void LSR_IMM(const u32 data, const ARMv7_encoding type); + virtual void LSR_REG(const u32 data, const ARMv7_encoding type); + + virtual void MLA(const u32 data, const ARMv7_encoding type); + virtual void MLS(const u32 data, const ARMv7_encoding type); + virtual void MOV_IMM(const u32 data, const ARMv7_encoding type); virtual void MOV_REG(const u32 data, const ARMv7_encoding type); virtual void MOVT(const u32 data, const ARMv7_encoding type); + virtual void MRS(const u32 data, const ARMv7_encoding type); + virtual void MSR_IMM(const u32 data, const ARMv7_encoding type); + virtual void MSR_REG(const u32 data, const ARMv7_encoding type); + + virtual void MUL(const u32 data, const ARMv7_encoding type); + + virtual void MVN_IMM(const u32 data, const ARMv7_encoding type); + virtual void MVN_REG(const u32 data, const ARMv7_encoding type); + virtual void MVN_RSR(const u32 data, const ARMv7_encoding type); + + virtual void NEG(const u32 data, const ARMv7_encoding type); + + virtual void NOP(const u32 data, const ARMv7_encoding type); + + virtual void ORN_IMM(const u32 data, const ARMv7_encoding type); + virtual void ORN_REG(const u32 data, const ARMv7_encoding type); + + virtual void ORR_IMM(const u32 data, const ARMv7_encoding type); + virtual void ORR_REG(const u32 data, const ARMv7_encoding type); + virtual void ORR_RSR(const u32 data, const ARMv7_encoding type); + + virtual void PKH(const u32 data, const ARMv7_encoding type); + + virtual void POP(const u32 data, const ARMv7_encoding type); + virtual void PUSH(const u32 data, const ARMv7_encoding type); + + virtual void QADD(const u32 data, const ARMv7_encoding type); + virtual void QADD16(const u32 data, const ARMv7_encoding type); + virtual void QADD8(const u32 data, const ARMv7_encoding type); + virtual void QASX(const u32 data, const ARMv7_encoding type); + virtual void QDADD(const u32 data, const ARMv7_encoding type); + virtual void QDSUB(const u32 data, const ARMv7_encoding type); + virtual void QSAX(const u32 data, const ARMv7_encoding type); + virtual void QSUB(const u32 data, const ARMv7_encoding type); + virtual void QSUB16(const u32 data, const ARMv7_encoding type); + virtual void QSUB8(const u32 data, const ARMv7_encoding type); + + virtual void RBIT(const u32 data, const ARMv7_encoding type); + virtual void REV(const u32 data, const ARMv7_encoding type); + virtual void REV16(const u32 data, const ARMv7_encoding type); + virtual void REVSH(const u32 data, const ARMv7_encoding type); + + virtual void ROR_IMM(const u32 data, const ARMv7_encoding type); + virtual void ROR_REG(const u32 data, const ARMv7_encoding type); + + virtual void RRX(const u32 data, const ARMv7_encoding type); + + virtual void RSB_IMM(const u32 data, const ARMv7_encoding type); + virtual void RSB_REG(const u32 data, const ARMv7_encoding type); + virtual void RSB_RSR(const u32 data, const ARMv7_encoding type); + + virtual void RSC_IMM(const u32 data, const ARMv7_encoding type); + virtual void RSC_REG(const u32 data, const ARMv7_encoding type); + virtual void RSC_RSR(const u32 data, const ARMv7_encoding type); + + virtual void SADD16(const u32 data, const ARMv7_encoding type); + virtual void SADD8(const u32 data, const ARMv7_encoding type); + virtual void SASX(const u32 data, const ARMv7_encoding type); + + virtual void SBC_IMM(const u32 data, const ARMv7_encoding type); + virtual void SBC_REG(const u32 data, const ARMv7_encoding type); + virtual void SBC_RSR(const u32 data, const ARMv7_encoding type); + + virtual void SBFX(const u32 data, const ARMv7_encoding type); + + virtual void SDIV(const u32 data, const ARMv7_encoding type); + + virtual void SEL(const u32 data, const ARMv7_encoding type); + + virtual void SHADD16(const u32 data, const ARMv7_encoding type); + virtual void SHADD8(const u32 data, const ARMv7_encoding type); + virtual void SHASX(const u32 data, const ARMv7_encoding type); + virtual void SHSAX(const u32 data, const ARMv7_encoding type); + virtual void SHSUB16(const u32 data, const ARMv7_encoding type); + virtual void SHSUB8(const u32 data, const ARMv7_encoding type); + + virtual void SMLA__(const u32 data, const ARMv7_encoding type); + virtual void SMLAD(const u32 data, const ARMv7_encoding type); + virtual void SMLAL(const u32 data, const ARMv7_encoding type); + virtual void SMLAL__(const u32 data, const ARMv7_encoding type); + virtual void SMLALD(const u32 data, const ARMv7_encoding type); + virtual void SMLAW_(const u32 data, const ARMv7_encoding type); + virtual void SMLSD(const u32 data, const ARMv7_encoding type); + virtual void SMLSLD(const u32 data, const ARMv7_encoding type); + virtual void SMMLA(const u32 data, const ARMv7_encoding type); + virtual void SMMLS(const u32 data, const ARMv7_encoding type); + virtual void SMMUL(const u32 data, const ARMv7_encoding type); + virtual void SMUAD(const u32 data, const ARMv7_encoding type); + virtual void SMUL__(const u32 data, const ARMv7_encoding type); + virtual void SMULL(const u32 data, const ARMv7_encoding type); + virtual void SMULW_(const u32 data, const ARMv7_encoding type); + virtual void SMUSD(const u32 data, const ARMv7_encoding type); + + virtual void SSAT(const u32 data, const ARMv7_encoding type); + virtual void SSAT16(const u32 data, const ARMv7_encoding type); + virtual void SSAX(const u32 data, const ARMv7_encoding type); + virtual void SSUB16(const u32 data, const ARMv7_encoding type); + virtual void SSUB8(const u32 data, const ARMv7_encoding type); + + virtual void STM(const u32 data, const ARMv7_encoding type); + virtual void STMDA(const u32 data, const ARMv7_encoding type); + virtual void STMDB(const u32 data, const ARMv7_encoding type); + virtual void STMIB(const u32 data, const ARMv7_encoding type); + + virtual void STR_IMM(const u32 data, const ARMv7_encoding type); + virtual void STR_REG(const u32 data, const ARMv7_encoding type); + + virtual void STRB_IMM(const u32 data, const ARMv7_encoding type); + virtual void STRB_REG(const u32 data, const ARMv7_encoding type); + + virtual void STRD_IMM(const u32 data, const ARMv7_encoding type); + virtual void STRD_REG(const u32 data, const ARMv7_encoding type); + + virtual void STRH_IMM(const u32 data, const ARMv7_encoding type); + virtual void STRH_REG(const u32 data, const ARMv7_encoding type); + virtual void SUB_IMM(const u32 data, const ARMv7_encoding type); virtual void SUB_REG(const u32 data, const ARMv7_encoding type); virtual void SUB_RSR(const u32 data, const ARMv7_encoding type); virtual void SUB_SPI(const u32 data, const ARMv7_encoding type); virtual void SUB_SPR(const u32 data, const ARMv7_encoding type); - virtual void STR_IMM(const u32 data, const ARMv7_encoding type); - virtual void STR_REG(const u32 data, const ARMv7_encoding type); + virtual void SVC(const u32 data, const ARMv7_encoding type); + + virtual void SWP_(const u32 data, const ARMv7_encoding type); + + virtual void SXTAB(const u32 data, const ARMv7_encoding type); + virtual void SXTAB16(const u32 data, const ARMv7_encoding type); + virtual void SXTAH(const u32 data, const ARMv7_encoding type); + virtual void SXTB(const u32 data, const ARMv7_encoding type); + virtual void SXTB16(const u32 data, const ARMv7_encoding type); + virtual void SXTH(const u32 data, const ARMv7_encoding type); + + virtual void TB_(const u32 data, const ARMv7_encoding type); + + virtual void TEQ_IMM(const u32 data, const ARMv7_encoding type); + virtual void TEQ_REG(const u32 data, const ARMv7_encoding type); + virtual void TEQ_RSR(const u32 data, const ARMv7_encoding type); + + virtual void TST_IMM(const u32 data, const ARMv7_encoding type); + virtual void TST_REG(const u32 data, const ARMv7_encoding type); + virtual void TST_RSR(const u32 data, const ARMv7_encoding type); + + virtual void UADD16(const u32 data, const ARMv7_encoding type); + virtual void UADD8(const u32 data, const ARMv7_encoding type); + virtual void UASX(const u32 data, const ARMv7_encoding type); + virtual void UBFX(const u32 data, const ARMv7_encoding type); + virtual void UDIV(const u32 data, const ARMv7_encoding type); + virtual void UHADD16(const u32 data, const ARMv7_encoding type); + virtual void UHADD8(const u32 data, const ARMv7_encoding type); + virtual void UHASX(const u32 data, const ARMv7_encoding type); + virtual void UHSAX(const u32 data, const ARMv7_encoding type); + virtual void UHSUB16(const u32 data, const ARMv7_encoding type); + virtual void UHSUB8(const u32 data, const ARMv7_encoding type); + virtual void UMAAL(const u32 data, const ARMv7_encoding type); + virtual void UMLAL(const u32 data, const ARMv7_encoding type); + virtual void UMULL(const u32 data, const ARMv7_encoding type); + virtual void UQADD16(const u32 data, const ARMv7_encoding type); + virtual void UQADD8(const u32 data, const ARMv7_encoding type); + virtual void UQASX(const u32 data, const ARMv7_encoding type); + virtual void UQSAX(const u32 data, const ARMv7_encoding type); + virtual void UQSUB16(const u32 data, const ARMv7_encoding type); + virtual void UQSUB8(const u32 data, const ARMv7_encoding type); + virtual void USAD8(const u32 data, const ARMv7_encoding type); + virtual void USADA8(const u32 data, const ARMv7_encoding type); + virtual void USAT(const u32 data, const ARMv7_encoding type); + virtual void USAT16(const u32 data, const ARMv7_encoding type); + virtual void USAX(const u32 data, const ARMv7_encoding type); + virtual void USUB16(const u32 data, const ARMv7_encoding type); + virtual void USUB8(const u32 data, const ARMv7_encoding type); + virtual void UXTAB(const u32 data, const ARMv7_encoding type); + virtual void UXTAB16(const u32 data, const ARMv7_encoding type); + virtual void UXTAH(const u32 data, const ARMv7_encoding type); + virtual void UXTB(const u32 data, const ARMv7_encoding type); + virtual void UXTB16(const u32 data, const ARMv7_encoding type); + virtual void UXTH(const u32 data, const ARMv7_encoding type); }; diff --git a/rpcs3/Emu/ARMv7/ARMv7Interpreter.cpp b/rpcs3/Emu/ARMv7/ARMv7Interpreter.cpp index 28990ee9b1..355a445aa3 100644 --- a/rpcs3/Emu/ARMv7/ARMv7Interpreter.cpp +++ b/rpcs3/Emu/ARMv7/ARMv7Interpreter.cpp @@ -17,112 +17,140 @@ void ARMv7Interpreter::NULL_OP(const u32 data, const ARMv7_encoding type) Emu.Pause(); } -void ARMv7Interpreter::NOP(const u32 data, const ARMv7_encoding type) +void ARMv7Interpreter::ADC_IMM(const u32 data, const ARMv7_encoding type) { switch (type) { - case T1: break; - case T2: break; - case A1: break; + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } -void ARMv7Interpreter::PUSH(const u32 data, const ARMv7_encoding type) +void ARMv7Interpreter::ADC_REG(const u32 data, const ARMv7_encoding type) { - u16 reg_list = 0; - switch (type) { - case T1: - { - reg_list = ((data & 0x100) << 6) | (data & 0xff); - break; - } - case T2: - { - reg_list = data & 0x5fff; - break; - } - case T3: - { - reg_list = 1 << (data >> 12); - break; - } - case A1: - { - reg_list = data & 0xffff; if (BitCount(reg_list) < 2) throw "STMDB / STMFD"; - if (!ConditionPassed(data >> 28)) return; - break; - } - case A2: - { - reg_list = 1 << ((data >> 12) & 0xf); - if (!ConditionPassed(data >> 28)) return; - break; - } + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } - - for (u16 mask = 1 << 15, i = 15; mask; mask >>= 1, i--) - { - if (reg_list & mask) - { - CPU.SP -= 4; - vm::psv::write32(CPU.SP, CPU.read_gpr(i)); - } - } } -void ARMv7Interpreter::POP(const u32 data, const ARMv7_encoding type) +void ARMv7Interpreter::ADC_RSR(const u32 data, const ARMv7_encoding type) { - u16 reg_list = 0; - switch (type) { - case T1: - { - reg_list = ((data & 0x100) << 6) | (data & 0xff); - break; - } - case T2: - { - reg_list = data & 0xdfff; - break; - } - case T3: - { - reg_list = 1 << (data >> 12); - break; - } - case A1: - { - reg_list = data & 0xffff; if (BitCount(reg_list) < 2) throw "LDM / LDMIA / LDMFD"; - if (!ConditionPassed(data >> 28)) return; - break; - } - case A2: - { - reg_list = 1 << ((data >> 12) & 0xf); - if (!ConditionPassed(data >> 28)) return; - break; - } + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } +} - for (u16 mask = 1, i = 0; mask; mask <<= 1, i++) + +void ARMv7Interpreter::ADD_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) { - if (reg_list & mask) - { - CPU.write_gpr(i, vm::psv::read32(CPU.SP)); - CPU.SP += 4; - } + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; } } +void ARMv7Interpreter::ADD_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::ADD_RSR(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::ADD_SPI(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::ADD_SPR(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::ADR(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::AND_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::AND_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::AND_RSR(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::ASR_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::ASR_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + void ARMv7Interpreter::B(const u32 data, const ARMv7_encoding type) { - u8 cond = 0xf; + u32 cond = 0xf; u32 jump = 0; // jump = instr_size + imm32 switch (type) @@ -169,34 +197,64 @@ void ARMv7Interpreter::B(const u32 data, const ARMv7_encoding type) } } -void ARMv7Interpreter::CBZ(const u32 data, const ARMv7_encoding type) + +void ARMv7Interpreter::BFC(const u32 data, const ARMv7_encoding type) { switch (type) { - case T1: break; + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } - - if (CPU.GPR[data & 0x7] == 0) - { - CPU.SetBranch(CPU.PC + 2 + ((data & 0xf8) >> 2) + ((data & 0x200) >> 3)); - } } -void ARMv7Interpreter::CBNZ(const u32 data, const ARMv7_encoding type) +void ARMv7Interpreter::BFI(const u32 data, const ARMv7_encoding type) { switch (type) { - case T1: break; + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } +} - if (CPU.GPR[data & 0x7] != 0) + +void ARMv7Interpreter::BIC_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) { - CPU.SetBranch(CPU.PC + 2 + ((data & 0xf8) >> 2) + ((data & 0x200) >> 3)); + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; } } +void ARMv7Interpreter::BIC_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::BIC_RSR(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::BKPT(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + void ARMv7Interpreter::BL(const u32 data, const ARMv7_encoding type) { u32 jump = 0; @@ -260,82 +318,426 @@ void ARMv7Interpreter::BLX(const u32 data, const ARMv7_encoding type) CPU.SetBranch(target); } -void ARMv7Interpreter::ADC_IMM(const u32 data, const ARMv7_encoding type) +void ARMv7Interpreter::BX(const u32 data, const ARMv7_encoding type) { switch (type) { + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } -void ARMv7Interpreter::ADC_REG(const u32 data, const ARMv7_encoding type) + +void ARMv7Interpreter::CB_Z(const u32 data, const ARMv7_encoding type) { switch (type) { + case T1: break; + default: throw __FUNCTION__; + } + + if ((CPU.GPR[data & 0x7] == 0) ^ (data & 0x800)) + { + CPU.SetBranch(CPU.PC + 2 + ((data & 0xf8) >> 2) + ((data & 0x200) >> 3)); + } +} + + +void ARMv7Interpreter::CLZ(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } -void ARMv7Interpreter::ADC_RSR(const u32 data, const ARMv7_encoding type) + +void ARMv7Interpreter::CMN_IMM(const u32 data, const ARMv7_encoding type) { switch (type) { + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } -void ARMv7Interpreter::ADD_IMM(const u32 data, const ARMv7_encoding type) +void ARMv7Interpreter::CMN_REG(const u32 data, const ARMv7_encoding type) { switch (type) { + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } -void ARMv7Interpreter::ADD_REG(const u32 data, const ARMv7_encoding type) +void ARMv7Interpreter::CMN_RSR(const u32 data, const ARMv7_encoding type) { switch (type) { + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } -void ARMv7Interpreter::ADD_RSR(const u32 data, const ARMv7_encoding type) + +void ARMv7Interpreter::CMP_IMM(const u32 data, const ARMv7_encoding type) { switch (type) { + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } -void ARMv7Interpreter::ADD_SPI(const u32 data, const ARMv7_encoding type) +void ARMv7Interpreter::CMP_REG(const u32 data, const ARMv7_encoding type) { switch (type) { + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } -void ARMv7Interpreter::ADD_SPR(const u32 data, const ARMv7_encoding type) +void ARMv7Interpreter::CMP_RSR(const u32 data, const ARMv7_encoding type) { switch (type) { + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } + +void ARMv7Interpreter::DBG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::EOR_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::EOR_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::EOR_RSR(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::IT(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::LDM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LDMDA(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LDMDB(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LDMIB(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::LDR_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LDR_LIT(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LDR_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::LDRB_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LDRB_LIT(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LDRB_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::LDRD_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LDRD_LIT(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LDRD_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::LDRH_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LDRH_LIT(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LDRH_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::LDRSB_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LDRSB_LIT(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LDRSB_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::LDRSH_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LDRSH_LIT(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LDRSH_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::LSL_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LSL_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::LSR_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::LSR_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::MLA(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::MLS(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + void ARMv7Interpreter::MOV_IMM(const u32 data, const ARMv7_encoding type) { + u32 d; + u32 imm; + switch (type) { + case T1: d = (data >> 8) & 0x7; imm = sign<8, u32>(data & 0xff); break; default: throw __FUNCTION__; } + + CPU.write_gpr(d, imm); } void ARMv7Interpreter::MOV_REG(const u32 data, const ARMv7_encoding type) { switch (type) { + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } @@ -344,14 +746,913 @@ void ARMv7Interpreter::MOVT(const u32 data, const ARMv7_encoding type) { switch (type) { + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } + +void ARMv7Interpreter::MRS(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::MSR_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::MSR_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::MUL(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::MVN_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::MVN_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::MVN_RSR(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::NEG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::NOP(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case T1: break; + case T2: break; + case A1: break; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::ORN_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::ORN_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::ORR_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::ORR_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::ORR_RSR(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::PKH(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::POP(const u32 data, const ARMv7_encoding type) +{ + u16 reg_list = 0; + + switch (type) + { + case T1: + { + reg_list = ((data & 0x100) << 6) | (data & 0xff); + break; + } + case T2: + { + reg_list = data & 0xdfff; + break; + } + case T3: + { + reg_list = 1 << (data >> 12); + break; + } + case A1: + { + reg_list = data & 0xffff; if (BitCount(reg_list) < 2) throw "LDM / LDMIA / LDMFD"; + if (!ConditionPassed(data >> 28)) return; + break; + } + case A2: + { + reg_list = 1 << ((data >> 12) & 0xf); + if (!ConditionPassed(data >> 28)) return; + break; + } + default: throw __FUNCTION__; + } + + for (u16 mask = 1, i = 0; mask; mask <<= 1, i++) + { + if (reg_list & mask) + { + CPU.write_gpr(i, vm::psv::read32(CPU.SP)); + CPU.SP += 4; + } + } +} + +void ARMv7Interpreter::PUSH(const u32 data, const ARMv7_encoding type) +{ + u16 reg_list = 0; + + switch (type) + { + case T1: + { + reg_list = ((data & 0x100) << 6) | (data & 0xff); + break; + } + case T2: + { + reg_list = data & 0x5fff; + break; + } + case T3: + { + reg_list = 1 << (data >> 12); + break; + } + case A1: + { + reg_list = data & 0xffff; if (BitCount(reg_list) < 2) throw "STMDB / STMFD"; + if (!ConditionPassed(data >> 28)) return; + break; + } + case A2: + { + reg_list = 1 << ((data >> 12) & 0xf); + if (!ConditionPassed(data >> 28)) return; + break; + } + default: throw __FUNCTION__; + } + + for (u16 mask = 1 << 15, i = 15; mask; mask >>= 1, i--) + { + if (reg_list & mask) + { + CPU.SP -= 4; + vm::psv::write32(CPU.SP, CPU.read_gpr(i)); + } + } +} + + +void ARMv7Interpreter::QADD(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::QADD16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::QADD8(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::QASX(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::QDADD(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::QDSUB(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::QSAX(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::QSUB(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::QSUB16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::QSUB8(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::RBIT(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::REV(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::REV16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::REVSH(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::ROR_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::ROR_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::RRX(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::RSB_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::RSB_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::RSB_RSR(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::RSC_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::RSC_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::RSC_RSR(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::SADD16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SADD8(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SASX(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::SBC_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SBC_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SBC_RSR(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::SBFX(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::SDIV(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::SEL(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::SHADD16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SHADD8(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SHASX(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SHSAX(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SHSUB16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SHSUB8(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::SMLA__(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SMLAD(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SMLAL(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SMLAL__(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SMLALD(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SMLAW_(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SMLSD(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SMLSLD(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SMMLA(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SMMLS(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SMMUL(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SMUAD(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SMUL__(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SMULL(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SMULW_(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SMUSD(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::SSAT(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SSAT16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SSAX(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SSUB16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SSUB8(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::STM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::STMDA(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::STMDB(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::STMIB(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::STR_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::STR_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::STRB_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::STRB_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::STRD_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::STRD_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::STRH_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::STRH_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + void ARMv7Interpreter::SUB_IMM(const u32 data, const ARMv7_encoding type) { switch (type) { + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } @@ -360,6 +1661,7 @@ void ARMv7Interpreter::SUB_REG(const u32 data, const ARMv7_encoding type) { switch (type) { + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } @@ -368,6 +1670,7 @@ void ARMv7Interpreter::SUB_RSR(const u32 data, const ARMv7_encoding type) { switch (type) { + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } @@ -385,22 +1688,446 @@ void ARMv7Interpreter::SUB_SPR(const u32 data, const ARMv7_encoding type) { switch (type) { + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } -void ARMv7Interpreter::STR_IMM(const u32 data, const ARMv7_encoding type) + +void ARMv7Interpreter::SVC(const u32 data, const ARMv7_encoding type) { switch (type) { + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } -void ARMv7Interpreter::STR_REG(const u32 data, const ARMv7_encoding type) + +void ARMv7Interpreter::SWP_(const u32 data, const ARMv7_encoding type) { switch (type) { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::SXTAB(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SXTAB16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SXTAH(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SXTB(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SXTB16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::SXTH(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::TB_(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::TEQ_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::TEQ_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::TEQ_RSR(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::TST_IMM(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::TST_REG(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::TST_RSR(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + + +void ARMv7Interpreter::UADD16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UADD8(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UASX(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UBFX(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UDIV(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UHADD16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UHADD8(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UHASX(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UHSAX(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UHSUB16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UHSUB8(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UMAAL(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UMLAL(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UMULL(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UQADD16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UQADD8(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UQASX(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UQSAX(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UQSUB16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UQSUB8(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::USAD8(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::USADA8(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::USAT(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::USAT16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::USAX(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::USUB16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::USUB8(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UXTAB(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UXTAB16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UXTAH(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UXTB(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UXTB16(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; + default: throw __FUNCTION__; + } +} + +void ARMv7Interpreter::UXTH(const u32 data, const ARMv7_encoding type) +{ + switch (type) + { + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } } diff --git a/rpcs3/Emu/ARMv7/ARMv7Interpreter.h b/rpcs3/Emu/ARMv7/ARMv7Interpreter.h index 92f0cdb84c..1f7099fbe4 100644 --- a/rpcs3/Emu/ARMv7/ARMv7Interpreter.h +++ b/rpcs3/Emu/ARMv7/ARMv7Interpreter.h @@ -233,7 +233,7 @@ public: return result; } - bool ConditionPassed(u8 cond) const + bool ConditionPassed(u32 cond) const { bool result = false; @@ -261,16 +261,6 @@ protected: virtual void UNK(const u32 data); virtual void NULL_OP(const u32 data, const ARMv7_encoding type); - virtual void NOP(const u32 data, const ARMv7_encoding type); - - virtual void PUSH(const u32 data, const ARMv7_encoding type); - virtual void POP(const u32 data, const ARMv7_encoding type); - - virtual void B(const u32 data, const ARMv7_encoding type); - virtual void CBZ(const u32 data, const ARMv7_encoding type); - virtual void CBNZ(const u32 data, const ARMv7_encoding type); - virtual void BL(const u32 data, const ARMv7_encoding type); - virtual void BLX(const u32 data, const ARMv7_encoding type); virtual void ADC_IMM(const u32 data, const ARMv7_encoding type); virtual void ADC_REG(const u32 data, const ARMv7_encoding type); @@ -282,16 +272,266 @@ protected: virtual void ADD_SPI(const u32 data, const ARMv7_encoding type); virtual void ADD_SPR(const u32 data, const ARMv7_encoding type); + virtual void ADR(const u32 data, const ARMv7_encoding type); + + virtual void AND_IMM(const u32 data, const ARMv7_encoding type); + virtual void AND_REG(const u32 data, const ARMv7_encoding type); + virtual void AND_RSR(const u32 data, const ARMv7_encoding type); + + virtual void ASR_IMM(const u32 data, const ARMv7_encoding type); + virtual void ASR_REG(const u32 data, const ARMv7_encoding type); + + virtual void B(const u32 data, const ARMv7_encoding type); + + virtual void BFC(const u32 data, const ARMv7_encoding type); + virtual void BFI(const u32 data, const ARMv7_encoding type); + + virtual void BIC_IMM(const u32 data, const ARMv7_encoding type); + virtual void BIC_REG(const u32 data, const ARMv7_encoding type); + virtual void BIC_RSR(const u32 data, const ARMv7_encoding type); + + virtual void BKPT(const u32 data, const ARMv7_encoding type); + + virtual void BL(const u32 data, const ARMv7_encoding type); + virtual void BLX(const u32 data, const ARMv7_encoding type); + virtual void BX(const u32 data, const ARMv7_encoding type); + + virtual void CB_Z(const u32 data, const ARMv7_encoding type); + + virtual void CLZ(const u32 data, const ARMv7_encoding type); + + virtual void CMN_IMM(const u32 data, const ARMv7_encoding type); + virtual void CMN_REG(const u32 data, const ARMv7_encoding type); + virtual void CMN_RSR(const u32 data, const ARMv7_encoding type); + + virtual void CMP_IMM(const u32 data, const ARMv7_encoding type); + virtual void CMP_REG(const u32 data, const ARMv7_encoding type); + virtual void CMP_RSR(const u32 data, const ARMv7_encoding type); + + virtual void DBG(const u32 data, const ARMv7_encoding type); + + virtual void EOR_IMM(const u32 data, const ARMv7_encoding type); + virtual void EOR_REG(const u32 data, const ARMv7_encoding type); + virtual void EOR_RSR(const u32 data, const ARMv7_encoding type); + + virtual void IT(const u32 data, const ARMv7_encoding type); + + virtual void LDM(const u32 data, const ARMv7_encoding type); + virtual void LDMDA(const u32 data, const ARMv7_encoding type); + virtual void LDMDB(const u32 data, const ARMv7_encoding type); + virtual void LDMIB(const u32 data, const ARMv7_encoding type); + + virtual void LDR_IMM(const u32 data, const ARMv7_encoding type); + virtual void LDR_LIT(const u32 data, const ARMv7_encoding type); + virtual void LDR_REG(const u32 data, const ARMv7_encoding type); + + virtual void LDRB_IMM(const u32 data, const ARMv7_encoding type); + virtual void LDRB_LIT(const u32 data, const ARMv7_encoding type); + virtual void LDRB_REG(const u32 data, const ARMv7_encoding type); + + virtual void LDRD_IMM(const u32 data, const ARMv7_encoding type); + virtual void LDRD_LIT(const u32 data, const ARMv7_encoding type); + virtual void LDRD_REG(const u32 data, const ARMv7_encoding type); + + virtual void LDRH_IMM(const u32 data, const ARMv7_encoding type); + virtual void LDRH_LIT(const u32 data, const ARMv7_encoding type); + virtual void LDRH_REG(const u32 data, const ARMv7_encoding type); + + virtual void LDRSB_IMM(const u32 data, const ARMv7_encoding type); + virtual void LDRSB_LIT(const u32 data, const ARMv7_encoding type); + virtual void LDRSB_REG(const u32 data, const ARMv7_encoding type); + + virtual void LDRSH_IMM(const u32 data, const ARMv7_encoding type); + virtual void LDRSH_LIT(const u32 data, const ARMv7_encoding type); + virtual void LDRSH_REG(const u32 data, const ARMv7_encoding type); + + virtual void LSL_IMM(const u32 data, const ARMv7_encoding type); + virtual void LSL_REG(const u32 data, const ARMv7_encoding type); + + virtual void LSR_IMM(const u32 data, const ARMv7_encoding type); + virtual void LSR_REG(const u32 data, const ARMv7_encoding type); + + virtual void MLA(const u32 data, const ARMv7_encoding type); + virtual void MLS(const u32 data, const ARMv7_encoding type); + virtual void MOV_IMM(const u32 data, const ARMv7_encoding type); virtual void MOV_REG(const u32 data, const ARMv7_encoding type); virtual void MOVT(const u32 data, const ARMv7_encoding type); + virtual void MRS(const u32 data, const ARMv7_encoding type); + virtual void MSR_IMM(const u32 data, const ARMv7_encoding type); + virtual void MSR_REG(const u32 data, const ARMv7_encoding type); + + virtual void MUL(const u32 data, const ARMv7_encoding type); + + virtual void MVN_IMM(const u32 data, const ARMv7_encoding type); + virtual void MVN_REG(const u32 data, const ARMv7_encoding type); + virtual void MVN_RSR(const u32 data, const ARMv7_encoding type); + + virtual void NEG(const u32 data, const ARMv7_encoding type); + + virtual void NOP(const u32 data, const ARMv7_encoding type); + + virtual void ORN_IMM(const u32 data, const ARMv7_encoding type); + virtual void ORN_REG(const u32 data, const ARMv7_encoding type); + + virtual void ORR_IMM(const u32 data, const ARMv7_encoding type); + virtual void ORR_REG(const u32 data, const ARMv7_encoding type); + virtual void ORR_RSR(const u32 data, const ARMv7_encoding type); + + virtual void PKH(const u32 data, const ARMv7_encoding type); + + virtual void POP(const u32 data, const ARMv7_encoding type); + virtual void PUSH(const u32 data, const ARMv7_encoding type); + + virtual void QADD(const u32 data, const ARMv7_encoding type); + virtual void QADD16(const u32 data, const ARMv7_encoding type); + virtual void QADD8(const u32 data, const ARMv7_encoding type); + virtual void QASX(const u32 data, const ARMv7_encoding type); + virtual void QDADD(const u32 data, const ARMv7_encoding type); + virtual void QDSUB(const u32 data, const ARMv7_encoding type); + virtual void QSAX(const u32 data, const ARMv7_encoding type); + virtual void QSUB(const u32 data, const ARMv7_encoding type); + virtual void QSUB16(const u32 data, const ARMv7_encoding type); + virtual void QSUB8(const u32 data, const ARMv7_encoding type); + + virtual void RBIT(const u32 data, const ARMv7_encoding type); + virtual void REV(const u32 data, const ARMv7_encoding type); + virtual void REV16(const u32 data, const ARMv7_encoding type); + virtual void REVSH(const u32 data, const ARMv7_encoding type); + + virtual void ROR_IMM(const u32 data, const ARMv7_encoding type); + virtual void ROR_REG(const u32 data, const ARMv7_encoding type); + + virtual void RRX(const u32 data, const ARMv7_encoding type); + + virtual void RSB_IMM(const u32 data, const ARMv7_encoding type); + virtual void RSB_REG(const u32 data, const ARMv7_encoding type); + virtual void RSB_RSR(const u32 data, const ARMv7_encoding type); + + virtual void RSC_IMM(const u32 data, const ARMv7_encoding type); + virtual void RSC_REG(const u32 data, const ARMv7_encoding type); + virtual void RSC_RSR(const u32 data, const ARMv7_encoding type); + + virtual void SADD16(const u32 data, const ARMv7_encoding type); + virtual void SADD8(const u32 data, const ARMv7_encoding type); + virtual void SASX(const u32 data, const ARMv7_encoding type); + + virtual void SBC_IMM(const u32 data, const ARMv7_encoding type); + virtual void SBC_REG(const u32 data, const ARMv7_encoding type); + virtual void SBC_RSR(const u32 data, const ARMv7_encoding type); + + virtual void SBFX(const u32 data, const ARMv7_encoding type); + + virtual void SDIV(const u32 data, const ARMv7_encoding type); + + virtual void SEL(const u32 data, const ARMv7_encoding type); + + virtual void SHADD16(const u32 data, const ARMv7_encoding type); + virtual void SHADD8(const u32 data, const ARMv7_encoding type); + virtual void SHASX(const u32 data, const ARMv7_encoding type); + virtual void SHSAX(const u32 data, const ARMv7_encoding type); + virtual void SHSUB16(const u32 data, const ARMv7_encoding type); + virtual void SHSUB8(const u32 data, const ARMv7_encoding type); + + virtual void SMLA__(const u32 data, const ARMv7_encoding type); + virtual void SMLAD(const u32 data, const ARMv7_encoding type); + virtual void SMLAL(const u32 data, const ARMv7_encoding type); + virtual void SMLAL__(const u32 data, const ARMv7_encoding type); + virtual void SMLALD(const u32 data, const ARMv7_encoding type); + virtual void SMLAW_(const u32 data, const ARMv7_encoding type); + virtual void SMLSD(const u32 data, const ARMv7_encoding type); + virtual void SMLSLD(const u32 data, const ARMv7_encoding type); + virtual void SMMLA(const u32 data, const ARMv7_encoding type); + virtual void SMMLS(const u32 data, const ARMv7_encoding type); + virtual void SMMUL(const u32 data, const ARMv7_encoding type); + virtual void SMUAD(const u32 data, const ARMv7_encoding type); + virtual void SMUL__(const u32 data, const ARMv7_encoding type); + virtual void SMULL(const u32 data, const ARMv7_encoding type); + virtual void SMULW_(const u32 data, const ARMv7_encoding type); + virtual void SMUSD(const u32 data, const ARMv7_encoding type); + + virtual void SSAT(const u32 data, const ARMv7_encoding type); + virtual void SSAT16(const u32 data, const ARMv7_encoding type); + virtual void SSAX(const u32 data, const ARMv7_encoding type); + virtual void SSUB16(const u32 data, const ARMv7_encoding type); + virtual void SSUB8(const u32 data, const ARMv7_encoding type); + + virtual void STM(const u32 data, const ARMv7_encoding type); + virtual void STMDA(const u32 data, const ARMv7_encoding type); + virtual void STMDB(const u32 data, const ARMv7_encoding type); + virtual void STMIB(const u32 data, const ARMv7_encoding type); + + virtual void STR_IMM(const u32 data, const ARMv7_encoding type); + virtual void STR_REG(const u32 data, const ARMv7_encoding type); + + virtual void STRB_IMM(const u32 data, const ARMv7_encoding type); + virtual void STRB_REG(const u32 data, const ARMv7_encoding type); + + virtual void STRD_IMM(const u32 data, const ARMv7_encoding type); + virtual void STRD_REG(const u32 data, const ARMv7_encoding type); + + virtual void STRH_IMM(const u32 data, const ARMv7_encoding type); + virtual void STRH_REG(const u32 data, const ARMv7_encoding type); + virtual void SUB_IMM(const u32 data, const ARMv7_encoding type); virtual void SUB_REG(const u32 data, const ARMv7_encoding type); virtual void SUB_RSR(const u32 data, const ARMv7_encoding type); virtual void SUB_SPI(const u32 data, const ARMv7_encoding type); virtual void SUB_SPR(const u32 data, const ARMv7_encoding type); - virtual void STR_IMM(const u32 data, const ARMv7_encoding type); - virtual void STR_REG(const u32 data, const ARMv7_encoding type); + virtual void SVC(const u32 data, const ARMv7_encoding type); + + virtual void SWP_(const u32 data, const ARMv7_encoding type); + + virtual void SXTAB(const u32 data, const ARMv7_encoding type); + virtual void SXTAB16(const u32 data, const ARMv7_encoding type); + virtual void SXTAH(const u32 data, const ARMv7_encoding type); + virtual void SXTB(const u32 data, const ARMv7_encoding type); + virtual void SXTB16(const u32 data, const ARMv7_encoding type); + virtual void SXTH(const u32 data, const ARMv7_encoding type); + + virtual void TB_(const u32 data, const ARMv7_encoding type); + + virtual void TEQ_IMM(const u32 data, const ARMv7_encoding type); + virtual void TEQ_REG(const u32 data, const ARMv7_encoding type); + virtual void TEQ_RSR(const u32 data, const ARMv7_encoding type); + + virtual void TST_IMM(const u32 data, const ARMv7_encoding type); + virtual void TST_REG(const u32 data, const ARMv7_encoding type); + virtual void TST_RSR(const u32 data, const ARMv7_encoding type); + + virtual void UADD16(const u32 data, const ARMv7_encoding type); + virtual void UADD8(const u32 data, const ARMv7_encoding type); + virtual void UASX(const u32 data, const ARMv7_encoding type); + virtual void UBFX(const u32 data, const ARMv7_encoding type); + virtual void UDIV(const u32 data, const ARMv7_encoding type); + virtual void UHADD16(const u32 data, const ARMv7_encoding type); + virtual void UHADD8(const u32 data, const ARMv7_encoding type); + virtual void UHASX(const u32 data, const ARMv7_encoding type); + virtual void UHSAX(const u32 data, const ARMv7_encoding type); + virtual void UHSUB16(const u32 data, const ARMv7_encoding type); + virtual void UHSUB8(const u32 data, const ARMv7_encoding type); + virtual void UMAAL(const u32 data, const ARMv7_encoding type); + virtual void UMLAL(const u32 data, const ARMv7_encoding type); + virtual void UMULL(const u32 data, const ARMv7_encoding type); + virtual void UQADD16(const u32 data, const ARMv7_encoding type); + virtual void UQADD8(const u32 data, const ARMv7_encoding type); + virtual void UQASX(const u32 data, const ARMv7_encoding type); + virtual void UQSAX(const u32 data, const ARMv7_encoding type); + virtual void UQSUB16(const u32 data, const ARMv7_encoding type); + virtual void UQSUB8(const u32 data, const ARMv7_encoding type); + virtual void USAD8(const u32 data, const ARMv7_encoding type); + virtual void USADA8(const u32 data, const ARMv7_encoding type); + virtual void USAT(const u32 data, const ARMv7_encoding type); + virtual void USAT16(const u32 data, const ARMv7_encoding type); + virtual void USAX(const u32 data, const ARMv7_encoding type); + virtual void USUB16(const u32 data, const ARMv7_encoding type); + virtual void USUB8(const u32 data, const ARMv7_encoding type); + virtual void UXTAB(const u32 data, const ARMv7_encoding type); + virtual void UXTAB16(const u32 data, const ARMv7_encoding type); + virtual void UXTAH(const u32 data, const ARMv7_encoding type); + virtual void UXTB(const u32 data, const ARMv7_encoding type); + virtual void UXTB16(const u32 data, const ARMv7_encoding type); + virtual void UXTH(const u32 data, const ARMv7_encoding type); }; diff --git a/rpcs3/Emu/ARMv7/ARMv7Opcodes.h b/rpcs3/Emu/ARMv7/ARMv7Opcodes.h index ede8c4bd8c..5fa8af6fed 100644 --- a/rpcs3/Emu/ARMv7/ARMv7Opcodes.h +++ b/rpcs3/Emu/ARMv7/ARMv7Opcodes.h @@ -48,16 +48,6 @@ public: virtual void UNK(const u32 data) = 0; virtual void NULL_OP(const u32 data, const ARMv7_encoding type) = 0; - virtual void NOP(const u32 data, const ARMv7_encoding type) = 0; - - virtual void PUSH(const u32 data, const ARMv7_encoding type) = 0; - virtual void POP(const u32 data, const ARMv7_encoding type) = 0; - - virtual void B(const u32 data, const ARMv7_encoding type) = 0; - virtual void CBZ(const u32 data, const ARMv7_encoding type) = 0; - virtual void CBNZ(const u32 data, const ARMv7_encoding type) = 0; - virtual void BL(const u32 data, const ARMv7_encoding type) = 0; - virtual void BLX(const u32 data, const ARMv7_encoding type) = 0; virtual void ADC_IMM(const u32 data, const ARMv7_encoding type) = 0; virtual void ADC_REG(const u32 data, const ARMv7_encoding type) = 0; @@ -69,18 +59,270 @@ public: virtual void ADD_SPI(const u32 data, const ARMv7_encoding type) = 0; virtual void ADD_SPR(const u32 data, const ARMv7_encoding type) = 0; + virtual void ADR(const u32 data, const ARMv7_encoding type) = 0; + + virtual void AND_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void AND_REG(const u32 data, const ARMv7_encoding type) = 0; + virtual void AND_RSR(const u32 data, const ARMv7_encoding type) = 0; + + virtual void ASR_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void ASR_REG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void B(const u32 data, const ARMv7_encoding type) = 0; + + virtual void BFC(const u32 data, const ARMv7_encoding type) = 0; + virtual void BFI(const u32 data, const ARMv7_encoding type) = 0; + + virtual void BIC_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void BIC_REG(const u32 data, const ARMv7_encoding type) = 0; + virtual void BIC_RSR(const u32 data, const ARMv7_encoding type) = 0; + + virtual void BKPT(const u32 data, const ARMv7_encoding type) = 0; + + virtual void BL(const u32 data, const ARMv7_encoding type) = 0; + virtual void BLX(const u32 data, const ARMv7_encoding type) = 0; + virtual void BX(const u32 data, const ARMv7_encoding type) = 0; + + virtual void CB_Z(const u32 data, const ARMv7_encoding type) = 0; + + virtual void CLZ(const u32 data, const ARMv7_encoding type) = 0; + + virtual void CMN_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void CMN_REG(const u32 data, const ARMv7_encoding type) = 0; + virtual void CMN_RSR(const u32 data, const ARMv7_encoding type) = 0; + + virtual void CMP_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void CMP_REG(const u32 data, const ARMv7_encoding type) = 0; + virtual void CMP_RSR(const u32 data, const ARMv7_encoding type) = 0; + + virtual void DBG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void EOR_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void EOR_REG(const u32 data, const ARMv7_encoding type) = 0; + virtual void EOR_RSR(const u32 data, const ARMv7_encoding type) = 0; + + virtual void IT(const u32 data, const ARMv7_encoding type) = 0; + + virtual void LDM(const u32 data, const ARMv7_encoding type) = 0; + virtual void LDMDA(const u32 data, const ARMv7_encoding type) = 0; + virtual void LDMDB(const u32 data, const ARMv7_encoding type) = 0; + virtual void LDMIB(const u32 data, const ARMv7_encoding type) = 0; + + virtual void LDR_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void LDR_LIT(const u32 data, const ARMv7_encoding type) = 0; + virtual void LDR_REG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void LDRB_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void LDRB_LIT(const u32 data, const ARMv7_encoding type) = 0; + virtual void LDRB_REG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void LDRD_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void LDRD_LIT(const u32 data, const ARMv7_encoding type) = 0; + virtual void LDRD_REG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void LDRH_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void LDRH_LIT(const u32 data, const ARMv7_encoding type) = 0; + virtual void LDRH_REG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void LDRSB_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void LDRSB_LIT(const u32 data, const ARMv7_encoding type) = 0; + virtual void LDRSB_REG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void LDRSH_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void LDRSH_LIT(const u32 data, const ARMv7_encoding type) = 0; + virtual void LDRSH_REG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void LSL_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void LSL_REG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void LSR_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void LSR_REG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void MLA(const u32 data, const ARMv7_encoding type) = 0; + virtual void MLS(const u32 data, const ARMv7_encoding type) = 0; + virtual void MOV_IMM(const u32 data, const ARMv7_encoding type) = 0; virtual void MOV_REG(const u32 data, const ARMv7_encoding type) = 0; virtual void MOVT(const u32 data, const ARMv7_encoding type) = 0; + virtual void MRS(const u32 data, const ARMv7_encoding type) = 0; + virtual void MSR_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void MSR_REG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void MUL(const u32 data, const ARMv7_encoding type) = 0; + + virtual void MVN_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void MVN_REG(const u32 data, const ARMv7_encoding type) = 0; + virtual void MVN_RSR(const u32 data, const ARMv7_encoding type) = 0; + + virtual void NEG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void NOP(const u32 data, const ARMv7_encoding type) = 0; + + virtual void ORN_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void ORN_REG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void ORR_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void ORR_REG(const u32 data, const ARMv7_encoding type) = 0; + virtual void ORR_RSR(const u32 data, const ARMv7_encoding type) = 0; + + virtual void PKH(const u32 data, const ARMv7_encoding type) = 0; + + virtual void POP(const u32 data, const ARMv7_encoding type) = 0; + virtual void PUSH(const u32 data, const ARMv7_encoding type) = 0; + + virtual void QADD(const u32 data, const ARMv7_encoding type) = 0; + virtual void QADD16(const u32 data, const ARMv7_encoding type) = 0; + virtual void QADD8(const u32 data, const ARMv7_encoding type) = 0; + virtual void QASX(const u32 data, const ARMv7_encoding type) = 0; + virtual void QDADD(const u32 data, const ARMv7_encoding type) = 0; + virtual void QDSUB(const u32 data, const ARMv7_encoding type) = 0; + virtual void QSAX(const u32 data, const ARMv7_encoding type) = 0; + virtual void QSUB(const u32 data, const ARMv7_encoding type) = 0; + virtual void QSUB16(const u32 data, const ARMv7_encoding type) = 0; + virtual void QSUB8(const u32 data, const ARMv7_encoding type) = 0; + + virtual void RBIT(const u32 data, const ARMv7_encoding type) = 0; + virtual void REV(const u32 data, const ARMv7_encoding type) = 0; + virtual void REV16(const u32 data, const ARMv7_encoding type) = 0; + virtual void REVSH(const u32 data, const ARMv7_encoding type) = 0; + + virtual void ROR_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void ROR_REG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void RRX(const u32 data, const ARMv7_encoding type) = 0; + + virtual void RSB_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void RSB_REG(const u32 data, const ARMv7_encoding type) = 0; + virtual void RSB_RSR(const u32 data, const ARMv7_encoding type) = 0; + + virtual void RSC_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void RSC_REG(const u32 data, const ARMv7_encoding type) = 0; + virtual void RSC_RSR(const u32 data, const ARMv7_encoding type) = 0; + + virtual void SADD16(const u32 data, const ARMv7_encoding type) = 0; + virtual void SADD8(const u32 data, const ARMv7_encoding type) = 0; + virtual void SASX(const u32 data, const ARMv7_encoding type) = 0; + + virtual void SBC_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void SBC_REG(const u32 data, const ARMv7_encoding type) = 0; + virtual void SBC_RSR(const u32 data, const ARMv7_encoding type) = 0; + + virtual void SBFX(const u32 data, const ARMv7_encoding type) = 0; + + virtual void SDIV(const u32 data, const ARMv7_encoding type) = 0; + + virtual void SEL(const u32 data, const ARMv7_encoding type) = 0; + + virtual void SHADD16(const u32 data, const ARMv7_encoding type) = 0; + virtual void SHADD8(const u32 data, const ARMv7_encoding type) = 0; + virtual void SHASX(const u32 data, const ARMv7_encoding type) = 0; + virtual void SHSAX(const u32 data, const ARMv7_encoding type) = 0; + virtual void SHSUB16(const u32 data, const ARMv7_encoding type) = 0; + virtual void SHSUB8(const u32 data, const ARMv7_encoding type) = 0; + + virtual void SMLA__(const u32 data, const ARMv7_encoding type) = 0; + virtual void SMLAD(const u32 data, const ARMv7_encoding type) = 0; + virtual void SMLAL(const u32 data, const ARMv7_encoding type) = 0; + virtual void SMLAL__(const u32 data, const ARMv7_encoding type) = 0; + virtual void SMLALD(const u32 data, const ARMv7_encoding type) = 0; + virtual void SMLAW_(const u32 data, const ARMv7_encoding type) = 0; + virtual void SMLSD(const u32 data, const ARMv7_encoding type) = 0; + virtual void SMLSLD(const u32 data, const ARMv7_encoding type) = 0; + virtual void SMMLA(const u32 data, const ARMv7_encoding type) = 0; + virtual void SMMLS(const u32 data, const ARMv7_encoding type) = 0; + virtual void SMMUL(const u32 data, const ARMv7_encoding type) = 0; + virtual void SMUAD(const u32 data, const ARMv7_encoding type) = 0; + virtual void SMUL__(const u32 data, const ARMv7_encoding type) = 0; + virtual void SMULL(const u32 data, const ARMv7_encoding type) = 0; + virtual void SMULW_(const u32 data, const ARMv7_encoding type) = 0; + virtual void SMUSD(const u32 data, const ARMv7_encoding type) = 0; + + virtual void SSAT(const u32 data, const ARMv7_encoding type) = 0; + virtual void SSAT16(const u32 data, const ARMv7_encoding type) = 0; + virtual void SSAX(const u32 data, const ARMv7_encoding type) = 0; + virtual void SSUB16(const u32 data, const ARMv7_encoding type) = 0; + virtual void SSUB8(const u32 data, const ARMv7_encoding type) = 0; + + virtual void STM(const u32 data, const ARMv7_encoding type) = 0; + virtual void STMDA(const u32 data, const ARMv7_encoding type) = 0; + virtual void STMDB(const u32 data, const ARMv7_encoding type) = 0; + virtual void STMIB(const u32 data, const ARMv7_encoding type) = 0; + + virtual void STR_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void STR_REG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void STRB_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void STRB_REG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void STRD_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void STRD_REG(const u32 data, const ARMv7_encoding type) = 0; + + virtual void STRH_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void STRH_REG(const u32 data, const ARMv7_encoding type) = 0; + virtual void SUB_IMM(const u32 data, const ARMv7_encoding type) = 0; virtual void SUB_REG(const u32 data, const ARMv7_encoding type) = 0; virtual void SUB_RSR(const u32 data, const ARMv7_encoding type) = 0; virtual void SUB_SPI(const u32 data, const ARMv7_encoding type) = 0; virtual void SUB_SPR(const u32 data, const ARMv7_encoding type) = 0; - virtual void STR_IMM(const u32 data, const ARMv7_encoding type) = 0; - virtual void STR_REG(const u32 data, const ARMv7_encoding type) = 0; + virtual void SVC(const u32 data, const ARMv7_encoding type) = 0; + + virtual void SWP_(const u32 data, const ARMv7_encoding type) = 0; + + virtual void SXTAB(const u32 data, const ARMv7_encoding type) = 0; + virtual void SXTAB16(const u32 data, const ARMv7_encoding type) = 0; + virtual void SXTAH(const u32 data, const ARMv7_encoding type) = 0; + virtual void SXTB(const u32 data, const ARMv7_encoding type) = 0; + virtual void SXTB16(const u32 data, const ARMv7_encoding type) = 0; + virtual void SXTH(const u32 data, const ARMv7_encoding type) = 0; + + virtual void TB_(const u32 data, const ARMv7_encoding type) = 0; + + virtual void TEQ_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void TEQ_REG(const u32 data, const ARMv7_encoding type) = 0; + virtual void TEQ_RSR(const u32 data, const ARMv7_encoding type) = 0; + + virtual void TST_IMM(const u32 data, const ARMv7_encoding type) = 0; + virtual void TST_REG(const u32 data, const ARMv7_encoding type) = 0; + virtual void TST_RSR(const u32 data, const ARMv7_encoding type) = 0; + + virtual void UADD16(const u32 data, const ARMv7_encoding type) = 0; + virtual void UADD8(const u32 data, const ARMv7_encoding type) = 0; + virtual void UASX(const u32 data, const ARMv7_encoding type) = 0; + virtual void UBFX(const u32 data, const ARMv7_encoding type) = 0; + virtual void UDIV(const u32 data, const ARMv7_encoding type) = 0; + virtual void UHADD16(const u32 data, const ARMv7_encoding type) = 0; + virtual void UHADD8(const u32 data, const ARMv7_encoding type) = 0; + virtual void UHASX(const u32 data, const ARMv7_encoding type) = 0; + virtual void UHSAX(const u32 data, const ARMv7_encoding type) = 0; + virtual void UHSUB16(const u32 data, const ARMv7_encoding type) = 0; + virtual void UHSUB8(const u32 data, const ARMv7_encoding type) = 0; + virtual void UMAAL(const u32 data, const ARMv7_encoding type) = 0; + virtual void UMLAL(const u32 data, const ARMv7_encoding type) = 0; + virtual void UMULL(const u32 data, const ARMv7_encoding type) = 0; + virtual void UQADD16(const u32 data, const ARMv7_encoding type) = 0; + virtual void UQADD8(const u32 data, const ARMv7_encoding type) = 0; + virtual void UQASX(const u32 data, const ARMv7_encoding type) = 0; + virtual void UQSAX(const u32 data, const ARMv7_encoding type) = 0; + virtual void UQSUB16(const u32 data, const ARMv7_encoding type) = 0; + virtual void UQSUB8(const u32 data, const ARMv7_encoding type) = 0; + virtual void USAD8(const u32 data, const ARMv7_encoding type) = 0; + virtual void USADA8(const u32 data, const ARMv7_encoding type) = 0; + virtual void USAT(const u32 data, const ARMv7_encoding type) = 0; + virtual void USAT16(const u32 data, const ARMv7_encoding type) = 0; + virtual void USAX(const u32 data, const ARMv7_encoding type) = 0; + virtual void USUB16(const u32 data, const ARMv7_encoding type) = 0; + virtual void USUB8(const u32 data, const ARMv7_encoding type) = 0; + virtual void UXTAB(const u32 data, const ARMv7_encoding type) = 0; + virtual void UXTAB16(const u32 data, const ARMv7_encoding type) = 0; + virtual void UXTAH(const u32 data, const ARMv7_encoding type) = 0; + virtual void UXTB(const u32 data, const ARMv7_encoding type) = 0; + virtual void UXTB16(const u32 data, const ARMv7_encoding type) = 0; + virtual void UXTH(const u32 data, const ARMv7_encoding type) = 0; + + // TODO: vector ops }; struct ARMv7_opcode_t @@ -101,32 +343,6 @@ struct ARMv7_opcode_t static const ARMv7_opcode_t ARMv7_opcode_table[] = { ARMv7_OP2(0xffff, 0x0000, T1, NULL_OP), - ARMv7_OP2(0xffff, 0xbf00, T1, NOP), - ARMv7_OP4(0xffff, 0xffff, 0xf3af, 0x8000, T2, NOP), - ARMv7_OP4(0x0fff, 0xffff, 0x0320, 0xf000, A1, NOP), - ARMv7_OP2(0xfe00, 0xb400, T1, PUSH), - ARMv7_OP4(0xffff, 0x0000, 0xe92d, 0x0000, T2, PUSH), // had an error in arch ref - ARMv7_OP4(0xffff, 0x0fff, 0xf84d, 0x0d04, T3, PUSH), - ARMv7_OP4(0x0fff, 0x0000, 0x092d, 0x0000, A1, PUSH), - ARMv7_OP4(0x0fff, 0x0fff, 0x052d, 0x0004, A2, PUSH), - ARMv7_OP2(0xfe00, 0xbc00, T1, POP), - ARMv7_OP4(0xffff, 0x0000, 0xe8bd, 0x0000, T2, POP), - ARMv7_OP4(0xffff, 0x0fff, 0xf85d, 0x0b04, T3, POP), - ARMv7_OP4(0x0fff, 0x0000, 0x08bd, 0x0000, A1, POP), - ARMv7_OP4(0x0fff, 0x0fff, 0x049d, 0x0004, A2, POP), - ARMv7_OP2(0xf000, 0xd000, T1, B), - ARMv7_OP2(0xf800, 0xe000, T2, B), - ARMv7_OP4(0xf800, 0xd000, 0xf000, 0x8000, T3, B), - ARMv7_OP4(0xf800, 0xd000, 0xf000, 0x9000, T4, B), - ARMv7_OP4(0x0f00, 0x0000, 0x0a00, 0x0000, A1, B), - ARMv7_OP2(0xfd00, 0xb100, T1, CBZ), - ARMv7_OP2(0xfd00, 0xb900, T1, CBNZ), - ARMv7_OP4(0xf800, 0xd000, 0xf000, 0xd000, T1, BL), - ARMv7_OP4(0x0f00, 0x0000, 0x0b00, 0x0000, A1, BL), - ARMv7_OP2(0xff80, 0x4780, T1, BLX), - ARMv7_OP4(0xf800, 0xc001, 0xf000, 0xc000, T2, BLX), - ARMv7_OP4(0x0fff, 0xfff0, 0x012f, 0xff30, A1, BLX), - ARMv7_OP4(0xfe00, 0x0000, 0xfa00, 0x0000, A2, BLX), ARMv7_OP4(0xfbe0, 0x8000, 0xf140, 0x0000, T1, ADC_IMM), ARMv7_OP4(0x0fe0, 0x0000, 0x02a0, 0x0000, A1, ADC_IMM), @@ -155,6 +371,64 @@ static const ARMv7_opcode_t ARMv7_opcode_table[] = ARMv7_OP4(0xffef, 0x8000, 0xeb0d, 0x0000, T3, ADD_SPR), ARMv7_OP4(0x0fef, 0x0010, 0x008d, 0x0000, A1, ADD_SPR), + ARMv7_OP2(0xf800, 0xa000, T1, ADR), + ARMv7_OP4(0xfbff, 0x8000, 0xf2af, 0x0000, T2, ADR), + ARMv7_OP4(0xfbff, 0x8000, 0xf20f, 0x0000, T3, ADR), + ARMv7_OP4(0x0fff, 0x0000, 0x028f, 0x0000, A1, ADR), + ARMv7_OP4(0x0fff, 0x0000, 0x024f, 0x0000, A2, ADR), + + ARMv7_OP4(0xfbe0, 0x8000, 0xf000, 0x0000, T1, AND_IMM), + ARMv7_OP4(0x0fe0, 0x0000, 0x0200, 0x0000, A1, AND_IMM), + ARMv7_OP2(0xffc0, 0x4000, T1, AND_REG), + ARMv7_OP4(0xffe0, 0x8000, 0xea00, 0x0000, T2, AND_REG), + ARMv7_OP4(0x0fe0, 0x0010, 0x0000, 0x0000, A1, AND_REG), + ARMv7_OP4(0x0fe0, 0x0090, 0x0000, 0x0010, A1, AND_RSR), + + ARMv7_OP2(0xf800, 0x1000, T1, ASR_IMM), + ARMv7_OP4(0xffef, 0x8030, 0xea4f, 0x0020, T2, ASR_IMM), + ARMv7_OP4(0x0fef, 0x0070, 0x01a0, 0x0040, A1, ASR_IMM), + ARMv7_OP2(0xffc0, 0x4100, T1, ASR_REG), + ARMv7_OP4(0xffe0, 0xf0f0, 0xfa40, 0xf000, T2, ASR_REG), + ARMv7_OP4(0x0fef, 0x00f0, 0x01a0, 0x0050, A1, ASR_REG), + + ARMv7_OP2(0xf000, 0xd000, T1, B), + ARMv7_OP2(0xf800, 0xe000, T2, B), + ARMv7_OP4(0xf800, 0xd000, 0xf000, 0x8000, T3, B), + ARMv7_OP4(0xf800, 0xd000, 0xf000, 0x9000, T4, B), + ARMv7_OP4(0x0f00, 0x0000, 0x0a00, 0x0000, A1, B), + + ARMv7_OP4(0xffff, 0x8020, 0xf36f, 0x0000, T1, BFC), + ARMv7_OP4(0x0fe0, 0x007f, 0x07c0, 0x001f, A1, BFC), + ARMv7_OP4(0xfff0, 0x8020, 0xf360, 0x0000, T1, BFI), + ARMv7_OP4(0x0fe0, 0x0070, 0x07c0, 0x0010, A1, BFI), + + ARMv7_OP4(0xfbe0, 0x8000, 0xf020, 0x0000, T1, BIC_IMM), + ARMv7_OP4(0x0fe0, 0x0000, 0x03c0, 0x0000, A1, BIC_IMM), + ARMv7_OP2(0xffc0, 0x4380, T1, BIC_REG), + ARMv7_OP4(0xffe0, 0x8000, 0xea20, 0x0000, T2, BIC_REG), + ARMv7_OP4(0x0fe0, 0x0010, 0x01c0, 0x0000, A1, BIC_REG), + ARMv7_OP4(0x0fe0, 0x0090, 0x01c0, 0x0010, A1, BIC_RSR), + + ARMv7_OP2(0xff00, 0xbe00, T1, BKPT), + ARMv7_OP4(0x0ff0, 0x00f0, 0x0120, 0x0070, A1, BKPT), + + ARMv7_OP4(0xf800, 0xd000, 0xf000, 0xd000, T1, BL), + ARMv7_OP4(0x0f00, 0x0000, 0x0b00, 0x0000, A1, BL), + ARMv7_OP2(0xff80, 0x4780, T1, BLX), + ARMv7_OP4(0xf800, 0xc001, 0xf000, 0xc000, T2, BLX), + ARMv7_OP4(0x0fff, 0xfff0, 0x012f, 0xff30, A1, BLX), + ARMv7_OP4(0xfe00, 0x0000, 0xfa00, 0x0000, A2, BLX), + + ARMv7_OP2(0xff87, 0x4700, T1, BX), + ARMv7_OP4(0x0fff, 0xfff0, 0x012f, 0xff10, A1, BX), + + ARMv7_OP2(0xf500, 0xb100, T1, CB_Z), + + ARMv7_OP4(0xfff0, 0xf0f0, 0xfab0, 0xf080, T1, CLZ), + ARMv7_OP4(0x0fff, 0x0ff0, 0x016f, 0x0f10, A1, CLZ), + + // + ARMv7_OP2(0xf800, 0x2000, T1, MOV_IMM), ARMv7_OP4(0xfbef, 0x8000, 0xf04f, 0x0000, T2, MOV_IMM), ARMv7_OP4(0xfbf0, 0x8000, 0xf240, 0x0000, T3, MOV_IMM), @@ -167,6 +441,39 @@ static const ARMv7_opcode_t ARMv7_opcode_table[] = ARMv7_OP4(0xfbf0, 0x8000, 0xf2c0, 0x0000, T1, MOVT), ARMv7_OP4(0x0ff0, 0x0000, 0x0340, 0x0000, A1, MOVT), + // + + ARMv7_OP2(0xffff, 0xbf00, T1, NOP), + ARMv7_OP4(0xffff, 0xffff, 0xf3af, 0x8000, T2, NOP), + ARMv7_OP4(0x0fff, 0xffff, 0x0320, 0xf000, A1, NOP), + + // + + ARMv7_OP2(0xfe00, 0xbc00, T1, POP), + ARMv7_OP4(0xffff, 0x0000, 0xe8bd, 0x0000, T2, POP), + ARMv7_OP4(0xffff, 0x0fff, 0xf85d, 0x0b04, T3, POP), + ARMv7_OP4(0x0fff, 0x0000, 0x08bd, 0x0000, A1, POP), + ARMv7_OP4(0x0fff, 0x0fff, 0x049d, 0x0004, A2, POP), + + ARMv7_OP2(0xfe00, 0xb400, T1, PUSH), + ARMv7_OP4(0xffff, 0x0000, 0xe92d, 0x0000, T2, PUSH), // had an error in arch ref + ARMv7_OP4(0xffff, 0x0fff, 0xf84d, 0x0d04, T3, PUSH), + ARMv7_OP4(0x0fff, 0x0000, 0x092d, 0x0000, A1, PUSH), + ARMv7_OP4(0x0fff, 0x0fff, 0x052d, 0x0004, A2, PUSH), + + // + + ARMv7_OP2(0xf800, 0x6000, T1, STR_IMM), + ARMv7_OP2(0xf800, 0x9000, T2, STR_IMM), + ARMv7_OP4(0xfff0, 0x0000, 0xf8c0, 0x0000, T3, STR_IMM), + ARMv7_OP4(0xfff0, 0x0800, 0xf840, 0x0800, T4, STR_IMM), + ARMv7_OP4(0x0e50, 0x0000, 0x0400, 0x0000, A1, STR_IMM), + ARMv7_OP2(0xfe00, 0x5000, T1, STR_REG), + ARMv7_OP4(0xfff0, 0x0fc0, 0xf840, 0x0000, T2, STR_REG), + ARMv7_OP4(0x0e50, 0x0010, 0x0600, 0x0000, A1, STR_REG), + + // + ARMv7_OP2(0xfe00, 0x1e00, T1, SUB_IMM), ARMv7_OP2(0xf800, 0x3800, T2, SUB_IMM), ARMv7_OP4(0xfbe0, 0x8000, 0xf1a0, 0x0000, T3, SUB_IMM), @@ -182,15 +489,6 @@ static const ARMv7_opcode_t ARMv7_opcode_table[] = ARMv7_OP4(0x0fef, 0x0000, 0x024d, 0x0000, A1, SUB_SPI), ARMv7_OP4(0xffef, 0x8000, 0xebad, 0x0000, T1, SUB_SPR), ARMv7_OP4(0x0fef, 0x0010, 0x004d, 0x0000, A1, SUB_SPR), - - ARMv7_OP2(0xf800, 0x6000, T1, STR_IMM), - ARMv7_OP2(0xf800, 0x9000, T2, STR_IMM), - ARMv7_OP4(0xfff0, 0x0000, 0xf8c0, 0x0000, T3, STR_IMM), - ARMv7_OP4(0xfff0, 0x0800, 0xf840, 0x0800, T4, STR_IMM), - ARMv7_OP4(0x0e50, 0x0000, 0x0400, 0x0000, A1, STR_IMM), - ARMv7_OP2(0xfe00, 0x5000, T1, STR_REG), - ARMv7_OP4(0xfff0, 0x0fc0, 0xf840, 0x0000, T2, STR_REG), - ARMv7_OP4(0x0e50, 0x0010, 0x0600, 0x0000, A1, STR_REG), }; #undef ARMv7_OP diff --git a/rpcs3/Emu/Cell/PPCDecoder.cpp b/rpcs3/Emu/Cell/PPCDecoder.cpp index de2b55fdf9..52e28b9e91 100644 --- a/rpcs3/Emu/Cell/PPCDecoder.cpp +++ b/rpcs3/Emu/Cell/PPCDecoder.cpp @@ -8,4 +8,4 @@ u8 PPCDecoder::DecodeMemory(const u32 address) Decode(instr); return sizeof(u32); -} \ No newline at end of file +}