v5: add disassembler support for EPKTDATACOPY{IMM|R1}_EXT_OPCODE
Test: TH
Change-Id: Ide66182d0c2ef434412cb452c75413a459c7331b
diff --git a/disassembler.c b/disassembler.c
index 3b9f105..228bce0 100644
--- a/disassembler.c
+++ b/disassembler.c
@@ -273,22 +273,21 @@
case EWRITE1_EXT_OPCODE: print_opcode("ewrite1"); bprintf("r%d", reg_num); break;
case EWRITE2_EXT_OPCODE: print_opcode("ewrite2"); bprintf("r%d", reg_num); break;
case EWRITE4_EXT_OPCODE: print_opcode("ewrite4"); bprintf("r%d", reg_num); break;
- case EDATACOPY_EXT_OPCODE:
- case EPKTCOPY_EXT_OPCODE: {
- if (imm == EPKTCOPY_EXT_OPCODE) {
- print_opcode("pcopy");
+ case EPKTDATACOPYIMM_EXT_OPCODE:
+ case EPKTDATACOPYR1_EXT_OPCODE: {
+ if (reg_num == 0) {
+ print_opcode("epktcopy");
} else {
- print_opcode("dcopy");
+ print_opcode("edatacopy");
}
- if (len_field > 0) {
- const uint32_t imm_len = 1 << (len_field - 1);
- uint32_t relative_offs = 0;
- DECODE_IMM(relative_offs, imm_len);
- uint32_t copy_len = 0;
- DECODE_IMM(copy_len, 1);
+ if (imm == EPKTDATACOPYIMM_EXT_OPCODE) {
+ uint32_t len = 0;
+ DECODE_IMM(len, 1);
+ bprintf(" r0, %d", len);
+ } else {
+ bprintf(" r0, r1");
+ }
- bprintf("[r%u+%d], %d", reg_num, relative_offs, copy_len);
- }
break;
}
default: