diff options
author | Ian Lance Taylor <ian@airs.com> | 1997-05-23 20:52:06 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1997-05-23 20:52:06 +0000 |
commit | 54a93a72663f2227528a93a67942b671fd07b151 (patch) | |
tree | 77a13dd2056d39c35fb4cea8ae694607cf949085 /opcodes | |
parent | 81740ee4421f747b424e7c513a3f1d0865163fd0 (diff) | |
download | fsf-binutils-gdb-54a93a72663f2227528a93a67942b671fd07b151.zip fsf-binutils-gdb-54a93a72663f2227528a93a67942b671fd07b151.tar.gz fsf-binutils-gdb-54a93a72663f2227528a93a67942b671fd07b151.tar.bz2 |
* sh-dis.c: Reindent. Rename local variable fprintf to
fprintf_fn.
Diffstat (limited to 'opcodes')
-rw-r--r-- | opcodes/ChangeLog | 5 | ||||
-rw-r--r-- | opcodes/sh-dis.c | 244 |
2 files changed, 129 insertions, 120 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 03fec9b..0c371a4 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +Fri May 23 16:47:23 1997 Ian Lance Taylor <ian@cygnus.com> + + * sh-dis.c: Reindent. Rename local variable fprintf to + fprintf_fn. + Thu May 22 14:06:02 1997 Doug Evans <dje@canuck.cygnus.com> * m32r-opc.c (m32r_cgen_insn_table, cmpui): Undo patch of May 2. diff --git a/opcodes/sh-dis.c b/opcodes/sh-dis.c index ce6cad3..8b6efa8 100644 --- a/opcodes/sh-dis.c +++ b/opcodes/sh-dis.c @@ -1,5 +1,5 @@ /* Disassemble SH instructions. - Copyright (C) 1993, 1995 Free Software Foundation, Inc. + Copyright (C) 1993, 94, 95, 96, 1997 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 @@ -25,28 +25,26 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define LITTLE_BIT 2 static int -print_insn_shx(memaddr, info) +print_insn_shx (memaddr, info) bfd_vma memaddr; struct disassemble_info *info; { - fprintf_ftype fprintf = info->fprintf_func; + fprintf_ftype fprintf_fn = info->fprintf_func; void *stream = info->stream; - unsigned char insn[2]; - unsigned char nibs[4]; + unsigned char insn[2]; + unsigned char nibs[4]; int status; int relmask = ~0; sh_opcode_info *op; - - status = info->read_memory_func(memaddr, insn, 2, info); + + status = info->read_memory_func (memaddr, insn, 2, info); if (status != 0) { - info->memory_error_func(status, memaddr, info); + info->memory_error_func (status, memaddr, info); return -1; } - - if (info->flags & LITTLE_BIT) { nibs[0] = (insn[1] >> 4) & 0xf; @@ -70,187 +68,191 @@ print_insn_shx(memaddr, info) int imm; int rn; int rm; - for (n = 0; n < 4; n++) { - int i = op->nibbles[n]; - if (i < 16) - { - if (nibs[n] == i) continue; - goto fail; - } - switch (i) - { - case BRANCH_8: - imm = (nibs[2] << 4) | (nibs[3]); - if (imm & 0x80) - imm |= ~0xff; - imm = ((char)imm) * 2 + 4 ; - goto ok; + int rb; - case BRANCH_12: - imm = ((nibs[1]) << 8) | (nibs[2] << 4) | (nibs[3]); - if (imm & 0x800) - imm |= ~0xfff; - imm = imm * 2 + 4; - goto ok; - case IMM_4: - imm = nibs[3]; - goto ok; - case IMM_4BY2: - imm = nibs[3] <<1; - goto ok; - case IMM_4BY4: - imm = nibs[3] <<2; - goto ok; - - - case IMM_8: - imm = (nibs[2] << 4) | nibs[3]; - goto ok; - case PCRELIMM_8BY2: - imm = ((nibs[2] << 4) | nibs[3]) <<1; - relmask = ~1; - - goto ok; + for (n = 0; n < 4; n++) + { + int i = op->nibbles[n]; - case PCRELIMM_8BY4: - imm = ((nibs[2] << 4) | nibs[3]) <<2; - relmask = ~3; - goto ok; - - case IMM_8BY2: - imm = ((nibs[2] << 4) | nibs[3]) <<1; - goto ok; - case IMM_8BY4: - imm = ((nibs[2] << 4) | nibs[3]) <<2; - goto ok; - case DISP_8: - imm = (nibs[2] << 4) | (nibs[3]); - goto ok; - case DISP_4: - imm = nibs[3]; - goto ok; - case REG_N: - rn = nibs[n]; - break; - case REG_M: - rm = nibs[n]; - break; - default: - abort(); - } + if (i < 16) + { + if (nibs[n] == i) + continue; + goto fail; + } + switch (i) + { + case BRANCH_8: + imm = (nibs[2] << 4) | (nibs[3]); + if (imm & 0x80) + imm |= ~0xff; + imm = ((char)imm) * 2 + 4 ; + goto ok; + case BRANCH_12: + imm = ((nibs[1]) << 8) | (nibs[2] << 4) | (nibs[3]); + if (imm & 0x800) + imm |= ~0xfff; + imm = imm * 2 + 4; + goto ok; + case IMM_4: + imm = nibs[3]; + goto ok; + case IMM_4BY2: + imm = nibs[3] <<1; + goto ok; + case IMM_4BY4: + imm = nibs[3] <<2; + goto ok; + case IMM_8: + imm = (nibs[2] << 4) | nibs[3]; + goto ok; + case PCRELIMM_8BY2: + imm = ((nibs[2] << 4) | nibs[3]) <<1; + relmask = ~1; + goto ok; + case PCRELIMM_8BY4: + imm = ((nibs[2] << 4) | nibs[3]) <<2; + relmask = ~3; + goto ok; + case IMM_8BY2: + imm = ((nibs[2] << 4) | nibs[3]) <<1; + goto ok; + case IMM_8BY4: + imm = ((nibs[2] << 4) | nibs[3]) <<2; + goto ok; + case DISP_8: + imm = (nibs[2] << 4) | (nibs[3]); + goto ok; + case DISP_4: + imm = nibs[3]; + goto ok; + case REG_N: + rn = nibs[n]; + break; + case REG_M: + rm = nibs[n]; + break; + case REG_B: + rb = nibs[n] & 0x07; + break; + default: + abort(); + } + } - } ok: - fprintf(stream,"%s\t", op->name); + fprintf_fn (stream,"%s\t", op->name); for (n = 0; n < 3 && op->arg[n] != A_END; n++) { if (n && op->arg[1] != A_END) - fprintf(stream,","); + fprintf_fn (stream, ","); switch (op->arg[n]) { case A_IMM: - fprintf(stream,"#%d", (char)(imm)); + fprintf_fn (stream, "#%d", (char)(imm)); break; case A_R0: - fprintf(stream,"r0"); + fprintf_fn (stream, "r0"); break; case A_REG_N: - fprintf(stream,"r%d", rn); + fprintf_fn (stream, "r%d", rn); break; case A_INC_N: - fprintf(stream,"@r%d+", rn); + fprintf_fn (stream, "@r%d+", rn); break; case A_DEC_N: - fprintf(stream,"@-r%d", rn); + fprintf_fn (stream, "@-r%d", rn); break; case A_IND_N: - fprintf(stream,"@r%d", rn); + fprintf_fn (stream, "@r%d", rn); break; case A_DISP_REG_N: - fprintf(stream,"@(%d,r%d)",imm, rn); + fprintf_fn (stream, "@(%d,r%d)", imm, rn); break; case A_REG_M: - fprintf(stream,"r%d", rm); + fprintf_fn (stream, "r%d", rm); break; case A_INC_M: - fprintf(stream,"@r%d+", rm); + fprintf_fn (stream, "@r%d+", rm); break; case A_DEC_M: - fprintf(stream,"@-r%d", rm); + fprintf_fn (stream, "@-r%d", rm); break; case A_IND_M: - fprintf(stream,"@r%d", rm); + fprintf_fn (stream, "@r%d", rm); break; case A_DISP_REG_M: - fprintf(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); break; case A_DISP_PC: - fprintf(stream,"0x%0x", imm+ 4+(memaddr&relmask)); + fprintf_fn (stream, "0x%0x", imm + 4 + (memaddr & relmask)); break; case A_IND_R0_REG_N: - fprintf(stream,"@(r0,r%d)", rn); + fprintf_fn (stream, "@(r0,r%d)", rn); break; case A_IND_R0_REG_M: - fprintf(stream,"@(r0,r%d)", rm); + fprintf_fn (stream, "@(r0,r%d)", rm); break; case A_DISP_GBR: - fprintf(stream,"@(%d,gbr)",imm); + fprintf_fn (stream, "@(%d,gbr)",imm); break; case A_R0_GBR: - fprintf(stream,"@(r0,gbr)"); + fprintf_fn (stream, "@(r0,gbr)"); break; case A_BDISP12: case A_BDISP8: (*info->print_address_func) (imm + memaddr, info); break; case A_SR: - fprintf(stream,"sr"); + fprintf_fn (stream, "sr"); break; case A_GBR: - fprintf(stream,"gbr"); + fprintf_fn (stream, "gbr"); break; case A_VBR: - fprintf(stream,"vbr"); + fprintf_fn (stream, "vbr"); break; case A_SSR: - fprintf(stream,"ssr"); + fprintf_fn (stream, "ssr"); break; case A_SPC: - fprintf(stream,"spc"); + fprintf_fn (stream, "spc"); break; case A_MACH: - fprintf(stream,"mach"); + fprintf_fn (stream, "mach"); break; case A_MACL: - fprintf(stream,"macl"); + fprintf_fn (stream ,"macl"); break; case A_PR: - fprintf(stream,"pr"); + fprintf_fn (stream, "pr"); break; -/* start-sanitize-sh3e */ case F_REG_N: - fprintf(stream,"fr%d", rn); + fprintf_fn (stream, "fr%d", rn); break; case F_REG_M: - fprintf(stream,"fr%d", rm); + fprintf_fn (stream, "fr%d", rm); break; case FPSCR_M: case FPSCR_N: - fprintf(stream,"fpscr"); + fprintf_fn (stream, "fpscr"); break; case FPUL_M: case FPUL_N: - fprintf(stream,"fpul"); + fprintf_fn (stream, "fpul"); break; case F_FR0: - fprintf(stream,"fr0"); + fprintf_fn (stream, "fr0"); break; -/* end-sanitize-sh3e */ default: abort(); } } + if (!(info->flags & 1) && (op->name[0] == 'j' || (op->name[0] == 'b' @@ -260,40 +262,42 @@ print_insn_shx(memaddr, info) || (op->name[0] == 'b' && op->name[2] == '.'))) { info->flags |= 1; - fprintf(stream,"\t(slot "); print_insn_shx(memaddr +2, info); + fprintf_fn (stream, "\t(slot "); + print_insn_shx (memaddr + 2, info); info->flags &= ~1; - fprintf(stream,")"); + fprintf_fn (stream, ")"); return 4; } - + return 2; fail: ; } - fprintf(stream,".word 0x%x%x%x%x", nibs[0], nibs[1], nibs[2], nibs[3]); + fprintf_fn (stream, ".word 0x%x%x%x%x", nibs[0], nibs[1], nibs[2], nibs[3]); return 2; } - int -print_insn_shl(memaddr, info) +print_insn_shl (memaddr, info) bfd_vma memaddr; struct disassemble_info *info; { int r; + info->flags = LITTLE_BIT; - r =print_insn_shx (memaddr, info); + r = print_insn_shx (memaddr, info); return r; } int -print_insn_sh(memaddr, info) +print_insn_sh (memaddr, info) bfd_vma memaddr; struct disassemble_info *info; { int r; + info->flags = 0; - r =print_insn_shx (memaddr, info); + r = print_insn_shx (memaddr, info); return r; } |