Merge branch 'next' of https://github.com/aquynh/capstone into next
diff --git a/arch/Mips/MipsDisassembler.c b/arch/Mips/MipsDisassembler.c
index 6ce6d5c..2d222f2 100644
--- a/arch/Mips/MipsDisassembler.c
+++ b/arch/Mips/MipsDisassembler.c
@@ -227,17 +227,19 @@
} else if (mode & CS_MODE_32) {
Bits &= ~Mips_FeatureMips16;
Bits &= ~Mips_FeatureFP64Bit;
+ Bits &= ~Mips_FeatureMips64r2;
Bits &= ~Mips_FeatureMips32r6;
Bits &= ~Mips_FeatureMips64r6;
} else if (mode & CS_MODE_64) {
Bits &= ~Mips_FeatureMips16;
Bits &= ~Mips_FeatureMips64r6;
- Bits &= ~Mips_FeatureMips64r6;
Bits &= ~Mips_FeatureMips32r6;
- }
-
- if (mode & CS_MODE_MIPS32R6) {
+ } else if (mode & CS_MODE_MIPS32R6) {
Bits |= Mips_FeatureMips32r6;
+ Bits &= ~Mips_FeatureMips16;
+ Bits &= ~Mips_FeatureFP64Bit;
+ Bits &= ~Mips_FeatureMips64r6;
+ Bits &= ~Mips_FeatureMips64r2;
}
if (mode & CS_MODE_MICRO) {
@@ -346,6 +348,8 @@
return MCDisassembler_Fail;
}
+#if 0
+ // TODO: properly handle this in the future with MIPS1/2 modes
if (((mode & CS_MODE_32) == 0) && ((mode & CS_MODE_MIPS3) == 0)) { // COP3
// DEBUG(dbgs() << "Trying COP3_ table (32-bit opcodes):\n");
Result = decodeInstruction(DecoderTableCOP3_32, instr, Insn, Address, MRI, mode);
@@ -354,6 +358,7 @@
return Result;
}
}
+#endif
if (((mode & CS_MODE_MIPS32R6) != 0) && ((mode & CS_MODE_MIPSGP64) != 0)) {
// DEBUG(dbgs() << "Trying Mips32r6_64r6 (GPR64) table (32-bit opcodes):\n");
@@ -1215,8 +1220,8 @@
static DecodeStatus DecodeBranchTarget(MCInst *Inst,
unsigned Offset, uint64_t Address, MCRegisterInfo *Decoder)
{
- int32_t BranchOffset = (SignExtend32(Offset, 16) * 4) + 4;
- MCOperand_CreateImm0(Inst, BranchOffset);
+ uint64_t TargetAddress = (SignExtend32(Offset, 16) * 4) + Address + 4;
+ MCOperand_CreateImm0(Inst, TargetAddress);
return MCDisassembler_Success;
}
@@ -1224,8 +1229,8 @@
static DecodeStatus DecodeJumpTarget(MCInst *Inst,
unsigned Insn, uint64_t Address, MCRegisterInfo *Decoder)
{
- unsigned JumpOffset = fieldFromInstruction(Insn, 0, 26) << 2;
- MCOperand_CreateImm0(Inst, JumpOffset);
+ uint64_t TargetAddress = (fieldFromInstruction(Insn, 0, 26) << 2) | ((Address + 4) & ~0x0FFFFFFF);
+ MCOperand_CreateImm0(Inst, TargetAddress);
return MCDisassembler_Success;
}
diff --git a/arch/Mips/MipsGenDisassemblerTables.inc b/arch/Mips/MipsGenDisassemblerTables.inc
index 2d1d953..6f300aa 100644
--- a/arch/Mips/MipsGenDisassemblerTables.inc
+++ b/arch/Mips/MipsGenDisassemblerTables.inc
@@ -24,6 +24,8 @@
return (insn & fieldMask) >> startBit; \
}
+#if 0
+// TODO: properly handle this in the future with MIPS1/2 modes
static uint8_t DecoderTableCOP3_32[] = {
/* 0 */ MCD_OPC_ExtractField, 26, 6, // Inst{31-26} ...
/* 3 */ MCD_OPC_FilterValue, 51, 8, 0, // Skip to: 15
@@ -41,6 +43,7 @@
/* 51 */ MCD_OPC_Fail,
0
};
+#endif
static uint8_t DecoderTableMicroMips32[] = {
/* 0 */ MCD_OPC_ExtractField, 26, 6, // Inst{31-26} ...
diff --git a/arch/Mips/MipsInstPrinter.c b/arch/Mips/MipsInstPrinter.c
index a9acc37..7bd6991 100644
--- a/arch/Mips/MipsInstPrinter.c
+++ b/arch/Mips/MipsInstPrinter.c
@@ -180,27 +180,6 @@
}
}
-// check to see if @id is opcode of a relative branch instruction
-static bool relativeBranch(unsigned int id)
-{
- static unsigned int branchIns[] = {
- Mips_BEQ, Mips_BC1F, Mips_BGEZ, Mips_BGEZAL, Mips_BGTZ,
- Mips_BLEZ, Mips_BLTZ, Mips_BLTZAL, Mips_BNE, Mips_BC1T,
- Mips_BEQL, Mips_BGEZALL, Mips_BGEZL, Mips_BGTZL, Mips_BLEZL,
- Mips_BLTZALL, Mips_BLTZL, Mips_BNEL, Mips_BC1F, Mips_BC1FL,
- Mips_BC1TL, Mips_BC0F,
- };
- int i;
-
- for(i = 0; i < ARR_SIZE(branchIns); i++) {
- if (id == branchIns[i])
- return true;
- }
-
- // not found
- return false;
-}
-
static void printOperand(MCInst *MI, unsigned OpNo, SStream *O)
{
MCOperand *Op = MCInst_getOperand(MI, OpNo);
@@ -236,10 +215,6 @@
if (MI->csh->detail)
MI->flat_insn->detail->mips.operands[MI->flat_insn->detail->mips.op_count].mem.disp = imm;
} else {
- if (relativeBranch(MI->Opcode)) {
- imm += MI->address;
- }
-
if (imm >= 0) {
if (imm > HEX_THRESHOLD)
SStream_concat(O, "0x%"PRIx64, imm);
diff --git a/arch/Mips/MipsModule.c b/arch/Mips/MipsModule.c
index 0409884..1579146 100644
--- a/arch/Mips/MipsModule.c
+++ b/arch/Mips/MipsModule.c
@@ -30,7 +30,7 @@
ud->insn_name = Mips_insn_name;
ud->group_name = Mips_group_name;
- if (ud->mode & CS_MODE_32)
+ if (ud->mode & CS_MODE_32 || ud->mode & CS_MODE_MIPS32R6)
ud->disasm = Mips_getInstruction;
else
ud->disasm = Mips64_getInstruction;
diff --git a/bindings/java/Test.java b/bindings/java/Test.java
index ecfac08..b1950ec 100644
--- a/bindings/java/Test.java
+++ b/bindings/java/Test.java
@@ -98,13 +98,13 @@
),
new platform(
Capstone.CS_ARCH_MIPS,
- Capstone.CS_MODE_32 + Capstone.CS_MODE_BIG_ENDIAN,
+ Capstone.CS_MODE_MIPS32 + Capstone.CS_MODE_BIG_ENDIAN,
new byte[] {(byte)0x0C, (byte)0x10, (byte)0x00, (byte)0x97, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x24, (byte)0x02, (byte)0x00, (byte)0x0c, (byte)0x8f, (byte)0xa2, (byte)0x00, (byte)0x00, (byte)0x34, (byte)0x21, (byte)0x34, (byte)0x56 },
"MIPS-32 (Big-endian)"
),
new platform(
Capstone.CS_ARCH_MIPS,
- Capstone.CS_MODE_64+ Capstone.CS_MODE_LITTLE_ENDIAN,
+ Capstone.CS_MODE_MIPS64+ Capstone.CS_MODE_LITTLE_ENDIAN,
new byte[] {(byte)0x56, (byte)0x34, (byte)0x21, (byte)0x34, (byte)0xc2, (byte)0x17, (byte)0x01, (byte)0x00 },
"MIPS-64-EL (Little-endian)"
),
diff --git a/bindings/java/TestMips.java b/bindings/java/TestMips.java
index 71b7cee..bb76258 100644
--- a/bindings/java/TestMips.java
+++ b/bindings/java/TestMips.java
@@ -61,8 +61,8 @@
public static void main(String argv[]) {
final Test.platform[] all_tests = {
- new Test.platform(Capstone.CS_ARCH_MIPS, Capstone.CS_MODE_32 + Capstone.CS_MODE_BIG_ENDIAN, hexString2Byte(MIPS_CODE), "MIPS-32 (Big-endian)"),
- new Test.platform(Capstone.CS_ARCH_MIPS, Capstone.CS_MODE_64 + Capstone.CS_MODE_LITTLE_ENDIAN, hexString2Byte(MIPS_CODE2), "MIPS-64-EL (Little-endian)"),
+ new Test.platform(Capstone.CS_ARCH_MIPS, Capstone.CS_MODE_MIPS32 + Capstone.CS_MODE_BIG_ENDIAN, hexString2Byte(MIPS_CODE), "MIPS-32 (Big-endian)"),
+ new Test.platform(Capstone.CS_ARCH_MIPS, Capstone.CS_MODE_MIPS64 + Capstone.CS_MODE_LITTLE_ENDIAN, hexString2Byte(MIPS_CODE2), "MIPS-64-EL (Little-endian)"),
};
for (int i=0; i<all_tests.length; i++) {
diff --git a/bindings/java/capstone/Arm_const.java b/bindings/java/capstone/Arm_const.java
index e7eb229..aefcc2c 100644
--- a/bindings/java/capstone/Arm_const.java
+++ b/bindings/java/capstone/Arm_const.java
@@ -72,6 +72,7 @@
public static final int ARM_SYSREG_CONTROL = 278;
// The memory barrier constants map directly to the 4-bit encoding of
+
// the option field for Memory Barrier operations.
public static final int ARM_MB_INVALID = 0;
@@ -766,4 +767,4 @@
public static final int ARM_GRP_DPVFP = 157;
public static final int ARM_GRP_V6M = 158;
public static final int ARM_GRP_ENDING = 159;
-}
+}
\ No newline at end of file
diff --git a/bindings/java/capstone/Capstone.java b/bindings/java/capstone/Capstone.java
index e99822f..26b5f43 100644
--- a/bindings/java/capstone/Capstone.java
+++ b/bindings/java/capstone/Capstone.java
@@ -289,11 +289,11 @@
public static final int CS_ARCH_ALL = 0xFFFF; // query id for cs_support()
// disasm mode
- public static final int CS_MODE_LITTLE_ENDIAN = 0; // default mode
+ public static final int CS_MODE_LITTLE_ENDIAN = 0; // little-endian mode (default mode)
public static final int CS_MODE_ARM = 0; // 32-bit ARM
- public static final int CS_MODE_16 = 1 << 1;
- public static final int CS_MODE_32 = 1 << 2;
- public static final int CS_MODE_64 = 1 << 3;
+ public static final int CS_MODE_16 = 1 << 1; // 16-bit mode for X86
+ public static final int CS_MODE_32 = 1 << 2; // 32-bit mode for X86
+ public static final int CS_MODE_64 = 1 << 3; // 64-bit mode for X86, PPC
public static final int CS_MODE_THUMB = 1 << 4; // ARM's Thumb mode, including Thumb-2
public static final int CS_MODE_MCLASS = 1 << 5; // ARM's Cortex-M series
public static final int CS_MODE_V8 = 1 << 6; // ARMv8 A32 encodings for ARM
@@ -301,8 +301,10 @@
public static final int CS_MODE_MIPS3 = 1 << 5; // Mips III ISA
public static final int CS_MODE_MIPS32R6 = 1 << 6; // Mips32r6 ISA
public static final int CS_MODE_MIPSGP64 = 1 << 7; // General Purpose Registers are 64-bit wide (MIPS arch)
- public static final int CS_MODE_BIG_ENDIAN = 1 << 31;
+ public static final int CS_MODE_BIG_ENDIAN = 1 << 31; // big-endian mode
public static final int CS_MODE_V9 = 1 << 4; // SparcV9 mode (Sparc arch)
+ public static final int CS_MODE_MIPS32 = CS_MODE_32; // Mips32 ISA
+ public static final int CS_MODE_MIPS64 = CS_MODE_64; // Mips64 ISA
// Capstone error
public static final int CS_ERR_OK = 0;
diff --git a/bindings/ocaml/capstone.ml b/bindings/ocaml/capstone.ml
index 27cd265..3af3abd 100644
--- a/bindings/ocaml/capstone.ml
+++ b/bindings/ocaml/capstone.ml
@@ -26,9 +26,9 @@
type mode =
| CS_MODE_LITTLE_ENDIAN (* little-endian mode (default mode) *)
| CS_MODE_ARM (* ARM mode *)
- | CS_MODE_16 (* 16-bit mode (for X86, Mips) *)
- | CS_MODE_32 (* 32-bit mode (for X86, Mips) *)
- | CS_MODE_64 (* 64-bit mode (for X86, Mips) *)
+ | CS_MODE_16 (* 16-bit mode (for X86) *)
+ | CS_MODE_32 (* 32-bit mode (for X86) *)
+ | CS_MODE_64 (* 64-bit mode (for X86, PPC) *)
| CS_MODE_THUMB (* ARM's Thumb mode, including Thumb-2 *)
| CS_MODE_MCLASS (* ARM's MClass mode *)
| CS_MODE_V8 (* ARMv8 A32 encodings for ARM *)
@@ -38,6 +38,8 @@
| CS_MODE_MIPSGP64 (* MipsGP64 mode (MIPS architecture) *)
| CS_MODE_V9 (* SparcV9 mode (Sparc architecture) *)
| CS_MODE_BIG_ENDIAN (* big-endian mode *)
+ | CS_MODE_MIPS32 (* Mips32 mode (for Mips) *)
+ | CS_MODE_MIPS64 (* Mips64 mode (for Mips) *)
(* Runtime option for the disassembled engine *)
diff --git a/bindings/ocaml/ocaml.c b/bindings/ocaml/ocaml.c
index f2de8f4..dded8a1 100644
--- a/bindings/ocaml/ocaml.c
+++ b/bindings/ocaml/ocaml.c
@@ -706,6 +706,12 @@
case 13:
mode |= CS_MODE_BIG_ENDIAN;
break;
+ case 14:
+ mode |= CS_MODE_MIPS32;
+ break;
+ case 15:
+ mode |= CS_MODE_MIPS64;
+ break;
default:
caml_invalid_argument("Invalid mode");
return Val_emptylist;
@@ -831,6 +837,12 @@
case 13:
mode |= CS_MODE_BIG_ENDIAN;
break;
+ case 14:
+ mode |= CS_MODE_MIPS32;
+ break;
+ case 15:
+ mode |= CS_MODE_MIPS64;
+ break;
default:
caml_invalid_argument("Invalid mode");
return Val_emptylist;
diff --git a/bindings/ocaml/test.ml b/bindings/ocaml/test.ml
index 6043ab0..80ad1e4 100644
--- a/bindings/ocaml/test.ml
+++ b/bindings/ocaml/test.ml
@@ -31,8 +31,8 @@
(CS_ARCH_ARM, [CS_MODE_THUMB], _THUMB_CODE, "THUMB", 0L);
(CS_ARCH_ARM, [CS_MODE_THUMB], _THUMB_CODE2, "THUMB-2", 0L);
(CS_ARCH_ARM64, [CS_MODE_ARM], _ARM64_CODE, "ARM-64", 0L);
- (CS_ARCH_MIPS, [CS_MODE_32; CS_MODE_BIG_ENDIAN], _MIPS_CODE, "MIPS-32 (Big-endian)", 0L);
- (CS_ARCH_MIPS, [CS_MODE_64; CS_MODE_LITTLE_ENDIAN], _MIPS_CODE2, "MIPS-64-EL (Little-endian)", 0L);
+ (CS_ARCH_MIPS, [CS_MODE_MIPS32; CS_MODE_BIG_ENDIAN], _MIPS_CODE, "MIPS-32 (Big-endian)", 0L);
+ (CS_ARCH_MIPS, [CS_MODE_MIPS64; CS_MODE_LITTLE_ENDIAN], _MIPS_CODE2, "MIPS-64-EL (Little-endian)", 0L);
(CS_ARCH_PPC, [CS_MODE_BIG_ENDIAN], _PPC_CODE, "PPC-64", 0L);
(CS_ARCH_PPC, [CS_MODE_BIG_ENDIAN], _PPC_CODE, "PPC-64, print register with number only", 0L);
(CS_ARCH_SPARC, [CS_MODE_BIG_ENDIAN], _SPARC_CODE, "Sparc", 0L);
diff --git a/bindings/ocaml/test_detail.ml b/bindings/ocaml/test_detail.ml
index 53b31aa..3f0fea0 100644
--- a/bindings/ocaml/test_detail.ml
+++ b/bindings/ocaml/test_detail.ml
@@ -31,9 +31,9 @@
(CS_ARCH_ARM, [CS_MODE_THUMB], _THUMB_CODE, "THUMB", 0);
(CS_ARCH_ARM, [CS_MODE_THUMB], _THUMB_CODE2, "THUMB-2", 0);
(CS_ARCH_ARM64, [CS_MODE_ARM], _ARM64_CODE, "ARM-64", 0);
- (CS_ARCH_MIPS, [CS_MODE_32; CS_MODE_BIG_ENDIAN], _MIPS_CODE, "MIPS-32 (Big-endian)", 0);
- (CS_ARCH_MIPS, [CS_MODE_64; CS_MODE_LITTLE_ENDIAN], _MIPS_CODE2, "MIPS-64-EL (Little-endian)", 0);
- (CS_ARCH_PPC, [CS_MODE_32; CS_MODE_BIG_ENDIAN], _PPC_CODE, "PPC-64", 0);
+ (CS_ARCH_MIPS, [CS_MODE_MIPS32; CS_MODE_BIG_ENDIAN], _MIPS_CODE, "MIPS-32 (Big-endian)", 0);
+ (CS_ARCH_MIPS, [CS_MODE_MIPS64; CS_MODE_LITTLE_ENDIAN], _MIPS_CODE2, "MIPS-64-EL (Little-endian)", 0);
+ (CS_ARCH_PPC, [CS_MODE_64; CS_MODE_BIG_ENDIAN], _PPC_CODE, "PPC-64", 0);
(CS_ARCH_SPARC, [CS_MODE_BIG_ENDIAN], _SPARC_CODE, "Sparc", 0);
(CS_ARCH_SPARC, [CS_MODE_BIG_ENDIAN; CS_MODE_V9], _SPARCV9_CODE, "SparcV9", 0);
(CS_ARCH_SYSZ, [CS_MODE_LITTLE_ENDIAN], _SYSZ_CODE, "SystemZ", 0);
diff --git a/bindings/ocaml/test_mips.ml b/bindings/ocaml/test_mips.ml
index 241ad8e..aef940b 100644
--- a/bindings/ocaml/test_mips.ml
+++ b/bindings/ocaml/test_mips.ml
@@ -18,8 +18,8 @@
let _MIPS_CODE2 = "\x56\x34\x21\x34\xc2\x17\x01\x00";;
let all_tests = [
- (CS_ARCH_MIPS, [CS_MODE_32; CS_MODE_BIG_ENDIAN], _MIPS_CODE, "MIPS-32 (Big-endian)");
- (CS_ARCH_MIPS, [CS_MODE_64; CS_MODE_LITTLE_ENDIAN], _MIPS_CODE2, "MIPS-64-EL (Little-endian)");
+ (CS_ARCH_MIPS, [CS_MODE_MIPS32; CS_MODE_BIG_ENDIAN], _MIPS_CODE, "MIPS-32 (Big-endian)");
+ (CS_ARCH_MIPS, [CS_MODE_MIPS64; CS_MODE_LITTLE_ENDIAN], _MIPS_CODE2, "MIPS-64-EL (Little-endian)");
];;
let print_op handle i op =
diff --git a/bindings/ocaml/test_ppc.ml b/bindings/ocaml/test_ppc.ml
index 75da948..e5e3acb 100644
--- a/bindings/ocaml/test_ppc.ml
+++ b/bindings/ocaml/test_ppc.ml
@@ -17,7 +17,7 @@
let _PPC_CODE = "\x80\x20\x00\x00\x80\x3f\x00\x00\x10\x43\x23\x0e\xd0\x44\x00\x80\x4c\x43\x22\x02\x2d\x03\x00\x80\x7c\x43\x20\x14\x7c\x43\x20\x93\x4f\x20\x00\x21\x4c\xc8\x00\x21";;
let all_tests = [
- (CS_ARCH_PPC, [CS_MODE_32; CS_MODE_BIG_ENDIAN], _PPC_CODE, "PPC-64");
+ (CS_ARCH_PPC, [CS_MODE_64; CS_MODE_BIG_ENDIAN], _PPC_CODE, "PPC-64");
];;
let print_op handle i op =
diff --git a/bindings/python/capstone/__init__.py b/bindings/python/capstone/__init__.py
index 25fdfdc..85c1f8e 100644
--- a/bindings/python/capstone/__init__.py
+++ b/bindings/python/capstone/__init__.py
@@ -43,6 +43,8 @@
'CS_MODE_MIPSGP64',
'CS_MODE_V8',
'CS_MODE_V9',
+ 'CS_MODE_MIPS32',
+ 'CS_MODE_MIPS64',
'CS_OPT_SYNTAX',
'CS_OPT_SYNTAX_DEFAULT',
@@ -98,9 +100,9 @@
# disasm mode
CS_MODE_LITTLE_ENDIAN = 0 # little-endian mode (default mode)
CS_MODE_ARM = 0 # ARM mode
-CS_MODE_16 = (1 << 1) # 16-bit mode (for X86, Mips)
-CS_MODE_32 = (1 << 2) # 32-bit mode (for X86, Mips)
-CS_MODE_64 = (1 << 3) # 64-bit mode (for X86, Mips)
+CS_MODE_16 = (1 << 1) # 16-bit mode (for X86)
+CS_MODE_32 = (1 << 2) # 32-bit mode (for X86)
+CS_MODE_64 = (1 << 3) # 64-bit mode (for X86, PPC)
CS_MODE_THUMB = (1 << 4) # ARM's Thumb mode, including Thumb-2
CS_MODE_MCLASS = (1 << 5) # ARM's Cortex-M series
CS_MODE_V8 = (1 << 6) # ARMv8 A32 encodings for ARM
@@ -108,8 +110,10 @@
CS_MODE_MIPS3 = (1 << 5) # Mips III ISA
CS_MODE_MIPS32R6 = (1 << 6) # Mips32r6 ISA
CS_MODE_MIPSGP64 = (1 << 7) # General Purpose Registers are 64-bit wide (MIPS arch)
-CS_MODE_V9 = (1 << 4) # Nintendo-64 mode (MIPS architecture)
+CS_MODE_V9 = (1 << 4) # Sparc V9 mode (for Sparc)
CS_MODE_BIG_ENDIAN = (1 << 31) # big-endian mode
+CS_MODE_MIPS32 = CS_MODE_32 # Mips32 ISA
+CS_MODE_MIPS64 = CS_MODE_64 # Mips64 ISA
# Capstone option type
CS_OPT_SYNTAX = 1 # Intel X86 asm syntax (CS_ARCH_X86 arch)
diff --git a/bindings/python/test.py b/bindings/python/test.py
index 75cd50b..7a1c11a 100755
--- a/bindings/python/test.py
+++ b/bindings/python/test.py
@@ -42,10 +42,10 @@
(CS_ARCH_ARM, CS_MODE_THUMB, THUMB_CODE, "THUMB", 0),
(CS_ARCH_ARM, CS_MODE_THUMB + CS_MODE_MCLASS, THUMB_MCLASS, "Thumb-MClass", 0),
(CS_ARCH_ARM, CS_MODE_ARM + CS_MODE_V8, ARMV8, "Arm-V8", 0),
- (CS_ARCH_MIPS, CS_MODE_32 + CS_MODE_BIG_ENDIAN, MIPS_CODE, "MIPS-32 (Big-endian)", 0),
- (CS_ARCH_MIPS, CS_MODE_64 + CS_MODE_LITTLE_ENDIAN, MIPS_CODE2, "MIPS-64-EL (Little-endian)", 0),
- (CS_ARCH_MIPS, CS_MODE_32 + CS_MODE_MIPS32R6 + CS_MODE_MICRO + CS_MODE_BIG_ENDIAN, MIPS_32R6M, "MIPS-32R6 | Micro (Big-endian)", 0),
- (CS_ARCH_MIPS, CS_MODE_32 + CS_MODE_MIPS32R6 + CS_MODE_BIG_ENDIAN, MIPS_32R6, "MIPS-32R6 (Big-endian)", 0),
+ (CS_ARCH_MIPS, CS_MODE_MIPS32 + CS_MODE_BIG_ENDIAN, MIPS_CODE, "MIPS-32 (Big-endian)", 0),
+ (CS_ARCH_MIPS, CS_MODE_MIPS64 + CS_MODE_LITTLE_ENDIAN, MIPS_CODE2, "MIPS-64-EL (Little-endian)", 0),
+ (CS_ARCH_MIPS, CS_MODE_MIPS32R6 + CS_MODE_MICRO + CS_MODE_BIG_ENDIAN, MIPS_32R6M, "MIPS-32R6 | Micro (Big-endian)", 0),
+ (CS_ARCH_MIPS, CS_MODE_MIPS32R6 + CS_MODE_BIG_ENDIAN, MIPS_32R6, "MIPS-32R6 (Big-endian)", 0),
(CS_ARCH_ARM64, CS_MODE_ARM, ARM64_CODE, "ARM-64", 0),
(CS_ARCH_PPC, CS_MODE_BIG_ENDIAN, PPC_CODE, "PPC-64", 0),
(CS_ARCH_PPC, CS_MODE_BIG_ENDIAN, PPC_CODE, "PPC-64, print register with number only", CS_OPT_SYNTAX_NOREGNAME),
diff --git a/bindings/python/test_detail.py b/bindings/python/test_detail.py
index 03ecea7..696b1d6 100755
--- a/bindings/python/test_detail.py
+++ b/bindings/python/test_detail.py
@@ -37,10 +37,10 @@
(CS_ARCH_ARM, CS_MODE_THUMB + CS_MODE_MCLASS, THUMB_MCLASS, "Thumb-MClass", 0),
(CS_ARCH_ARM, CS_MODE_ARM + CS_MODE_V8, ARMV8, "Arm-V8", 0),
(CS_ARCH_ARM64, CS_MODE_ARM, ARM64_CODE, "ARM-64", 0),
- (CS_ARCH_MIPS, CS_MODE_32 + CS_MODE_BIG_ENDIAN, MIPS_CODE, "MIPS-32 (Big-endian)", 0),
- (CS_ARCH_MIPS, CS_MODE_64 + CS_MODE_LITTLE_ENDIAN, MIPS_CODE2, "MIPS-64-EL (Little-endian)", 0),
- (CS_ARCH_MIPS, CS_MODE_32 + CS_MODE_MIPS32R6 + CS_MODE_MICRO + CS_MODE_BIG_ENDIAN, MIPS_32R6M, "MIPS-32R6 | Micro (Big-endian)", 0),
- (CS_ARCH_MIPS, CS_MODE_32 + CS_MODE_MIPS32R6 + CS_MODE_BIG_ENDIAN, MIPS_32R6, "MIPS-32R6 (Big-endian)", 0),
+ (CS_ARCH_MIPS, CS_MODE_MIPS32 + CS_MODE_BIG_ENDIAN, MIPS_CODE, "MIPS-32 (Big-endian)", 0),
+ (CS_ARCH_MIPS, CS_MODE_MIPS64 + CS_MODE_LITTLE_ENDIAN, MIPS_CODE2, "MIPS-64-EL (Little-endian)", 0),
+ (CS_ARCH_MIPS, CS_MODE_MIPS32R6 + CS_MODE_MICRO + CS_MODE_BIG_ENDIAN, MIPS_32R6M, "MIPS-32R6 | Micro (Big-endian)", 0),
+ (CS_ARCH_MIPS, CS_MODE_MIPS32R6 + CS_MODE_BIG_ENDIAN, MIPS_32R6, "MIPS-32R6 (Big-endian)", 0),
(CS_ARCH_PPC, CS_MODE_BIG_ENDIAN, PPC_CODE, "PPC-64", 0),
(CS_ARCH_SPARC, CS_MODE_BIG_ENDIAN, SPARC_CODE, "Sparc", 0),
(CS_ARCH_SPARC, CS_MODE_BIG_ENDIAN + CS_MODE_V9, SPARCV9_CODE, "SparcV9", 0),
diff --git a/bindings/python/test_lite.py b/bindings/python/test_lite.py
index 0e04262..6f592e1 100755
--- a/bindings/python/test_lite.py
+++ b/bindings/python/test_lite.py
@@ -28,8 +28,8 @@
(CS_ARCH_ARM, CS_MODE_THUMB, THUMB_CODE2, "THUMB-2", 0),
(CS_ARCH_ARM, CS_MODE_ARM, ARM_CODE2, "ARM: Cortex-A15 + NEON", 0),
(CS_ARCH_ARM, CS_MODE_THUMB, THUMB_CODE, "THUMB", 0),
- (CS_ARCH_MIPS, CS_MODE_32 + CS_MODE_BIG_ENDIAN, MIPS_CODE, "MIPS-32 (Big-endian)", 0),
- (CS_ARCH_MIPS, CS_MODE_64 + CS_MODE_LITTLE_ENDIAN, MIPS_CODE2, "MIPS-64-EL (Little-endian)", 0),
+ (CS_ARCH_MIPS, CS_MODE_MIPS32 + CS_MODE_BIG_ENDIAN, MIPS_CODE, "MIPS-32 (Big-endian)", 0),
+ (CS_ARCH_MIPS, CS_MODE_MIPS64 + CS_MODE_LITTLE_ENDIAN, MIPS_CODE2, "MIPS-64-EL (Little-endian)", 0),
(CS_ARCH_ARM64, CS_MODE_ARM, ARM64_CODE, "ARM-64", 0),
(CS_ARCH_PPC, CS_MODE_BIG_ENDIAN, PPC_CODE, "PPC-64", 0),
(CS_ARCH_PPC, CS_MODE_BIG_ENDIAN, PPC_CODE, "PPC-64, print register with number only", CS_OPT_SYNTAX_NOREGNAME),
diff --git a/bindings/python/test_mips.py b/bindings/python/test_mips.py
index 603bc31..976380c 100755
--- a/bindings/python/test_mips.py
+++ b/bindings/python/test_mips.py
@@ -13,10 +13,10 @@
MIPS_32R6 = b"\xec\x80\x00\x19\x7c\x43\x22\xa0"
all_tests = (
- (CS_ARCH_MIPS, CS_MODE_32 + CS_MODE_BIG_ENDIAN, MIPS_CODE, "MIPS-32 (Big-endian)"),
- (CS_ARCH_MIPS, CS_MODE_64 + CS_MODE_LITTLE_ENDIAN, MIPS_CODE2, "MIPS-64-EL (Little-endian)"),
- (CS_ARCH_MIPS, CS_MODE_32 + CS_MODE_MIPS32R6 + CS_MODE_MICRO + CS_MODE_BIG_ENDIAN, MIPS_32R6M, "MIPS-32R6 | Micro (Big-endian)"),
- (CS_ARCH_MIPS, CS_MODE_32 + CS_MODE_MIPS32R6 + CS_MODE_BIG_ENDIAN, MIPS_32R6, "MIPS-32R6 (Big-endian)"),
+ (CS_ARCH_MIPS, CS_MODE_MIPS32 + CS_MODE_BIG_ENDIAN, MIPS_CODE, "MIPS-32 (Big-endian)"),
+ (CS_ARCH_MIPS, CS_MODE_MIPS64 + CS_MODE_LITTLE_ENDIAN, MIPS_CODE2, "MIPS-64-EL (Little-endian)"),
+ (CS_ARCH_MIPS, CS_MODE_MIPS32R6 + CS_MODE_MICRO + CS_MODE_BIG_ENDIAN, MIPS_32R6M, "MIPS-32R6 | Micro (Big-endian)"),
+ (CS_ARCH_MIPS, CS_MODE_MIPS32R6 + CS_MODE_BIG_ENDIAN, MIPS_32R6, "MIPS-32R6 (Big-endian)"),
)
diff --git a/include/capstone.h b/include/capstone.h
index 6040c9e..183f29d 100644
--- a/include/capstone.h
+++ b/include/capstone.h
@@ -73,20 +73,22 @@
// Mode type
typedef enum cs_mode {
- CS_MODE_LITTLE_ENDIAN = 0, // little endian mode (default mode)
+ CS_MODE_LITTLE_ENDIAN = 0, // little-endian mode (default mode)
CS_MODE_ARM = 0, // 32-bit ARM
- CS_MODE_16 = 1 << 1, // 16-bit mode
- CS_MODE_32 = 1 << 2, // 32-bit mode. Also use for MIPS32 ISA
- CS_MODE_64 = 1 << 3, // 64-bit mode. Also use for MIPS64 ISA
+ CS_MODE_16 = 1 << 1, // 16-bit mode (X86)
+ CS_MODE_32 = 1 << 2, // 32-bit mode (X86)
+ CS_MODE_64 = 1 << 3, // 64-bit mode (X86, PPC)
CS_MODE_THUMB = 1 << 4, // ARM's Thumb mode, including Thumb-2
CS_MODE_MCLASS = 1 << 5, // ARM's Cortex-M series
CS_MODE_V8 = 1 << 6, // ARMv8 A32 encodings for ARM
- CS_MODE_MICRO = 1 << 4, // MicroMips mode (MIPS architecture)
+ CS_MODE_MICRO = 1 << 4, // MicroMips mode (MIPS)
CS_MODE_MIPS3 = 1 << 5, // Mips III ISA
CS_MODE_MIPS32R6 = 1 << 6, // Mips32r6 ISA
- CS_MODE_MIPSGP64 = 1 << 7, // General Purpose Registers are 64-bit wide (MIPS arch)
- CS_MODE_V9 = 1 << 4, // SparcV9 mode (Sparc architecture)
- CS_MODE_BIG_ENDIAN = 1 << 31 // big endian mode
+ CS_MODE_MIPSGP64 = 1 << 7, // General Purpose Registers are 64-bit wide (MIPS)
+ CS_MODE_V9 = 1 << 4, // SparcV9 mode (Sparc)
+ CS_MODE_BIG_ENDIAN = 1 << 31, // big-endian mode
+ CS_MODE_MIPS32 = CS_MODE_32, // Mips32 ISA (Mips)
+ CS_MODE_MIPS64 = CS_MODE_64, // Mips64 ISA (Mips)
} cs_mode;
typedef void* (*cs_malloc_t)(size_t size);
diff --git a/suite/MC/Mips/hilo-addressing.s.cs b/suite/MC/Mips/hilo-addressing.s.cs
index fc6610b..38ecf1b 100644
--- a/suite/MC/Mips/hilo-addressing.s.cs
+++ b/suite/MC/Mips/hilo-addressing.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x3c,0x04,0xde,0xae = lui $4, %hi(addr)
0x03,0xe0,0x00,0x08 = jr $31
0x80,0x82,0xbe,0xef = lb $2, %lo(addr)($4)
diff --git a/suite/MC/Mips/micromips-alu-instructions-EB.s.cs b/suite/MC/Mips/micromips-alu-instructions-EB.s.cs
index 4e83fc0..f282897 100644
--- a/suite/MC/Mips/micromips-alu-instructions-EB.s.cs
+++ b/suite/MC/Mips/micromips-alu-instructions-EB.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN+CS_MODE_MICRO, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN+CS_MODE_MICRO, None
0x00,0xe6,0x49,0x10 = add $9, $6, $7
0x11,0x26,0x45,0x67 = addi $9, $6, 17767
0x31,0x26,0xc5,0x67 = addiu $9, $6, -15001
diff --git a/suite/MC/Mips/micromips-alu-instructions.s.cs b/suite/MC/Mips/micromips-alu-instructions.s.cs
index 4575c73..109a135 100644
--- a/suite/MC/Mips/micromips-alu-instructions.s.cs
+++ b/suite/MC/Mips/micromips-alu-instructions.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO, None
0xe6,0x00,0x10,0x49 = add $9, $6, $7
0x26,0x11,0x67,0x45 = addi $9, $6, 17767
0x26,0x31,0x67,0xc5 = addiu $9, $6, -15001
diff --git a/suite/MC/Mips/micromips-branch-instructions-EB.s.cs b/suite/MC/Mips/micromips-branch-instructions-EB.s.cs
index afa4290..90faa6d 100644
--- a/suite/MC/Mips/micromips-branch-instructions-EB.s.cs
+++ b/suite/MC/Mips/micromips-branch-instructions-EB.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN, None
0x94,0x00,0x02,0x9a = b 1332
0x94,0xc9,0x02,0x9a = beq $9, $6, 1332
0x40,0x46,0x02,0x9a = bgez $6, 1332
diff --git a/suite/MC/Mips/micromips-branch-instructions.s.cs b/suite/MC/Mips/micromips-branch-instructions.s.cs
index 4967065..d578bc5 100644
--- a/suite/MC/Mips/micromips-branch-instructions.s.cs
+++ b/suite/MC/Mips/micromips-branch-instructions.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO, None
0x00,0x94,0x9a,0x02 = b 1332
0xc9,0x94,0x9a,0x02 = beq $9, $6, 1332
0x46,0x40,0x9a,0x02 = bgez $6, 1332
diff --git a/suite/MC/Mips/micromips-expansions.s.cs b/suite/MC/Mips/micromips-expansions.s.cs
index 6f46724..6e1cedd 100644
--- a/suite/MC/Mips/micromips-expansions.s.cs
+++ b/suite/MC/Mips/micromips-expansions.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO, None
0xa0,0x50,0x7b,0x00 = ori $5, $zero, 123
0xc0,0x30,0xd7,0xf6 = addiu $6, $zero, -2345
0xa7,0x41,0x01,0x00 = lui $7, 1
diff --git a/suite/MC/Mips/micromips-jump-instructions-EB.s.cs b/suite/MC/Mips/micromips-jump-instructions-EB.s.cs
index 3d9ec26..d1ffc6a 100644
--- a/suite/MC/Mips/micromips-jump-instructions-EB.s.cs
+++ b/suite/MC/Mips/micromips-jump-instructions-EB.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN, None
0xd4,0x00,0x02,0x98 = j 1328
0xf4,0x00,0x02,0x98 = jal 1328
0x03,0xe6,0x0f,0x3c = jalr $6
diff --git a/suite/MC/Mips/micromips-jump-instructions.s.cs b/suite/MC/Mips/micromips-jump-instructions.s.cs
index abf75bf..8b65f8f 100644
--- a/suite/MC/Mips/micromips-jump-instructions.s.cs
+++ b/suite/MC/Mips/micromips-jump-instructions.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO, None
0x00,0xd4,0x98,0x02 = j 1328
0x00,0xf4,0x98,0x02 = jal 1328
0xe6,0x03,0x3c,0x0f = jalr $6
diff --git a/suite/MC/Mips/micromips-loadstore-instructions-EB.s.cs b/suite/MC/Mips/micromips-loadstore-instructions-EB.s.cs
index e07acda..3c37a00 100644
--- a/suite/MC/Mips/micromips-loadstore-instructions-EB.s.cs
+++ b/suite/MC/Mips/micromips-loadstore-instructions-EB.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN, None
0x1c,0xa4,0x00,0x08 = lb $5, 8($4)
0x14,0xc4,0x00,0x08 = lbu $6, 8($4)
0x3c,0x44,0x00,0x08 = lh $2, 8($4)
diff --git a/suite/MC/Mips/micromips-loadstore-instructions.s.cs b/suite/MC/Mips/micromips-loadstore-instructions.s.cs
index 015c7c8..4e12197 100644
--- a/suite/MC/Mips/micromips-loadstore-instructions.s.cs
+++ b/suite/MC/Mips/micromips-loadstore-instructions.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO, None
0xa4,0x1c,0x08,0x00 = lb $5, 8($4)
0xc4,0x14,0x08,0x00 = lbu $6, 8($4)
0x44,0x3c,0x08,0x00 = lh $2, 8($4)
diff --git a/suite/MC/Mips/micromips-loadstore-unaligned-EB.s.cs b/suite/MC/Mips/micromips-loadstore-unaligned-EB.s.cs
index eecf934..b4b3a7b 100644
--- a/suite/MC/Mips/micromips-loadstore-unaligned-EB.s.cs
+++ b/suite/MC/Mips/micromips-loadstore-unaligned-EB.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN, None
0x60,0x85,0x00,0x10 = lwl $4, 16($5)
0x60,0x85,0x10,0x10 = lwr $4, 16($5)
0x60,0x85,0x80,0x10 = swl $4, 16($5)
diff --git a/suite/MC/Mips/micromips-loadstore-unaligned.s.cs b/suite/MC/Mips/micromips-loadstore-unaligned.s.cs
index 526d26e..26bb02c 100644
--- a/suite/MC/Mips/micromips-loadstore-unaligned.s.cs
+++ b/suite/MC/Mips/micromips-loadstore-unaligned.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO, None
0x85,0x60,0x10,0x00 = lwl $4, 16($5)
0x85,0x60,0x10,0x10 = lwr $4, 16($5)
0x85,0x60,0x10,0x80 = swl $4, 16($5)
diff --git a/suite/MC/Mips/micromips-movcond-instructions-EB.s.cs b/suite/MC/Mips/micromips-movcond-instructions-EB.s.cs
index 22aa614..f802cf3 100644
--- a/suite/MC/Mips/micromips-movcond-instructions-EB.s.cs
+++ b/suite/MC/Mips/micromips-movcond-instructions-EB.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN, None
0x00,0xe6,0x48,0x58 = movz $9, $6, $7
0x00,0xe6,0x48,0x18 = movn $9, $6, $7
0x55,0x26,0x09,0x7b = movt $9, $6, $fcc0
diff --git a/suite/MC/Mips/micromips-movcond-instructions.s.cs b/suite/MC/Mips/micromips-movcond-instructions.s.cs
index e6d4ddd..5603b6b 100644
--- a/suite/MC/Mips/micromips-movcond-instructions.s.cs
+++ b/suite/MC/Mips/micromips-movcond-instructions.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO, None
0xe6,0x00,0x58,0x48 = movz $9, $6, $7
0xe6,0x00,0x18,0x48 = movn $9, $6, $7
0x26,0x55,0x7b,0x09 = movt $9, $6, $fcc0
diff --git a/suite/MC/Mips/micromips-multiply-instructions-EB.s.cs b/suite/MC/Mips/micromips-multiply-instructions-EB.s.cs
index 8d48321..fc6df14 100644
--- a/suite/MC/Mips/micromips-multiply-instructions-EB.s.cs
+++ b/suite/MC/Mips/micromips-multiply-instructions-EB.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN, None
0x00,0xa4,0xcb,0x3c = madd $4, $5
0x00,0xa4,0xdb,0x3c = maddu $4, $5
0x00,0xa4,0xeb,0x3c = msub $4, $5
diff --git a/suite/MC/Mips/micromips-multiply-instructions.s.cs b/suite/MC/Mips/micromips-multiply-instructions.s.cs
index 255c11f..40fbcf8 100644
--- a/suite/MC/Mips/micromips-multiply-instructions.s.cs
+++ b/suite/MC/Mips/micromips-multiply-instructions.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO, None
0xa4,0x00,0x3c,0xcb = madd $4, $5
0xa4,0x00,0x3c,0xdb = maddu $4, $5
0xa4,0x00,0x3c,0xeb = msub $4, $5
diff --git a/suite/MC/Mips/micromips-shift-instructions-EB.s.cs b/suite/MC/Mips/micromips-shift-instructions-EB.s.cs
index 537d9c0..fd51af7 100644
--- a/suite/MC/Mips/micromips-shift-instructions-EB.s.cs
+++ b/suite/MC/Mips/micromips-shift-instructions-EB.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN, None
0x00,0x83,0x38,0x00 = sll $4, $3, 7
0x00,0x65,0x10,0x10 = sllv $2, $3, $5
0x00,0x83,0x38,0x80 = sra $4, $3, 7
diff --git a/suite/MC/Mips/micromips-shift-instructions.s.cs b/suite/MC/Mips/micromips-shift-instructions.s.cs
index e82bb31..e787d7b 100644
--- a/suite/MC/Mips/micromips-shift-instructions.s.cs
+++ b/suite/MC/Mips/micromips-shift-instructions.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO, None
0x83,0x00,0x00,0x38 = sll $4, $3, 7
0x65,0x00,0x10,0x10 = sllv $2, $3, $5
0x83,0x00,0x80,0x38 = sra $4, $3, 7
diff --git a/suite/MC/Mips/micromips-trap-instructions-EB.s.cs b/suite/MC/Mips/micromips-trap-instructions-EB.s.cs
index ce1b13b..452c8d0 100644
--- a/suite/MC/Mips/micromips-trap-instructions-EB.s.cs
+++ b/suite/MC/Mips/micromips-trap-instructions-EB.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN, None
0x01,0x28,0x00,0x3c = teq $8, $9
0x01,0x28,0x02,0x3c = tge $8, $9
0x01,0x28,0x04,0x3c = tgeu $8, $9
diff --git a/suite/MC/Mips/micromips-trap-instructions.s.cs b/suite/MC/Mips/micromips-trap-instructions.s.cs
index fc4b7ad..01ddcab 100644
--- a/suite/MC/Mips/micromips-trap-instructions.s.cs
+++ b/suite/MC/Mips/micromips-trap-instructions.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_MICRO, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_MICRO, None
0x28,0x01,0x3c,0x00 = teq $8, $9
0x28,0x01,0x3c,0x02 = tge $8, $9
0x28,0x01,0x3c,0x04 = tgeu $8, $9
diff --git a/suite/MC/Mips/mips-alu-instructions.s.cs b/suite/MC/Mips/mips-alu-instructions.s.cs
index d669ebd..ec0494e 100644
--- a/suite/MC/Mips/mips-alu-instructions.s.cs
+++ b/suite/MC/Mips/mips-alu-instructions.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32, None
0x24,0x48,0xc7,0x00 = and $9, $6, $7
0x67,0x45,0xc9,0x30 = andi $9, $6, 17767
0x67,0x45,0xc9,0x30 = andi $9, $6, 17767
diff --git a/suite/MC/Mips/mips-control-instructions-64.s.cs b/suite/MC/Mips/mips-control-instructions-64.s.cs
index 7fd9623..2c3477b 100644
--- a/suite/MC/Mips/mips-control-instructions-64.s.cs
+++ b/suite/MC/Mips/mips-control-instructions-64.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_64+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS64+CS_MODE_BIG_ENDIAN, None
0x00,0x00,0x00,0x0d = break
0x00,0x07,0x00,0x0d = break 7, 0
0x00,0x07,0x01,0x4d = break 7, 5
diff --git a/suite/MC/Mips/mips-control-instructions.s.cs b/suite/MC/Mips/mips-control-instructions.s.cs
index 3527cda..d245047 100644
--- a/suite/MC/Mips/mips-control-instructions.s.cs
+++ b/suite/MC/Mips/mips-control-instructions.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x00,0x00,0x00,0x0d = break
0x00,0x07,0x00,0x0d = break 7, 0
0x00,0x07,0x01,0x4d = break 7, 5
diff --git a/suite/MC/Mips/mips-coprocessor-encodings.s.cs b/suite/MC/Mips/mips-coprocessor-encodings.s.cs
index a6cfd9a..d6da1f3 100644
--- a/suite/MC/Mips/mips-coprocessor-encodings.s.cs
+++ b/suite/MC/Mips/mips-coprocessor-encodings.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_64+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS64+CS_MODE_BIG_ENDIAN, None
0x40,0xac,0x80,0x02 = dmtc0 $12, $16, 2
0x40,0xac,0x80,0x00 = dmtc0 $12, $16, 0
0x40,0x8c,0x80,0x02 = mtc0 $12, $16, 2
diff --git a/suite/MC/Mips/mips-dsp-instructions.s.cs b/suite/MC/Mips/mips-dsp-instructions.s.cs
index 3f34651..7bbea95 100644
--- a/suite/MC/Mips/mips-dsp-instructions.s.cs
+++ b/suite/MC/Mips/mips-dsp-instructions.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x7e,0x32,0x83,0x11 = precrq.qb.ph $16, $17, $18
0x7e,0x53,0x8d,0x11 = precrq.ph.w $17, $18, $19
0x7e,0x74,0x95,0x51 = precrq_rs.ph.w $18, $19, $20
diff --git a/suite/MC/Mips/mips-expansions.s.cs b/suite/MC/Mips/mips-expansions.s.cs
index 7db7281..0efc3c6 100644
--- a/suite/MC/Mips/mips-expansions.s.cs
+++ b/suite/MC/Mips/mips-expansions.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32, None
0x7b,0x00,0x05,0x34 = ori $5, $zero, 123
0xd7,0xf6,0x06,0x24 = addiu $6, $zero, -2345
0x01,0x00,0x07,0x3c = lui $7, 1
diff --git a/suite/MC/Mips/mips-fpu-instructions.s.cs b/suite/MC/Mips/mips-fpu-instructions.s.cs
index 8314b92..0c352bc 100644
--- a/suite/MC/Mips/mips-fpu-instructions.s.cs
+++ b/suite/MC/Mips/mips-fpu-instructions.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32, None
0x05,0x73,0x20,0x46 = abs.d $f12, $f14
0x85,0x39,0x00,0x46 = abs.s $f6, $f7
0x00,0x62,0x2e,0x46 = add.d $f8, $f12, $f14
diff --git a/suite/MC/Mips/mips-jump-instructions.s.cs b/suite/MC/Mips/mips-jump-instructions.s.cs
index 3a24f13..5e741fc 100644
--- a/suite/MC/Mips/mips-jump-instructions.s.cs
+++ b/suite/MC/Mips/mips-jump-instructions.s.cs
@@ -1 +1 @@
-# CS_ARCH_MIPS, CS_MODE_32, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32, None
diff --git a/suite/MC/Mips/mips-memory-instructions.s.cs b/suite/MC/Mips/mips-memory-instructions.s.cs
index bb77f54..6fb0229 100644
--- a/suite/MC/Mips/mips-memory-instructions.s.cs
+++ b/suite/MC/Mips/mips-memory-instructions.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32, None
0x10,0x00,0xa4,0xa0 = sb $4, 16($5)
0x10,0x00,0xa4,0xe0 = sc $4, 16($5)
0x10,0x00,0xa4,0xa4 = sh $4, 16($5)
diff --git a/suite/MC/Mips/mips-register-names.s.cs b/suite/MC/Mips/mips-register-names.s.cs
index e9b63af..b613ad3 100644
--- a/suite/MC/Mips/mips-register-names.s.cs
+++ b/suite/MC/Mips/mips-register-names.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x24,0x00,0x00,0x00 = addiu $zero, $zero, 0
0x24,0x01,0x00,0x00 = addiu $at, $zero, 0
0x24,0x02,0x00,0x00 = addiu $v0, $zero, 0
diff --git a/suite/MC/Mips/mips64-alu-instructions.s.cs b/suite/MC/Mips/mips64-alu-instructions.s.cs
index f790a9e..c4ef40e 100644
--- a/suite/MC/Mips/mips64-alu-instructions.s.cs
+++ b/suite/MC/Mips/mips64-alu-instructions.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_64, None
+# CS_ARCH_MIPS, CS_MODE_MIPS64, None
0x24,0x48,0xc7,0x00 = and $9, $6, $7
0x67,0x45,0xc9,0x30 = andi $9, $6, 17767
0x67,0x45,0xc9,0x30 = andi $9, $6, 17767
diff --git a/suite/MC/Mips/mips64-instructions.s.cs b/suite/MC/Mips/mips64-instructions.s.cs
index 3dcca92..1976475 100644
--- a/suite/MC/Mips/mips64-instructions.s.cs
+++ b/suite/MC/Mips/mips64-instructions.s.cs
@@ -1,3 +1,3 @@
-# CS_ARCH_MIPS, CS_MODE_64, None
+# CS_ARCH_MIPS, CS_MODE_MIPS64, None
0x81,0x00,0x42,0x4d = ldxc1 $f2, $2($10)
0x09,0x40,0x24,0x4f = sdxc1 $f8, $4($25)
diff --git a/suite/MC/Mips/mips64-register-names.s.cs b/suite/MC/Mips/mips64-register-names.s.cs
index a18d13a..21fd767 100644
--- a/suite/MC/Mips/mips64-register-names.s.cs
+++ b/suite/MC/Mips/mips64-register-names.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_64+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS64+CS_MODE_BIG_ENDIAN, None
0x64,0x00,0x00,0x00 = daddiu $zero, $zero, 0
0x64,0x01,0x00,0x00 = daddiu $at, $zero, 0
0x64,0x02,0x00,0x00 = daddiu $v0, $zero, 0
diff --git a/suite/MC/Mips/mips_directives.s.cs b/suite/MC/Mips/mips_directives.s.cs
index 14ed58f..7b6faa7 100644
--- a/suite/MC/Mips/mips_directives.s.cs
+++ b/suite/MC/Mips/mips_directives.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x10,0x00,0x01,0x4d = b 1332
0x08,0x00,0x01,0x4c = j 1328
0x0c,0x00,0x01,0x4c = jal 1328
diff --git a/suite/MC/Mips/nabi-regs.s.cs b/suite/MC/Mips/nabi-regs.s.cs
index 0cb3dc8..d659639 100644
--- a/suite/MC/Mips/nabi-regs.s.cs
+++ b/suite/MC/Mips/nabi-regs.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_64+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS64+CS_MODE_BIG_ENDIAN, None
0x02,0x04,0x80,0x20 = add $16, $16, $4
0x02,0x06,0x80,0x20 = add $16, $16, $6
0x02,0x07,0x80,0x20 = add $16, $16, $7
diff --git a/suite/MC/Mips/set-at-directive.s.cs b/suite/MC/Mips/set-at-directive.s.cs
index d066795..e64c66e 100644
--- a/suite/MC/Mips/set-at-directive.s.cs
+++ b/suite/MC/Mips/set-at-directive.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32, None
0x08,0x00,0x60,0x00 = jr $3
0x08,0x00,0x80,0x03 = jr $gp
0x08,0x00,0xc0,0x03 = jr $fp
diff --git a/suite/MC/Mips/test_2r.s.cs b/suite/MC/Mips/test_2r.s.cs
index caa56bc..c1fc7cb 100644
--- a/suite/MC/Mips/test_2r.s.cs
+++ b/suite/MC/Mips/test_2r.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x7b,0x00,0x4f,0x9e = fill.b $w30, $9
0x7b,0x01,0xbf,0xde = fill.h $w31, $23
0x7b,0x02,0xc4,0x1e = fill.w $w16, $24
diff --git a/suite/MC/Mips/test_2rf.s.cs b/suite/MC/Mips/test_2rf.s.cs
index 68b7df9..2e95606 100644
--- a/suite/MC/Mips/test_2rf.s.cs
+++ b/suite/MC/Mips/test_2rf.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x7b,0x20,0x66,0x9e = fclass.w $w26, $w12
0x7b,0x21,0x8e,0x1e = fclass.d $w24, $w17
0x7b,0x30,0x02,0x1e = fexupl.w $w8, $w0
diff --git a/suite/MC/Mips/test_3r.s.cs b/suite/MC/Mips/test_3r.s.cs
index 7a04e85..55e5983 100644
--- a/suite/MC/Mips/test_3r.s.cs
+++ b/suite/MC/Mips/test_3r.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x78,0x04,0x4e,0x90 = add_a.b $w26, $w9, $w4
0x78,0x3f,0xdd,0xd0 = add_a.h $w23, $w27, $w31
0x78,0x56,0x32,0xd0 = add_a.w $w11, $w6, $w22
diff --git a/suite/MC/Mips/test_3rf.s.cs b/suite/MC/Mips/test_3rf.s.cs
index 4817b3f..491162d 100644
--- a/suite/MC/Mips/test_3rf.s.cs
+++ b/suite/MC/Mips/test_3rf.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x78,0x1c,0x9f,0x1b = fadd.w $w28, $w19, $w28
0x78,0x3d,0x13,0x5b = fadd.d $w13, $w2, $w29
0x78,0x19,0x5b,0x9a = fcaf.w $w14, $w11, $w25
diff --git a/suite/MC/Mips/test_bit.s.cs b/suite/MC/Mips/test_bit.s.cs
index 46ebbe5..882cd90 100644
--- a/suite/MC/Mips/test_bit.s.cs
+++ b/suite/MC/Mips/test_bit.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x79,0xf2,0xf5,0x49 = bclri.b $w21, $w30, 2
0x79,0xe0,0xae,0x09 = bclri.h $w24, $w21, 0
0x79,0xc3,0xf5,0xc9 = bclri.w $w23, $w30, 3
diff --git a/suite/MC/Mips/test_cbranch.s.cs b/suite/MC/Mips/test_cbranch.s.cs
index fb512f2..4a40324 100644
--- a/suite/MC/Mips/test_cbranch.s.cs
+++ b/suite/MC/Mips/test_cbranch.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x47,0x80,0x00,0x01 = bnz.b $w0, 4
0x47,0xa1,0x00,0x04 = bnz.h $w1, 16
0x47,0xc2,0x00,0x20 = bnz.w $w2, 128
diff --git a/suite/MC/Mips/test_ctrlregs.s.cs b/suite/MC/Mips/test_ctrlregs.s.cs
index a3e949d..336dce0 100644
--- a/suite/MC/Mips/test_ctrlregs.s.cs
+++ b/suite/MC/Mips/test_ctrlregs.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x78,0x7e,0x00,0x59 = cfcmsa $1, $0
0x78,0x7e,0x00,0x59 = cfcmsa $1, $0
0x78,0x7e,0x08,0x99 = cfcmsa $2, $1
diff --git a/suite/MC/Mips/test_elm.s.cs b/suite/MC/Mips/test_elm.s.cs
index a666e48..26fef6a 100644
--- a/suite/MC/Mips/test_elm.s.cs
+++ b/suite/MC/Mips/test_elm.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x78,0x82,0x43,0x59 = copy_s.b $13, $w8[2]
0x78,0xa0,0xc8,0x59 = copy_s.h $1, $w25[0]
0x78,0xb1,0x2d,0x99 = copy_s.w $22, $w5[1]
diff --git a/suite/MC/Mips/test_elm_insert.s.cs b/suite/MC/Mips/test_elm_insert.s.cs
index ef4134a..6a9bd4e 100644
--- a/suite/MC/Mips/test_elm_insert.s.cs
+++ b/suite/MC/Mips/test_elm_insert.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x79,0x03,0xed,0xd9 = insert.b $w23[3], $sp
0x79,0x22,0x2d,0x19 = insert.h $w20[2], $5
0x79,0x32,0x7a,0x19 = insert.w $w8[2], $15
diff --git a/suite/MC/Mips/test_elm_insve.s.cs b/suite/MC/Mips/test_elm_insve.s.cs
index fba8af4..7657969 100644
--- a/suite/MC/Mips/test_elm_insve.s.cs
+++ b/suite/MC/Mips/test_elm_insve.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x79,0x43,0x4e,0x59 = insve.b $w25[3], $w9[0]
0x79,0x62,0x16,0x19 = insve.h $w24[2], $w2[0]
0x79,0x72,0x68,0x19 = insve.w $w0[2], $w13[0]
diff --git a/suite/MC/Mips/test_i10.s.cs b/suite/MC/Mips/test_i10.s.cs
index bebdc74..43a8f78 100644
--- a/suite/MC/Mips/test_i10.s.cs
+++ b/suite/MC/Mips/test_i10.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x7b,0x06,0x32,0x07 = ldi.b $w8, 198
0x7b,0x29,0xcd,0x07 = ldi.h $w20, 313
0x7b,0x4f,0x66,0x07 = ldi.w $w24, 492
diff --git a/suite/MC/Mips/test_i5.s.cs b/suite/MC/Mips/test_i5.s.cs
index 2e88f70..c69c082 100644
--- a/suite/MC/Mips/test_i5.s.cs
+++ b/suite/MC/Mips/test_i5.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x78,0x1e,0xf8,0xc6 = addvi.b $w3, $w31, 30
0x78,0x3a,0x6e,0x06 = addvi.h $w24, $w13, 26
0x78,0x5a,0xa6,0x86 = addvi.w $w26, $w20, 26
diff --git a/suite/MC/Mips/test_i8.s.cs b/suite/MC/Mips/test_i8.s.cs
index 3ebb9c6..0b08f63 100644
--- a/suite/MC/Mips/test_i8.s.cs
+++ b/suite/MC/Mips/test_i8.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x78,0x30,0xe8,0x80 = andi.b $w2, $w29, 48
0x78,0x7e,0xb1,0x81 = bmnzi.b $w6, $w22, 126
0x79,0x58,0x0e,0xc1 = bmzi.b $w27, $w1, 88
diff --git a/suite/MC/Mips/test_lsa.s.cs b/suite/MC/Mips/test_lsa.s.cs
index 974919a..451e875 100644
--- a/suite/MC/Mips/test_lsa.s.cs
+++ b/suite/MC/Mips/test_lsa.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x01,0x2a,0x40,0x05 = lsa $8, $9, $10, 1
0x01,0x2a,0x40,0x45 = lsa $8, $9, $10, 2
0x01,0x2a,0x40,0x85 = lsa $8, $9, $10, 3
diff --git a/suite/MC/Mips/test_mi10.s.cs b/suite/MC/Mips/test_mi10.s.cs
index 189f83a..9365abc 100644
--- a/suite/MC/Mips/test_mi10.s.cs
+++ b/suite/MC/Mips/test_mi10.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x7a,0x00,0x08,0x20 = ld.b $w0, -512($1)
0x78,0x00,0x10,0x60 = ld.b $w1, 0($2)
0x79,0xff,0x18,0xa0 = ld.b $w2, 511($3)
diff --git a/suite/MC/Mips/test_vec.s.cs b/suite/MC/Mips/test_vec.s.cs
index b68f328..9303868 100644
--- a/suite/MC/Mips/test_vec.s.cs
+++ b/suite/MC/Mips/test_vec.s.cs
@@ -1,4 +1,4 @@
-# CS_ARCH_MIPS, CS_MODE_32+CS_MODE_BIG_ENDIAN, None
+# CS_ARCH_MIPS, CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN, None
0x78,0x1b,0xa6,0x5e = and.v $w25, $w20, $w27
0x78,0x87,0x34,0x5e = bmnz.v $w17, $w6, $w7
0x78,0xa9,0x88,0xde = bmz.v $w3, $w17, $w9
diff --git a/suite/test_c.sh b/suite/test_c.sh
index 1b78b46..ccc88eb 100755
--- a/suite/test_c.sh
+++ b/suite/test_c.sh
@@ -5,9 +5,13 @@
../tests/test > /tmp/$1
../tests/test_detail >> /tmp/$1
+../tests/test_skipdata >> /tmp/$1
+../tests/test_iter >> /tmp/$1
../tests/test_arm >> /tmp/$1
../tests/test_arm64 >> /tmp/$1
../tests/test_mips >> /tmp/$1
../tests/test_ppc >> /tmp/$1
../tests/test_sparc >> /tmp/$1
../tests/test_x86 >> /tmp/$1
+../tests/test_systemz >> /tmp/$1
+../tests/test_xcore >> /tmp/$1
diff --git a/suite/test_mc.py b/suite/test_mc.py
index 140c1b4..6ead0db 100755
--- a/suite/test_mc.py
+++ b/suite/test_mc.py
@@ -97,6 +97,8 @@
"CS_MODE_16": CS_MODE_16,
"CS_MODE_32": CS_MODE_32,
"CS_MODE_64": CS_MODE_64,
+ "CS_MODE_MIPS32": CS_MODE_MIPS32,
+ "CS_MODE_MIPS64": CS_MODE_MIPS64,
"0": CS_MODE_ARM,
"CS_MODE_ARM": CS_MODE_ARM,
"CS_MODE_THUMB": CS_MODE_THUMB,
@@ -105,14 +107,16 @@
"CS_MODE_THUMB+CS_MODE_MCLASS": CS_MODE_THUMB+CS_MODE_MCLASS,
"CS_MODE_LITTLE_ENDIAN": CS_MODE_LITTLE_ENDIAN,
"CS_MODE_BIG_ENDIAN": CS_MODE_BIG_ENDIAN,
- "CS_MODE_32+CS_MODE_BIG_ENDIAN": CS_MODE_32+CS_MODE_BIG_ENDIAN,
- "CS_MODE_32+CS_MODE_LITTLE_ENDIAN": CS_MODE_32+CS_MODE_LITTLE_ENDIAN,
"CS_MODE_64+CS_MODE_LITTLE_ENDIAN": CS_MODE_64+CS_MODE_LITTLE_ENDIAN,
"CS_MODE_64+CS_MODE_BIG_ENDIAN": CS_MODE_64+CS_MODE_BIG_ENDIAN,
- "CS_MODE_32+CS_MODE_MICRO": CS_MODE_32+CS_MODE_MICRO,
- "CS_MODE_32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN": CS_MODE_32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN,
- "CS_MODE_32+CS_MODE_BIG_ENDIAN+CS_MODE_MICRO": CS_MODE_32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN,
+ "CS_MODE_MIPS32+CS_MODE_MICRO": CS_MODE_MIPS32+CS_MODE_MICRO,
+ "CS_MODE_MIPS32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN": CS_MODE_MIPS32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN,
+ "CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN+CS_MODE_MICRO": CS_MODE_MIPS32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN,
"CS_MODE_BIG_ENDIAN+CS_MODE_V9": CS_MODE_BIG_ENDIAN + CS_MODE_V9,
+ "CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN": CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN,
+ "CS_MODE_MIPS32+CS_MODE_LITTLE_ENDIAN": CS_MODE_MIPS32+CS_MODE_LITTLE_ENDIAN,
+ "CS_MODE_MIPS64+CS_MODE_LITTLE_ENDIAN": CS_MODE_MIPS64+CS_MODE_LITTLE_ENDIAN,
+ "CS_MODE_MIPS64+CS_MODE_BIG_ENDIAN": CS_MODE_MIPS64+CS_MODE_BIG_ENDIAN,
}
options = {
@@ -129,13 +133,13 @@
("CS_ARCH_ARM", "CS_MODE_THUMB+CS_MODE_V8"): ['-triple=thumbv8'],
("CS_ARCH_ARM", "CS_MODE_THUMB+CS_MODE_MCLASS"): ['-triple=thumbv7m'],
("CS_ARCH_ARM64", "0"): ['-triple=aarch64'],
- ("CS_ARCH_MIPS", "CS_MODE_32+CS_MODE_BIG_ENDIAN"): ['-triple=mips'],
- ("CS_ARCH_MIPS", "CS_MODE_32+CS_MODE_MICRO"): ['-triple=mipsel', '-mattr=+micromips'],
- ("CS_ARCH_MIPS", "CS_MODE_64"): ['-triple=mips64el'],
- ("CS_ARCH_MIPS", "CS_MODE_32"): ['-triple=mipsel'],
- ("CS_ARCH_MIPS", "CS_MODE_64+CS_MODE_BIG_ENDIAN"): ['-triple=mips64'],
- ("CS_ARCH_MIPS", "CS_MODE_32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN"): ['-triple=mips', '-mattr=+micromips'],
- ("CS_ARCH_MIPS", "CS_MODE_32+CS_MODE_BIG_ENDIAN+CS_MODE_MICRO"): ['-triple=mips', '-mattr=+micromips'],
+ ("CS_ARCH_MIPS", "CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN"): ['-triple=mips'],
+ ("CS_ARCH_MIPS", "CS_MODE_MIPS32+CS_MODE_MICRO"): ['-triple=mipsel', '-mattr=+micromips'],
+ ("CS_ARCH_MIPS", "CS_MODE_MIPS64"): ['-triple=mips64el'],
+ ("CS_ARCH_MIPS", "CS_MODE_MIPS32"): ['-triple=mipsel'],
+ ("CS_ARCH_MIPS", "CS_MODE_MIPS64+CS_MODE_BIG_ENDIAN"): ['-triple=mips64'],
+ ("CS_ARCH_MIPS", "CS_MODE_MIPS32+CS_MODE_MICRO+CS_MODE_BIG_ENDIAN"): ['-triple=mips', '-mattr=+micromips'],
+ ("CS_ARCH_MIPS", "CS_MODE_MIPS32+CS_MODE_BIG_ENDIAN+CS_MODE_MICRO"): ['-triple=mips', '-mattr=+micromips'],
("CS_ARCH_PPC", "CS_MODE_BIG_ENDIAN"): ['-triple=powerpc64'],
('CS_ARCH_SPARC', 'CS_MODE_BIG_ENDIAN'): ['-triple=sparc'],
('CS_ARCH_SPARC', 'CS_MODE_BIG_ENDIAN+CS_MODE_V9'): ['-triple=sparcv9'],
diff --git a/tests/test.c b/tests/test.c
index ee398f1..9d77a54 100644
--- a/tests/test.c
+++ b/tests/test.c
@@ -139,28 +139,28 @@
},
{
CS_ARCH_MIPS,
- (cs_mode)(CS_MODE_32 + CS_MODE_BIG_ENDIAN),
+ (cs_mode)(CS_MODE_MIPS32 + CS_MODE_BIG_ENDIAN),
(unsigned char*)MIPS_CODE,
sizeof(MIPS_CODE) - 1,
"MIPS-32 (Big-endian)"
},
{
CS_ARCH_MIPS,
- (cs_mode)(CS_MODE_64 + CS_MODE_LITTLE_ENDIAN),
+ (cs_mode)(CS_MODE_MIPS64 + CS_MODE_LITTLE_ENDIAN),
(unsigned char*)MIPS_CODE2,
sizeof(MIPS_CODE2) - 1,
"MIPS-64-EL (Little-endian)"
},
{
CS_ARCH_MIPS,
- (cs_mode)(CS_MODE_32 + CS_MODE_MIPS32R6 + CS_MODE_MICRO + CS_MODE_BIG_ENDIAN),
+ (cs_mode)(CS_MODE_MIPS32R6 + CS_MODE_MICRO + CS_MODE_BIG_ENDIAN),
(unsigned char*)MIPS_32R6M,
sizeof(MIPS_32R6M) - 1,
"MIPS-32R6 | Micro (Big-endian)"
},
{
CS_ARCH_MIPS,
- (cs_mode)(CS_MODE_32 + CS_MODE_MIPS32R6 + CS_MODE_BIG_ENDIAN),
+ (cs_mode)(CS_MODE_MIPS32R6 + CS_MODE_BIG_ENDIAN),
(unsigned char*)MIPS_32R6,
sizeof(MIPS_32R6) - 1,
"MIPS-32R6 (Big-endian)"
diff --git a/tests/test_detail.c b/tests/test_detail.c
index cb04e9b..94e4007 100644
--- a/tests/test_detail.c
+++ b/tests/test_detail.c
@@ -139,28 +139,28 @@
},
{
CS_ARCH_MIPS,
- (cs_mode)(CS_MODE_32 + CS_MODE_BIG_ENDIAN),
+ (cs_mode)(CS_MODE_MIPS32 + CS_MODE_BIG_ENDIAN),
(unsigned char *)MIPS_CODE,
sizeof(MIPS_CODE) - 1,
"MIPS-32 (Big-endian)"
},
{
CS_ARCH_MIPS,
- (cs_mode)(CS_MODE_64 + CS_MODE_LITTLE_ENDIAN),
+ (cs_mode)(CS_MODE_MIPS64 + CS_MODE_LITTLE_ENDIAN),
(unsigned char *)MIPS_CODE2,
sizeof(MIPS_CODE2) - 1,
"MIPS-64-EL (Little-endian)"
},
{
CS_ARCH_MIPS,
- (cs_mode)(CS_MODE_32 + CS_MODE_MIPS32R6 + CS_MODE_MICRO + CS_MODE_BIG_ENDIAN),
+ (cs_mode)(CS_MODE_MIPS32R6 + CS_MODE_MICRO + CS_MODE_BIG_ENDIAN),
(unsigned char*)MIPS_32R6M,
sizeof(MIPS_32R6M) - 1,
"MIPS-32R6 | Micro (Big-endian)"
},
{
CS_ARCH_MIPS,
- (cs_mode)(CS_MODE_32 + CS_MODE_MIPS32R6 + CS_MODE_BIG_ENDIAN),
+ (cs_mode)(CS_MODE_MIPS32R6 + CS_MODE_BIG_ENDIAN),
(unsigned char*)MIPS_32R6,
sizeof(MIPS_32R6) - 1,
"MIPS-32R6 (Big-endian)"
diff --git a/tests/test_iter.c b/tests/test_iter.c
index c1b290a..ec26738 100644
--- a/tests/test_iter.c
+++ b/tests/test_iter.c
@@ -122,14 +122,14 @@
},
{
CS_ARCH_MIPS,
- (cs_mode)(CS_MODE_32 + CS_MODE_BIG_ENDIAN),
+ (cs_mode)(CS_MODE_MIPS32 + CS_MODE_BIG_ENDIAN),
(unsigned char *)MIPS_CODE,
sizeof(MIPS_CODE) - 1,
"MIPS-32 (Big-endian)"
},
{
CS_ARCH_MIPS,
- (cs_mode)(CS_MODE_64 + CS_MODE_LITTLE_ENDIAN),
+ (cs_mode)(CS_MODE_MIPS64 + CS_MODE_LITTLE_ENDIAN),
(unsigned char *)MIPS_CODE2,
sizeof(MIPS_CODE2) - 1,
"MIPS-64-EL (Little-endian)"
diff --git a/tests/test_mips.c b/tests/test_mips.c
index 94a0fcc..4da243e 100644
--- a/tests/test_mips.c
+++ b/tests/test_mips.c
@@ -86,28 +86,28 @@
struct platform platforms[] = {
{
CS_ARCH_MIPS,
- (cs_mode)(CS_MODE_32 + CS_MODE_BIG_ENDIAN),
+ (cs_mode)(CS_MODE_MIPS32 + CS_MODE_BIG_ENDIAN),
(unsigned char *)MIPS_CODE,
sizeof(MIPS_CODE) - 1,
"MIPS-32 (Big-endian)"
},
{
CS_ARCH_MIPS,
- (cs_mode)(CS_MODE_64 + CS_MODE_LITTLE_ENDIAN),
+ (cs_mode)(CS_MODE_MIPS64 + CS_MODE_LITTLE_ENDIAN),
(unsigned char *)MIPS_CODE2,
sizeof(MIPS_CODE2) - 1,
"MIPS-64-EL (Little-endian)"
},
{
CS_ARCH_MIPS,
- (cs_mode)(CS_MODE_32 + CS_MODE_MIPS32R6 + CS_MODE_MICRO + CS_MODE_BIG_ENDIAN),
+ (cs_mode)(CS_MODE_MIPS32R6 + CS_MODE_MICRO + CS_MODE_BIG_ENDIAN),
(unsigned char*)MIPS_32R6M,
sizeof(MIPS_32R6M) - 1,
"MIPS-32R6 | Micro (Big-endian)"
},
{
CS_ARCH_MIPS,
- (cs_mode)(CS_MODE_32 + CS_MODE_MIPS32R6 + CS_MODE_BIG_ENDIAN),
+ (cs_mode)(CS_MODE_MIPS32R6 + CS_MODE_BIG_ENDIAN),
(unsigned char*)MIPS_32R6,
sizeof(MIPS_32R6) - 1,
"MIPS-32R6 (Big-endian)"