diff --git a/src/target/arm_disassembler.c b/src/target/arm_disassembler.c index 153667936..f432f57ca 100644 --- a/src/target/arm_disassembler.c +++ b/src/target/arm_disassembler.c @@ -170,6 +170,18 @@ static int evaluate_pld(uint32_t opcode, return ERROR_OK; } + /* ISB */ + if ((opcode & 0x07f000f0) == 0x05700060) { + instruction->type = ARM_ISB; + + snprintf(instruction->text, + 128, + "0x%8.8" PRIx32 "\t0x%8.8" PRIx32 "\tISB %s", + address, opcode, + ((opcode & 0x0000000f) == 0xf) ? "SY" : "UNK"); + + return ERROR_OK; + } return evaluate_unknown(opcode, address, instruction); } diff --git a/src/target/arm_disassembler.h b/src/target/arm_disassembler.h index b73f24a89..e9f4d44cb 100644 --- a/src/target/arm_disassembler.h +++ b/src/target/arm_disassembler.h @@ -107,6 +107,7 @@ enum arm_instruction_type { ARM_MRRC, ARM_PLD, ARM_DSB, + ARM_ISB, ARM_QADD, ARM_QDADD, ARM_QSUB,