projects
/
b43-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
assembler: Put commandline args into structure
[b43-tools.git]
/
disassembler
/
main.c
diff --git
a/disassembler/main.c
b/disassembler/main.c
index ba990ab007e3d0ea5b89913aae7605181e265b08..09e7643038b64f4d963bc5a9fe255269e80938ae 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;
@@
-602,6
+603,9
@@
static void disasm_constant_opcodes(struct disassembler_context *ctx,
}
break;
}
}
break;
}
+ case 0x000:
+ disasm_opcode_raw(ctx, stmt, 1);
+ break;
default:
disasm_opcode_raw(ctx, stmt, (cmdargs.unknown_decode == 0));
break;
default:
disasm_opcode_raw(ctx, stmt, (cmdargs.unknown_decode == 0));
break;
@@
-799,7
+803,7
@@
static void emit_asm(struct disassembler_context *ctx)
switch (stmt->type) {
case STMT_INSN:
if (cmdargs.print_addresses)
switch (stmt->type) {
case STMT_INSN:
if (cmdargs.print_addresses)
- fprintf(outfile, "/* %0
3
X */", addr);
+ fprintf(outfile, "/* %0
4
X */", addr);
fprintf(outfile, "\t%s", stmt->u.insn.name);
first = 1;
for (i = 0; i < ARRAY_SIZE(stmt->u.insn.operands); i++) {
fprintf(outfile, "\t%s", stmt->u.insn.name);
first = 1;
for (i = 0; i < ARRAY_SIZE(stmt->u.insn.operands); i++) {
@@
-853,11
+857,11
@@
static int read_input(struct disassembler_context *ctx)
case FMT_B43:
ret = fread(&hdr, 1, sizeof(hdr), infile);
if (ret != sizeof(hdr)) {
case FMT_B43:
ret = fread(&hdr, 1, sizeof(hdr), infile);
if (ret != sizeof(hdr)) {
- fprintf(stderr, "Corrupt input file (no
t fwcutter output
)\n");
+ fprintf(stderr, "Corrupt input file (no
b43 header found
)\n");
goto err_close;
}
if (hdr.type != FW_TYPE_UCODE) {
goto err_close;
}
if (hdr.type != FW_TYPE_UCODE) {
- fprintf(stderr, "Corrupt input file. Not a microcode image.\n");
+ fprintf(stderr, "Corrupt input file. Not a
b43
microcode image.\n");
goto err_close;
}
if (hdr.ver != FW_HDR_VER) {
goto err_close;
}
if (hdr.ver != FW_HDR_VER) {