2000-08-27 Kazu Hirata <kazu@hxi.com>

* sh-dis.c: Fix formatting.
This commit is contained in:
Kazu Hirata
2000-08-26 18:50:14 +00:00
parent da85418c1a
commit 69eb4bbf8e
2 changed files with 73 additions and 65 deletions

View File

@@ -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.

View File

@@ -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;