projects
/
b43-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
asm/dasm: Add support for calls/rets (untested)
[b43-tools.git]
/
disassembler
/
main.c
diff --git
a/disassembler/main.c
b/disassembler/main.c
index ba990ab007e3d0ea5b89913aae7605181e265b08..86ed1f483b2773cd7754224aabd18d886c55bc15 100644
(file)
--- a/
disassembler/main.c
+++ b/
disassembler/main.c
@@
-515,30
+515,31
@@
static void disasm_constant_opcodes(struct disassembler_context *ctx,
stmt->u.insn.operands[2] = str;
break;
}
stmt->u.insn.operands[2] = str;
break;
}
-//TODO also implement it in the assembler
-#if 0
case 0x004: {
if (cmdargs.arch != 15) {
case 0x004: {
if (cmdargs.arch != 15) {
- dasm_error("arch 15
call
instruction found in arch %d binary",
+ dasm_error("arch 15
'calls'
instruction found in arch %d binary",
cmdargs.arch);
}
cmdargs.arch);
}
- stmt->u.insn.name = "call";
+ stmt->u.insn.name = "call
s
";
stmt->u.insn.is_labelref = 0;
stmt->u.insn.labeladdr = stmt->u.insn.bin->operands[2];
if (stmt->u.insn.bin->operands[0] != 0x1780 ||
stmt->u.insn.bin->operands[1] != 0x1780)
stmt->u.insn.is_labelref = 0;
stmt->u.insn.labeladdr = stmt->u.insn.bin->operands[2];
if (stmt->u.insn.bin->operands[0] != 0x1780 ||
stmt->u.insn.bin->operands[1] != 0x1780)
- dasm_warn("r15 call: Invalid first or second argument");
+ dasm_warn("r15 call
s
: Invalid first or second argument");
break;
}
case 0x005: {
if (cmdargs.arch != 15) {
break;
}
case 0x005: {
if (cmdargs.arch != 15) {
- dasm_error("arch 15
ret
instruction found in arch %d binary",
+ dasm_error("arch 15
'rets'
instruction found in arch %d binary",
cmdargs.arch);
}
cmdargs.arch);
}
- stmt->u.insn.name = "ret";
+ stmt->u.insn.name = "rets";
+ if (stmt->u.insn.bin->operands[0] != 0x1780 ||
+ stmt->u.insn.bin->operands[1] != 0x1780 ||
+ stmt->u.insn.bin->operands[2] != 0)
+ dasm_warn("r15 rets: Invalid argument(s)");
break;
}
break;
}
-#endif
case 0x1E0: {
unsigned int flags, mask;
case 0x1E0: {
unsigned int flags, mask;