diff options
-rw-r--r-- | opcodes/ChangeLog | 4 | ||||
-rw-r--r-- | opcodes/sh-dis.c | 134 |
2 files changed, 73 insertions, 65 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 567b801..99385f8 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,7 @@ +2000-08-27 Kazu Hirata <kazu@hxi.com> + + * sh-dis.c: Fix formatting. + 2000-08-24 David Edelsohn <dje@watson.ibm.com> * ppc-opc.c (powerpc_opcodes): Add rfid, mtsrd, mtsrdin, mtmsrd. diff --git a/opcodes/sh-dis.c b/opcodes/sh-dis.c index 548e2a8..e467515 100644 --- a/opcodes/sh-dis.c +++ b/opcodes/sh-dis.c @@ -1,5 +1,6 @@ /* Disassemble SH instructions. - Copyright (C) 1993, 94, 95, 96, 97, 1998, 2000 Free Software Foundation, Inc. + Copyright (C) 1993, 94, 95, 96, 97, 1998, 2000 + Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,22 +35,22 @@ print_movxy (op, rn, rm, fprintf_fn, stream) { int n; - fprintf_fn (stream,"%s\t", op->name); + fprintf_fn (stream, "%s\t", op->name); for (n = 0; n < 2; n++) { switch (op->arg[n]) { case A_IND_N: - fprintf_fn (stream, "@r%d", rn); + fprintf_fn (stream, "@r%d", rn); break; case A_INC_N: - fprintf_fn (stream, "@r%d+", rn); + fprintf_fn (stream, "@r%d+", rn); break; case A_PMOD_N: - fprintf_fn (stream, "@r%d+r8", rn); + fprintf_fn (stream, "@r%d+r8", rn); break; case A_PMODY_N: - fprintf_fn (stream, "@r%d+r9", rn); + fprintf_fn (stream, "@r%d+r9", rn); break; case DSP_REG_M: fprintf_fn (stream, "a%c", '0' + rm); @@ -64,7 +65,7 @@ print_movxy (op, rn, rm, fprintf_fn, stream) abort (); } if (n == 0) - fprintf_fn (stream, ","); + fprintf_fn (stream, ","); } } @@ -72,6 +73,7 @@ print_movxy (op, rn, rm, fprintf_fn, stream) nibbles of the insn, i.e. field a and the bit that indicates if a parallel processing insn follows. Return nonzero if a field b of a parallel processing insns follows. */ + static void print_insn_ddt (insn, info) int insn; @@ -101,15 +103,16 @@ print_insn_ddt (insn, info) if (! first_movx) { - for (first_movx = sh_table; first_movx->nibbles[1] != MOVX; ) + for (first_movx = sh_table; first_movx->nibbles[1] != MOVX;) first_movx++; - for (first_movy = first_movx; first_movy->nibbles[1] != MOVY; ) + for (first_movy = first_movx; first_movy->nibbles[1] != MOVY;) first_movy++; } insn_x = (insn >> 2) & 0xb; if (insn_x) { - for (opx = first_movx; opx->nibbles[2] != insn_x; ) opx++; + for (opx = first_movx; opx->nibbles[2] != insn_x;) + opx++; print_movxy (opx, ((insn >> 9) & 1) + 4, (insn >> 7) & 1, fprintf_fn, stream); } @@ -118,7 +121,8 @@ print_insn_ddt (insn, info) { if (insn_x) fprintf_fn (stream, "\t"); - for (opy = first_movy; opy->nibbles[2] != insn_y; ) opy++; + for (opy = first_movy; opy->nibbles[2] != insn_y;) + opy++; print_movxy (opy, ((insn >> 8) & 1) + 6, (insn >> 6) & 1, fprintf_fn, stream); } @@ -174,8 +178,8 @@ print_insn_ppi (field_b, info) int field_b; struct disassemble_info *info; { - static char *sx_tab[] = {"x0","x1","a0","a1"}; - static char *sy_tab[] = {"y0","y1","m0","m1"}; + static char *sx_tab[] = { "x0", "x1", "a0", "a1" }; + static char *sy_tab[] = { "y0", "y1", "m0", "m1" }; fprintf_ftype fprintf_fn = info->fprintf_func; void *stream = info->stream; int nib1, nib2, nib3; @@ -192,10 +196,10 @@ print_insn_ppi (field_b, info) } if ((field_b & 0xc000) == 0x4000 && (field_b & 0x3000) != 0x1000) { - static char *du_tab[] = {"x0","y0","a0","a1"}; - static char *se_tab[] = {"x0","x1","y0","a1"}; - static char *sf_tab[] = {"y0","y1","x0","a1"}; - static char *sg_tab[] = {"m0","m1","a0","a1"}; + static char *du_tab[] = { "x0", "y0", "a0", "a1" }; + static char *se_tab[] = { "x0", "x1", "y0", "a1" }; + static char *sf_tab[] = { "y0", "y1", "x0", "a1" }; + static char *sg_tab[] = { "m0", "m1", "a0", "a1" }; if (field_b & 0x2000) { @@ -243,11 +247,11 @@ print_insn_ppi (field_b, info) int n; fprintf_fn (stream, "%s%s\t", dc, op->name); - for (n = 0; n < 3 && op->arg[n] != A_END; n++) + for (n = 0; n < 3 && op->arg[n] != A_END; n++) { if (n && op->arg[1] != A_END) fprintf_fn (stream, ","); - switch (op->arg[n]) + switch (op->arg[n]) { case DSP_REG_N: print_dsp_reg (field_b & 0xf, fprintf_fn, stream); @@ -262,7 +266,7 @@ print_insn_ppi (field_b, info) fprintf_fn (stream, "mach"); break; case A_MACL: - fprintf_fn (stream ,"macl"); + fprintf_fn (stream, "macl"); break; default: abort (); @@ -275,7 +279,7 @@ print_insn_ppi (field_b, info) fprintf_fn (stream, ".word 0x%x", field_b); } -static int +static int print_insn_shx (memaddr, info) bfd_vma memaddr; struct disassemble_info *info; @@ -285,7 +289,7 @@ print_insn_shx (memaddr, info) unsigned char insn[2]; unsigned char nibs[4]; int status; - bfd_vma relmask = ~ (bfd_vma) 0; + bfd_vma relmask = ~(bfd_vma) 0; sh_opcode_info *op; int target_arch; @@ -318,13 +322,13 @@ print_insn_shx (memaddr, info) status = info->read_memory_func (memaddr, insn, 2, info); - if (status != 0) + if (status != 0) { info->memory_error_func (status, memaddr, info); return -1; } - if (info->flags & LITTLE_BIT) + if (info->flags & LITTLE_BIT) { nibs[0] = (insn[1] >> 4) & 0xf; nibs[1] = insn[1] & 0xf; @@ -332,7 +336,7 @@ print_insn_shx (memaddr, info) nibs[2] = (insn[0] >> 4) & 0xf; nibs[3] = insn[0] & 0xf; } - else + else { nibs[0] = (insn[0] >> 4) & 0xf; nibs[1] = insn[0] & 0xf; @@ -349,13 +353,13 @@ print_insn_shx (memaddr, info) status = info->read_memory_func (memaddr + 2, insn, 2, info); - if (status != 0) + if (status != 0) { info->memory_error_func (status, memaddr + 2, info); return -1; } - if (info->flags & LITTLE_BIT) + if (info->flags & LITTLE_BIT) field_b = insn[1] << 8 | insn[0]; else field_b = insn[0] << 8 | insn[1]; @@ -367,7 +371,7 @@ print_insn_shx (memaddr, info) print_insn_ddt ((nibs[1] << 8) | (nibs[2] << 4) | nibs[3], info); return 2; } - for (op = sh_table; op->name; op++) + for (op = sh_table; op->name; op++) { int n; int imm = 0; @@ -383,7 +387,7 @@ print_insn_shx (memaddr, info) { int i = op->nibbles[n]; - if (i < 16) + if (i < 16) { if (nibs[n] == i) continue; @@ -392,10 +396,10 @@ print_insn_shx (memaddr, info) switch (i) { case BRANCH_8: - imm = (nibs[2] << 4) | (nibs[3]); + imm = (nibs[2] << 4) | (nibs[3]); if (imm & 0x80) imm |= ~0xff; - imm = ((char)imm) * 2 + 4 ; + imm = ((char) imm) * 2 + 4; goto ok; case BRANCH_12: imm = ((nibs[1]) << 8) | (nibs[2] << 4) | (nibs[3]); @@ -409,31 +413,31 @@ print_insn_shx (memaddr, info) goto ok; case IMM0_4BY2: case IMM1_4BY2: - imm = nibs[3] <<1; + imm = nibs[3] << 1; goto ok; case IMM0_4BY4: case IMM1_4BY4: - imm = nibs[3] <<2; + imm = nibs[3] << 2; goto ok; case IMM0_8: case IMM1_8: imm = (nibs[2] << 4) | nibs[3]; goto ok; case PCRELIMM_8BY2: - imm = ((nibs[2] << 4) | nibs[3]) <<1; - relmask = ~ (bfd_vma) 1; + imm = ((nibs[2] << 4) | nibs[3]) << 1; + relmask = ~(bfd_vma) 1; goto ok; case PCRELIMM_8BY4: - imm = ((nibs[2] << 4) | nibs[3]) <<2; - relmask = ~ (bfd_vma) 3; + imm = ((nibs[2] << 4) | nibs[3]) << 2; + relmask = ~(bfd_vma) 3; goto ok; case IMM0_8BY2: case IMM1_8BY2: - imm = ((nibs[2] << 4) | nibs[3]) <<1; + imm = ((nibs[2] << 4) | nibs[3]) << 1; goto ok; case IMM0_8BY4: case IMM1_8BY4: - imm = ((nibs[2] << 4) | nibs[3]) <<2; + imm = ((nibs[2] << 4) | nibs[3]) << 2; goto ok; case REG_N: rn = nibs[n]; @@ -447,7 +451,7 @@ print_insn_shx (memaddr, info) break; case REG_B: rb = nibs[n] & 0x07; - break; + break; case SDT_REG_N: /* sh-dsp: single data transfer. */ rn = nibs[n]; @@ -460,21 +464,21 @@ print_insn_shx (memaddr, info) case REPEAT: goto fail; default: - abort(); + abort (); } } ok: - fprintf_fn (stream,"%s\t", op->name); + fprintf_fn (stream, "%s\t", op->name); disp_pc = 0; - for (n = 0; n < 3 && op->arg[n] != A_END; n++) + for (n = 0; n < 3 && op->arg[n] != A_END; n++) { if (n && op->arg[1] != A_END) fprintf_fn (stream, ","); - switch (op->arg[n]) + switch (op->arg[n]) { case A_IMM: - fprintf_fn (stream, "#%d", (char)(imm)); + fprintf_fn (stream, "#%d", (char) (imm)); break; case A_R0: fprintf_fn (stream, "r0"); @@ -483,34 +487,34 @@ print_insn_shx (memaddr, info) fprintf_fn (stream, "r%d", rn); break; case A_INC_N: - fprintf_fn (stream, "@r%d+", rn); + fprintf_fn (stream, "@r%d+", rn); break; case A_DEC_N: - fprintf_fn (stream, "@-r%d", rn); + fprintf_fn (stream, "@-r%d", rn); break; case A_IND_N: - fprintf_fn (stream, "@r%d", rn); + fprintf_fn (stream, "@r%d", rn); break; case A_DISP_REG_N: - fprintf_fn (stream, "@(%d,r%d)", imm, rn); + fprintf_fn (stream, "@(%d,r%d)", imm, rn); break; case A_PMOD_N: - fprintf_fn (stream, "@r%d+r8", rn); + fprintf_fn (stream, "@r%d+r8", rn); break; case A_REG_M: fprintf_fn (stream, "r%d", rm); break; case A_INC_M: - fprintf_fn (stream, "@r%d+", rm); + fprintf_fn (stream, "@r%d+", rm); break; case A_DEC_M: - fprintf_fn (stream, "@-r%d", rm); + fprintf_fn (stream, "@-r%d", rm); break; case A_IND_M: - fprintf_fn (stream, "@r%d", rm); + fprintf_fn (stream, "@r%d", rm); break; case A_DISP_REG_M: - fprintf_fn (stream, "@(%d,r%d)", imm, rm); + fprintf_fn (stream, "@(%d,r%d)", imm, rm); break; case A_REG_B: fprintf_fn (stream, "r%d_bank", rb); @@ -522,12 +526,12 @@ print_insn_shx (memaddr, info) break; case A_IND_R0_REG_N: fprintf_fn (stream, "@(r0,r%d)", rn); - break; + break; case A_IND_R0_REG_M: fprintf_fn (stream, "@(r0,r%d)", rm); - break; + break; case A_DISP_GBR: - fprintf_fn (stream, "@(%d,gbr)",imm); + fprintf_fn (stream, "@(%d,gbr)", imm); break; case A_R0_GBR: fprintf_fn (stream, "@(r0,gbr)"); @@ -585,7 +589,7 @@ print_insn_shx (memaddr, info) fprintf_fn (stream, "mach"); break; case A_MACL: - fprintf_fn (stream ,"macl"); + fprintf_fn (stream, "macl"); break; case A_PR: fprintf_fn (stream, "pr"); @@ -633,16 +637,16 @@ print_insn_shx (memaddr, info) fprintf_fn (stream, "fr0"); break; case V_REG_N: - fprintf_fn (stream, "fv%d", rn*4); + fprintf_fn (stream, "fv%d", rn * 4); break; case V_REG_M: - fprintf_fn (stream, "fv%d", rm*4); + fprintf_fn (stream, "fv%d", rm * 4); break; case XMTRX_M4: fprintf_fn (stream, "xmtrx"); break; default: - abort(); + abort (); } } @@ -655,7 +659,7 @@ print_insn_shx (memaddr, info) if (!(info->flags & 1) && (op->name[0] == 'j' || (op->name[0] == 'b' - && (op->name[1] == 'r' + && (op->name[1] == 'r' || op->name[1] == 's')) || (op->name[0] == 'r' && op->name[1] == 't') || (op->name[0] == 'b' && op->name[2] == '.'))) @@ -674,7 +678,7 @@ print_insn_shx (memaddr, info) int size; bfd_byte bytes[4]; - if (relmask == ~ (bfd_vma) 1) + if (relmask == ~(bfd_vma) 1) size = 2; else size = 4; @@ -710,7 +714,7 @@ print_insn_shx (memaddr, info) return 2; } -int +int print_insn_shl (memaddr, info) bfd_vma memaddr; struct disassemble_info *info; @@ -722,7 +726,7 @@ print_insn_shl (memaddr, info) return r; } -int +int print_insn_sh (memaddr, info) bfd_vma memaddr; struct disassemble_info *info; |