This is the second biggest read-write global in a sparc64 bsd.mp: 0000000001c091b8 g O .data 0000000000002cb8 sparc_i
ddb(4) does not ever write to it and happily decodes instructions after moving it to .rodata: ddb{3}> x /i %pc db_inst_branch+0x10: be,pn db_inst_branch+0x64 ddb{3}> x /i db_enter db_enter: add %sp, -0xd0, %sp ddb{3}> x /i 0 0: illtrap 0 Fix two comment typos while here. OK? diff --git a/sys/arch/sparc64/sparc64/db_disasm.c b/sys/arch/sparc64/sparc64/db_disasm.c index b697ad5e163..8924a762dc0 100644 --- a/sys/arch/sparc64/sparc64/db_disasm.c +++ b/sys/arch/sparc64/sparc64/db_disasm.c @@ -153,7 +153,7 @@ char *prefetch[] = { /* The sparc instruction table has a format field which tells what the operand structure for this instruction is. Here are the codes: -Modifiers (nust be first): +Modifiers (must be first): a -- opcode has annul bit p -- opcode has branch prediction bit @@ -201,7 +201,7 @@ V8 only: */ -struct sparc_insn sparc_i[] = { +const struct sparc_insn sparc_i[] = { /* * Format 1: Call @@ -217,7 +217,7 @@ struct sparc_insn sparc_i[] = { /* Note: if imm22 is zero then this is actually a "nop" grrr... */ {(FORMAT2(0, 0x4)), "sethi", "Cd"}, - /* Branch on Integer Co`ndition Codes "Bicc" */ + /* Branch on Integer Condition Codes "Bicc" */ {(FORMAT2(0, 2) | COND(8)), "ba", "a,m"}, {(FORMAT2(0, 2) | COND(0)), "bn", "a,m"}, {(FORMAT2(0, 2) | COND(9)), "bne", "a,m"}, @@ -877,7 +877,7 @@ struct sparc_insn sparc_i[] = { vaddr_t db_disasm(vaddr_t loc, int altfmt) { - struct sparc_insn* i_ptr = (struct sparc_insn *)&sparc_i; + const struct sparc_insn *i_ptr = (const struct sparc_insn *)&sparc_i; unsigned int insn, you_lose, bitmask; int matchp;