From bae7494a6f86a65ec8d9e013f0321a9197c26692 Mon Sep 17 00:00:00 2001 From: zilmar Date: Thu, 29 Sep 2016 21:54:12 +1000 Subject: [PATCH] [Android] Add more opcode definitions --- .../N64System/Recompiler/Arm/ArmOpCode.h | 154 +++++++++++++++++- Source/Project64-core/Project64-core.vcxproj | 1 - .../Project64-core.vcxproj.filters | 9 +- 3 files changed, 153 insertions(+), 11 deletions(-) diff --git a/Source/Project64-core/N64System/Recompiler/Arm/ArmOpCode.h b/Source/Project64-core/N64System/Recompiler/Arm/ArmOpCode.h index 13e216a3c..8b809d196 100644 --- a/Source/Project64-core/N64System/Recompiler/Arm/ArmOpCode.h +++ b/Source/Project64-core/N64System/Recompiler/Arm/ArmOpCode.h @@ -47,13 +47,6 @@ union ArmThumbOpcode unsigned opcode : 7; } Reg; - struct - { - unsigned imm8 : 8; - unsigned rdn : 3; - unsigned opcode : 5; - } Imm8; - struct { unsigned rd : 3; @@ -70,6 +63,13 @@ union ArmThumbOpcode unsigned opcode : 5; } Imm5; + struct + { + unsigned imm8 : 8; + unsigned rdn : 3; + unsigned opcode : 5; + } Imm8; + struct { unsigned rn : 3; @@ -122,6 +122,61 @@ union Arm32Opcode unsigned reserved : 1; } RnRdImm12; + struct + { + unsigned Rn : 4; + unsigned op3 : 2; + unsigned D : 1; + unsigned U : 1; + unsigned op2 : 8; + + unsigned imm8 : 8; + unsigned op1 : 4; + unsigned vd : 4; + } RnVdImm8; + + struct + { + unsigned vn : 4; + unsigned op1 : 2; + unsigned d : 1; + unsigned op2 : 9; + + unsigned vm : 4; + unsigned op3 : 1; + unsigned m : 1; + unsigned op4 : 1; + unsigned n : 1; + unsigned sz : 1; + unsigned op5 : 3; + unsigned vd : 4; + } VnVmVd; + + struct + { + unsigned rn : 4; + unsigned opcode : 12; + + unsigned rm : 4; + unsigned imm : 2; + unsigned Opcode2 : 6; + unsigned rt : 4; + } imm2; + + struct + { + unsigned rn : 4; + unsigned s : 1; + unsigned opcode : 11; + + unsigned rm : 4; + unsigned type : 2; + unsigned imm2 : 2; + unsigned rd : 4; + unsigned imm3 : 3; + unsigned opcode2 : 1; + } imm5; + struct { unsigned rn : 4; @@ -130,6 +185,20 @@ union Arm32Opcode unsigned rt : 4; } imm12; + struct + { + unsigned rn : 4; + unsigned s : 1; + unsigned opcode : 5; + unsigned i : 1; + unsigned opcode2 : 5; + + unsigned imm8 : 8; + unsigned rd : 4; + unsigned imm3 : 3; + unsigned opcode3 : 1; + } imm8_3_1; + struct { unsigned imm4 : 4; @@ -164,6 +233,77 @@ union Arm32Opcode unsigned rn : 4; unsigned opcode : 12; } uint32; + + struct + { + unsigned rm : 4; + unsigned opcode3 : 8; + unsigned rt : 4; + unsigned rn : 4; + unsigned opcode2 : 1; + unsigned w : 1; + unsigned opcode1 : 1; + unsigned u : 1; + unsigned p : 1; + unsigned opcode : 3; + unsigned cond : 4; + } reg_cond; + + struct + { + unsigned rm : 4; + unsigned opcode3 : 1; + unsigned type : 2; + unsigned imm5 : 5; + unsigned rt : 4; + unsigned rn : 4; + unsigned opcode2 : 1; + unsigned w : 1; + unsigned opcode1 : 1; + unsigned u : 1; + unsigned p : 1; + unsigned opcode : 3; + unsigned cond : 4; + } reg_cond_imm5; + + struct + { + unsigned imm12 : 12; + unsigned rt : 4; + unsigned rn : 4; + unsigned opcode2 : 1; + unsigned w : 1; + unsigned opcode1 : 1; + unsigned u : 1; + unsigned p : 1; + unsigned opcode : 3; + unsigned cond : 4; + } reg_cond_imm12; + + struct + { + unsigned opcode : 16; + + unsigned opcode2 : 12; + unsigned rt : 4; + } fpscr; + + struct + { + unsigned opcode : 16; + + unsigned rm : 4; + unsigned rotate : 2; + unsigned opcode2 : 2; + unsigned rd : 4; + unsigned opcode3 : 4; + } rotate; + + struct + { + unsigned opcode : 16; + unsigned register_list : 16; + } PushPop; }; #pragma warning(pop) diff --git a/Source/Project64-core/Project64-core.vcxproj b/Source/Project64-core/Project64-core.vcxproj index 84945c12a..11f65bee5 100644 --- a/Source/Project64-core/Project64-core.vcxproj +++ b/Source/Project64-core/Project64-core.vcxproj @@ -180,7 +180,6 @@ - diff --git a/Source/Project64-core/Project64-core.vcxproj.filters b/Source/Project64-core/Project64-core.vcxproj.filters index f711c73e9..33558e80a 100644 --- a/Source/Project64-core/Project64-core.vcxproj.filters +++ b/Source/Project64-core/Project64-core.vcxproj.filters @@ -539,9 +539,6 @@ Header Files\N64 System\Recompiler - - Header Files\N64 System\Recompiler - Header Files\N64 System\Mips @@ -650,5 +647,11 @@ Header Files\N64 System\Recompiler\Arm + + Header Files + + + Header Files + \ No newline at end of file