mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	Dyncom: Remove disassembler code
Had licensing issue around it, in addition to several bugs. Closes #1632, #1280
This commit is contained in:
		
							parent
							
								
									f0a582b218
								
							
						
					
					
						commit
						d97b977540
					
				
					 4 changed files with 2 additions and 1589 deletions
				
			
		|  | @ -1,5 +1,4 @@ | ||||||
| set(SRCS | set(SRCS | ||||||
|             arm/disassembler/arm_disasm.cpp |  | ||||||
|             arm/dynarmic/arm_dynarmic.cpp |             arm/dynarmic/arm_dynarmic.cpp | ||||||
|             arm/dynarmic/arm_dynarmic_cp15.cpp |             arm/dynarmic/arm_dynarmic_cp15.cpp | ||||||
|             arm/dyncom/arm_dyncom.cpp |             arm/dyncom/arm_dyncom.cpp | ||||||
|  | @ -178,7 +177,6 @@ set(SRCS | ||||||
| 
 | 
 | ||||||
| set(HEADERS | set(HEADERS | ||||||
|             arm/arm_interface.h |             arm/arm_interface.h | ||||||
|             arm/disassembler/arm_disasm.h |  | ||||||
|             arm/dynarmic/arm_dynarmic.h |             arm/dynarmic/arm_dynarmic.h | ||||||
|             arm/dynarmic/arm_dynarmic_cp15.h |             arm/dynarmic/arm_dynarmic_cp15.h | ||||||
|             arm/dyncom/arm_dyncom.h |             arm/dyncom/arm_dyncom.h | ||||||
|  |  | ||||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -1,238 +0,0 @@ | ||||||
| // Copyright 2006 The Android Open Source Project
 |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #include <string> |  | ||||||
| #include "common/common_types.h" |  | ||||||
| 
 |  | ||||||
| // Note: this list of opcodes must match the list used to initialize
 |  | ||||||
| // the opflags[] array in opcode.cpp.
 |  | ||||||
| enum Opcode { |  | ||||||
|     OP_INVALID, |  | ||||||
|     OP_UNDEFINED, |  | ||||||
|     OP_ADC, |  | ||||||
|     OP_ADD, |  | ||||||
|     OP_AND, |  | ||||||
|     OP_B, |  | ||||||
|     OP_BL, |  | ||||||
|     OP_BIC, |  | ||||||
|     OP_BKPT, |  | ||||||
|     OP_BLX, |  | ||||||
|     OP_BX, |  | ||||||
|     OP_CDP, |  | ||||||
|     OP_CLREX, |  | ||||||
|     OP_CLZ, |  | ||||||
|     OP_CMN, |  | ||||||
|     OP_CMP, |  | ||||||
|     OP_EOR, |  | ||||||
|     OP_LDC, |  | ||||||
|     OP_LDM, |  | ||||||
|     OP_LDR, |  | ||||||
|     OP_LDRB, |  | ||||||
|     OP_LDRBT, |  | ||||||
|     OP_LDREX, |  | ||||||
|     OP_LDREXB, |  | ||||||
|     OP_LDREXD, |  | ||||||
|     OP_LDREXH, |  | ||||||
|     OP_LDRH, |  | ||||||
|     OP_LDRSB, |  | ||||||
|     OP_LDRSH, |  | ||||||
|     OP_LDRT, |  | ||||||
|     OP_MCR, |  | ||||||
|     OP_MLA, |  | ||||||
|     OP_MOV, |  | ||||||
|     OP_MRC, |  | ||||||
|     OP_MRS, |  | ||||||
|     OP_MSR, |  | ||||||
|     OP_MUL, |  | ||||||
|     OP_MVN, |  | ||||||
|     OP_NOP, |  | ||||||
|     OP_ORR, |  | ||||||
|     OP_PKH, |  | ||||||
|     OP_PLD, |  | ||||||
|     OP_QADD16, |  | ||||||
|     OP_QADD8, |  | ||||||
|     OP_QASX, |  | ||||||
|     OP_QSAX, |  | ||||||
|     OP_QSUB16, |  | ||||||
|     OP_QSUB8, |  | ||||||
|     OP_REV, |  | ||||||
|     OP_REV16, |  | ||||||
|     OP_REVSH, |  | ||||||
|     OP_RSB, |  | ||||||
|     OP_RSC, |  | ||||||
|     OP_SADD16, |  | ||||||
|     OP_SADD8, |  | ||||||
|     OP_SASX, |  | ||||||
|     OP_SBC, |  | ||||||
|     OP_SEL, |  | ||||||
|     OP_SEV, |  | ||||||
|     OP_SHADD16, |  | ||||||
|     OP_SHADD8, |  | ||||||
|     OP_SHASX, |  | ||||||
|     OP_SHSAX, |  | ||||||
|     OP_SHSUB16, |  | ||||||
|     OP_SHSUB8, |  | ||||||
|     OP_SMLAD, |  | ||||||
|     OP_SMLAL, |  | ||||||
|     OP_SMLALD, |  | ||||||
|     OP_SMLSD, |  | ||||||
|     OP_SMLSLD, |  | ||||||
|     OP_SMMLA, |  | ||||||
|     OP_SMMLS, |  | ||||||
|     OP_SMMUL, |  | ||||||
|     OP_SMUAD, |  | ||||||
|     OP_SMULL, |  | ||||||
|     OP_SMUSD, |  | ||||||
|     OP_SSAT, |  | ||||||
|     OP_SSAT16, |  | ||||||
|     OP_SSAX, |  | ||||||
|     OP_SSUB16, |  | ||||||
|     OP_SSUB8, |  | ||||||
|     OP_STC, |  | ||||||
|     OP_STM, |  | ||||||
|     OP_STR, |  | ||||||
|     OP_STRB, |  | ||||||
|     OP_STRBT, |  | ||||||
|     OP_STREX, |  | ||||||
|     OP_STREXB, |  | ||||||
|     OP_STREXD, |  | ||||||
|     OP_STREXH, |  | ||||||
|     OP_STRH, |  | ||||||
|     OP_STRT, |  | ||||||
|     OP_SUB, |  | ||||||
|     OP_SWI, |  | ||||||
|     OP_SWP, |  | ||||||
|     OP_SWPB, |  | ||||||
|     OP_SXTAB, |  | ||||||
|     OP_SXTAB16, |  | ||||||
|     OP_SXTAH, |  | ||||||
|     OP_SXTB, |  | ||||||
|     OP_SXTB16, |  | ||||||
|     OP_SXTH, |  | ||||||
|     OP_TEQ, |  | ||||||
|     OP_TST, |  | ||||||
|     OP_UADD16, |  | ||||||
|     OP_UADD8, |  | ||||||
|     OP_UASX, |  | ||||||
|     OP_UHADD16, |  | ||||||
|     OP_UHADD8, |  | ||||||
|     OP_UHASX, |  | ||||||
|     OP_UHSAX, |  | ||||||
|     OP_UHSUB16, |  | ||||||
|     OP_UHSUB8, |  | ||||||
|     OP_UMLAL, |  | ||||||
|     OP_UMULL, |  | ||||||
|     OP_UQADD16, |  | ||||||
|     OP_UQADD8, |  | ||||||
|     OP_UQASX, |  | ||||||
|     OP_UQSAX, |  | ||||||
|     OP_UQSUB16, |  | ||||||
|     OP_UQSUB8, |  | ||||||
|     OP_USAD8, |  | ||||||
|     OP_USADA8, |  | ||||||
|     OP_USAT, |  | ||||||
|     OP_USAT16, |  | ||||||
|     OP_USAX, |  | ||||||
|     OP_USUB16, |  | ||||||
|     OP_USUB8, |  | ||||||
|     OP_UXTAB, |  | ||||||
|     OP_UXTAB16, |  | ||||||
|     OP_UXTAH, |  | ||||||
|     OP_UXTB, |  | ||||||
|     OP_UXTB16, |  | ||||||
|     OP_UXTH, |  | ||||||
|     OP_WFE, |  | ||||||
|     OP_WFI, |  | ||||||
|     OP_YIELD, |  | ||||||
| 
 |  | ||||||
|     // Define thumb opcodes
 |  | ||||||
|     OP_THUMB_UNDEFINED, |  | ||||||
|     OP_THUMB_ADC, |  | ||||||
|     OP_THUMB_ADD, |  | ||||||
|     OP_THUMB_AND, |  | ||||||
|     OP_THUMB_ASR, |  | ||||||
|     OP_THUMB_B, |  | ||||||
|     OP_THUMB_BIC, |  | ||||||
|     OP_THUMB_BKPT, |  | ||||||
|     OP_THUMB_BL, |  | ||||||
|     OP_THUMB_BLX, |  | ||||||
|     OP_THUMB_BX, |  | ||||||
|     OP_THUMB_CMN, |  | ||||||
|     OP_THUMB_CMP, |  | ||||||
|     OP_THUMB_EOR, |  | ||||||
|     OP_THUMB_LDMIA, |  | ||||||
|     OP_THUMB_LDR, |  | ||||||
|     OP_THUMB_LDRB, |  | ||||||
|     OP_THUMB_LDRH, |  | ||||||
|     OP_THUMB_LDRSB, |  | ||||||
|     OP_THUMB_LDRSH, |  | ||||||
|     OP_THUMB_LSL, |  | ||||||
|     OP_THUMB_LSR, |  | ||||||
|     OP_THUMB_MOV, |  | ||||||
|     OP_THUMB_MUL, |  | ||||||
|     OP_THUMB_MVN, |  | ||||||
|     OP_THUMB_NEG, |  | ||||||
|     OP_THUMB_ORR, |  | ||||||
|     OP_THUMB_POP, |  | ||||||
|     OP_THUMB_PUSH, |  | ||||||
|     OP_THUMB_ROR, |  | ||||||
|     OP_THUMB_SBC, |  | ||||||
|     OP_THUMB_STMIA, |  | ||||||
|     OP_THUMB_STR, |  | ||||||
|     OP_THUMB_STRB, |  | ||||||
|     OP_THUMB_STRH, |  | ||||||
|     OP_THUMB_SUB, |  | ||||||
|     OP_THUMB_SWI, |  | ||||||
|     OP_THUMB_TST, |  | ||||||
| 
 |  | ||||||
|     OP_END // must be last
 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| class ARM_Disasm { |  | ||||||
| public: |  | ||||||
|     static std::string Disassemble(u32 addr, u32 insn); |  | ||||||
|     static Opcode Decode(u32 insn); |  | ||||||
| 
 |  | ||||||
| private: |  | ||||||
|     static Opcode Decode00(u32 insn); |  | ||||||
|     static Opcode Decode01(u32 insn); |  | ||||||
|     static Opcode Decode10(u32 insn); |  | ||||||
|     static Opcode Decode11(u32 insn); |  | ||||||
|     static Opcode DecodeSyncPrimitive(u32 insn); |  | ||||||
|     static Opcode DecodeParallelAddSub(u32 insn); |  | ||||||
|     static Opcode DecodePackingSaturationReversal(u32 insn); |  | ||||||
|     static Opcode DecodeMUL(u32 insn); |  | ||||||
|     static Opcode DecodeMSRImmAndHints(u32 insn); |  | ||||||
|     static Opcode DecodeMediaMulDiv(u32 insn); |  | ||||||
|     static Opcode DecodeMedia(u32 insn); |  | ||||||
|     static Opcode DecodeLDRH(u32 insn); |  | ||||||
|     static Opcode DecodeALU(u32 insn); |  | ||||||
| 
 |  | ||||||
|     static std::string DisassembleALU(Opcode opcode, u32 insn); |  | ||||||
|     static std::string DisassembleBranch(u32 addr, Opcode opcode, u32 insn); |  | ||||||
|     static std::string DisassembleBX(u32 insn); |  | ||||||
|     static std::string DisassembleBKPT(u32 insn); |  | ||||||
|     static std::string DisassembleCLZ(u32 insn); |  | ||||||
|     static std::string DisassembleMediaMulDiv(Opcode opcode, u32 insn); |  | ||||||
|     static std::string DisassembleMemblock(Opcode opcode, u32 insn); |  | ||||||
|     static std::string DisassembleMem(u32 insn); |  | ||||||
|     static std::string DisassembleMemHalf(u32 insn); |  | ||||||
|     static std::string DisassembleMCR(Opcode opcode, u32 insn); |  | ||||||
|     static std::string DisassembleMLA(Opcode opcode, u32 insn); |  | ||||||
|     static std::string DisassembleUMLAL(Opcode opcode, u32 insn); |  | ||||||
|     static std::string DisassembleMUL(Opcode opcode, u32 insn); |  | ||||||
|     static std::string DisassembleMRS(u32 insn); |  | ||||||
|     static std::string DisassembleMSR(u32 insn); |  | ||||||
|     static std::string DisassembleNoOperands(Opcode opcode, u32 insn); |  | ||||||
|     static std::string DisassembleParallelAddSub(Opcode opcode, u32 insn); |  | ||||||
|     static std::string DisassemblePKH(u32 insn); |  | ||||||
|     static std::string DisassemblePLD(u32 insn); |  | ||||||
|     static std::string DisassembleREV(Opcode opcode, u32 insn); |  | ||||||
|     static std::string DisassembleREX(Opcode opcode, u32 insn); |  | ||||||
|     static std::string DisassembleSAT(Opcode opcode, u32 insn); |  | ||||||
|     static std::string DisassembleSEL(u32 insn); |  | ||||||
|     static std::string DisassembleSWI(u32 insn); |  | ||||||
|     static std::string DisassembleSWP(Opcode opcode, u32 insn); |  | ||||||
|     static std::string DisassembleXT(Opcode opcode, u32 insn); |  | ||||||
| }; |  | ||||||
|  | @ -10,7 +10,6 @@ | ||||||
| #include "common/common_types.h" | #include "common/common_types.h" | ||||||
| #include "common/logging/log.h" | #include "common/logging/log.h" | ||||||
| #include "common/microprofile.h" | #include "common/microprofile.h" | ||||||
| #include "core/arm/disassembler/arm_disasm.h" |  | ||||||
| #include "core/arm/dyncom/arm_dyncom_dec.h" | #include "core/arm/dyncom/arm_dyncom_dec.h" | ||||||
| #include "core/arm/dyncom/arm_dyncom_interpreter.h" | #include "core/arm/dyncom/arm_dyncom_interpreter.h" | ||||||
| #include "core/arm/dyncom/arm_dyncom_run.h" | #include "core/arm/dyncom/arm_dyncom_run.h" | ||||||
|  | @ -828,10 +827,8 @@ static unsigned int InterpreterTranslateInstruction(const ARMul_State* cpu, cons | ||||||
| 
 | 
 | ||||||
|     int idx; |     int idx; | ||||||
|     if (DecodeARMInstruction(inst, &idx) == ARMDecodeStatus::FAILURE) { |     if (DecodeARMInstruction(inst, &idx) == ARMDecodeStatus::FAILURE) { | ||||||
|         std::string disasm = ARM_Disasm::Disassemble(phys_addr, inst); |         LOG_ERROR(Core_ARM11, "Decode failure.\tPC: [0x%08" PRIX32 "]\tInstruction: %08" PRIX32, | ||||||
|         LOG_ERROR(Core_ARM11, |                   phys_addr, inst); | ||||||
|                   "Decode failure.\tPC: [0x%08" PRIX32 "]\tInstruction: %s [%08" PRIX32 "]", |  | ||||||
|                   phys_addr, disasm.c_str(), inst); |  | ||||||
|         LOG_ERROR(Core_ARM11, "cpsr=0x%" PRIX32 ", cpu->TFlag=%d, r15=0x%08" PRIX32, cpu->Cpsr, |         LOG_ERROR(Core_ARM11, "cpsr=0x%" PRIX32 ", cpu->TFlag=%d, r15=0x%08" PRIX32, cpu->Cpsr, | ||||||
|                   cpu->TFlag, cpu->Reg[15]); |                   cpu->TFlag, cpu->Reg[15]); | ||||||
|         CITRA_IGNORE_EXIT(-1); |         CITRA_IGNORE_EXIT(-1); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue