gas/
* config/m68k-parse.h (RAMBAR_ALT): New. * config/tc-m68k.c (mcf5206_ctrl, mcf5307_ctrl): New. (mcf_ctrl, mcf5208_ctrl, mcf5210a_ctrl, mcf5213_ctrl, mcf52235_ctrl, mcf5225_ctrl, mcf5235_ctrl, mcf5271_ctrl, mcf5275_ctrl, mcf5282_ctrl, mcf5329_ctrl, mcf5373_ctrl, mcfv4e_ctrl, mcf5475_ctrl, mcf5485_ctrl): Add RAMBAR synonym for RAMBAR1. (mcf5272_ctrl): Add RAMBAR0, replace add RAMBAR with RAMBAR_ALT. (m68k_cpus): Adjust 5206, 5206e & 5307 entries. (m68k_ip) <Case J>: Detect when RAMBAR_ALT should be used. Add it to control register mapping. gas/testsuite/ * gas/m68k/ctrl-1.d, gas/m68k/ctrl-1.s: New. * gas/m68k/ctrl-2.d, gas/m68k/ctrl-2.s: New. * gas/m68k/all.exp: Add them. opcodes/ * m68k-dis.c (print_insn_arg): Show c04 as rambar0 and c05 as rambar1.
This commit is contained in:
parent
c6e15d68d9
commit
7833670643
@ -1,3 +1,17 @@
|
||||
2007-04-20 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* config/m68k-parse.h (RAMBAR_ALT): New.
|
||||
* config/tc-m68k.c (mcf5206_ctrl, mcf5307_ctrl): New.
|
||||
(mcf_ctrl, mcf5208_ctrl, mcf5210a_ctrl, mcf5213_ctrl, mcf52235_ctrl,
|
||||
mcf5225_ctrl, mcf5235_ctrl, mcf5271_ctrl, mcf5275_ctrl,
|
||||
mcf5282_ctrl, mcf5329_ctrl, mcf5373_ctrl, mcfv4e_ctrl,
|
||||
mcf5475_ctrl, mcf5485_ctrl): Add RAMBAR synonym for
|
||||
RAMBAR1.
|
||||
(mcf5272_ctrl): Add RAMBAR0, replace add RAMBAR with RAMBAR_ALT.
|
||||
(m68k_cpus): Adjust 5206, 5206e & 5307 entries.
|
||||
(m68k_ip) <Case J>: Detect when RAMBAR_ALT should be used. Add it
|
||||
to control register mapping.
|
||||
|
||||
2007-04-20 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* messages.c (as_internal_value_out_of_range): Fix typo in
|
||||
|
@ -113,6 +113,8 @@ enum m68k_register
|
||||
BUSCR, /* 68060 added these. */
|
||||
PCR,
|
||||
ROMBAR, /* mcf5200 added these. */
|
||||
RAMBAR_ALT, /* Some CF chips have RAMBAR using
|
||||
RAMBAR0's number */
|
||||
RAMBAR0,
|
||||
RAMBAR1,
|
||||
MMUBAR, /* mcfv4e added these. */
|
||||
|
@ -173,39 +173,43 @@ static const enum m68k_register m68060_ctrl[] = {
|
||||
};
|
||||
static const enum m68k_register mcf_ctrl[] = {
|
||||
CACR, TC, ACR0, ACR1, ACR2, ACR3, VBR, ROMBAR,
|
||||
RAMBAR0, RAMBAR1, MBAR,
|
||||
RAMBAR0, RAMBAR1, RAMBAR, MBAR,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5206_ctrl[] = {
|
||||
CACR, ACR0, ACR1, VBR, RAMBAR0, RAMBAR_ALT, MBAR,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5208_ctrl[] = {
|
||||
CACR, ACR0, ACR1, VBR, RAMBAR1,
|
||||
CACR, ACR0, ACR1, VBR, RAMBAR, RAMBAR1,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5210a_ctrl[] = {
|
||||
VBR, CACR, ACR0, ACR1, ROMBAR, RAMBAR, MBAR,
|
||||
VBR, CACR, ACR0, ACR1, ROMBAR, RAMBAR, RAMBAR1, MBAR,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5213_ctrl[] = {
|
||||
VBR, RAMBAR, FLASHBAR,
|
||||
VBR, RAMBAR, RAMBAR1, FLASHBAR,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5216_ctrl[] = {
|
||||
VBR, CACR, ACR0, ACR1, FLASHBAR, RAMBAR,
|
||||
VBR, CACR, ACR0, ACR1, FLASHBAR, RAMBAR, RAMBAR1,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf52235_ctrl[] = {
|
||||
VBR, FLASHBAR, RAMBAR,
|
||||
VBR, FLASHBAR, RAMBAR, RAMBAR1,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5225_ctrl[] = {
|
||||
VBR, CACR, ACR0, ACR1, FLASHBAR, RAMBAR, MBAR,
|
||||
VBR, CACR, ACR0, ACR1, FLASHBAR, RAMBAR, MBAR, RAMBAR1,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5235_ctrl[] = {
|
||||
VBR, CACR, ACR0, ACR1, RAMBAR,
|
||||
VBR, CACR, ACR0, ACR1, RAMBAR, RAMBAR1,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5249_ctrl[] = {
|
||||
VBR, CACR, ACR0, ACR1, RAMBAR0, RAMBAR1, MBAR, MBAR2,
|
||||
VBR, CACR, ACR0, ACR1, RAMBAR0, RAMBAR1, RAMBAR, MBAR, MBAR2,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5250_ctrl[] = {
|
||||
@ -213,27 +217,31 @@ static const enum m68k_register mcf5250_ctrl[] = {
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5271_ctrl[] = {
|
||||
VBR, CACR, ACR0, ACR1, RAMBAR,
|
||||
VBR, CACR, ACR0, ACR1, RAMBAR, RAMBAR1,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5272_ctrl[] = {
|
||||
VBR, CACR, ACR0, ACR1, ROMBAR, RAMBAR, MBAR,
|
||||
VBR, CACR, ACR0, ACR1, ROMBAR, RAMBAR_ALT, RAMBAR0, MBAR,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5275_ctrl[] = {
|
||||
VBR, CACR, ACR0, ACR1, RAMBAR,
|
||||
VBR, CACR, ACR0, ACR1, RAMBAR, RAMBAR1,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5282_ctrl[] = {
|
||||
VBR, CACR, ACR0, ACR1, FLASHBAR, RAMBAR,
|
||||
VBR, CACR, ACR0, ACR1, FLASHBAR, RAMBAR, RAMBAR1,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5307_ctrl[] = {
|
||||
CACR, ACR0, ACR1, VBR, RAMBAR0, RAMBAR_ALT, MBAR,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5329_ctrl[] = {
|
||||
VBR, CACR, ACR0, ACR1, RAMBAR,
|
||||
VBR, CACR, ACR0, ACR1, RAMBAR, RAMBAR1,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5373_ctrl[] = {
|
||||
VBR, CACR, ACR0, ACR1, RAMBAR,
|
||||
VBR, CACR, ACR0, ACR1, RAMBAR, RAMBAR1,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcfv4e_ctrl[] = {
|
||||
@ -249,7 +257,7 @@ static const enum m68k_register mcfv4e_ctrl[] = {
|
||||
TC /* ASID */, BUSCR /* MMUBAR */,
|
||||
ITT0 /* ACR0 */, ITT1 /* ACR1 */, DTT0 /* ACR2 */, DTT1 /* ACR3 */,
|
||||
MBAR1 /* MBAR */, MBAR2 /* SECMBAR */, MBAR0 /* SECMBAR */,
|
||||
ROMBAR /* ROMBAR0 */,
|
||||
ROMBAR /* ROMBAR0 */, RAMBAR /* RAMBAR1 */,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5475_ctrl[] = {
|
||||
@ -258,7 +266,7 @@ static const enum m68k_register mcf5475_ctrl[] = {
|
||||
/* Legacy names */
|
||||
TC /* ASID */, BUSCR /* MMUBAR */,
|
||||
ITT0 /* ACR0 */, ITT1 /* ACR1 */, DTT0 /* ACR2 */, DTT1 /* ACR3 */,
|
||||
MBAR1 /* MBAR */, ROMBAR /* ROMBAR0 */,
|
||||
MBAR1 /* MBAR */, RAMBAR /* RAMBAR1 */,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register mcf5485_ctrl[] = {
|
||||
@ -267,7 +275,7 @@ static const enum m68k_register mcf5485_ctrl[] = {
|
||||
/* Legacy names */
|
||||
TC /* ASID */, BUSCR /* MMUBAR */,
|
||||
ITT0 /* ACR0 */, ITT1 /* ACR1 */, DTT0 /* ACR2 */, DTT1 /* ACR3 */,
|
||||
MBAR1 /* MBAR */, ROMBAR /* ROMBAR0 */,
|
||||
MBAR1 /* MBAR */, RAMBAR /* RAMBAR1 */,
|
||||
0
|
||||
};
|
||||
static const enum m68k_register fido_ctrl[] = {
|
||||
@ -530,9 +538,9 @@ static const struct m68k_cpu m68k_cpus[] =
|
||||
{mcfisa_a, mcf_ctrl, "5200", 0},
|
||||
{mcfisa_a, mcf_ctrl, "5202", 1},
|
||||
{mcfisa_a, mcf_ctrl, "5204", 1},
|
||||
{mcfisa_a, mcf_ctrl, "5206", 1},
|
||||
{mcfisa_a, mcf5206_ctrl, "5206", 1},
|
||||
|
||||
{mcfisa_a|mcfhwdiv|mcfmac, mcf_ctrl, "5206e", 0},
|
||||
{mcfisa_a|mcfhwdiv|mcfmac, mcf5206_ctrl, "5206e", 0},
|
||||
|
||||
{mcfisa_a|mcfisa_aa|mcfhwdiv|mcfemac|mcfusp, mcf5208_ctrl, "5207", -1},
|
||||
{mcfisa_a|mcfisa_aa|mcfhwdiv|mcfemac|mcfusp, mcf5208_ctrl, "5208", 0},
|
||||
@ -578,7 +586,7 @@ static const struct m68k_cpu m68k_cpus[] =
|
||||
{mcfisa_a|mcfisa_aa|mcfhwdiv|mcfemac|mcfusp, mcf5282_ctrl, "5282", -1},
|
||||
{mcfisa_a|mcfisa_aa|mcfhwdiv|mcfemac|mcfusp, mcf5282_ctrl, "528x", 0},
|
||||
|
||||
{mcfisa_a|mcfhwdiv|mcfmac, mcf_ctrl, "5307", 0},
|
||||
{mcfisa_a|mcfhwdiv|mcfmac, mcf5307_ctrl, "5307", 0},
|
||||
|
||||
{mcfisa_a|mcfisa_aa|mcfhwdiv|mcfemac|mcfusp, mcf5329_ctrl, "5327", -1},
|
||||
{mcfisa_a|mcfisa_aa|mcfhwdiv|mcfemac|mcfusp, mcf5329_ctrl, "5328", -1},
|
||||
@ -1743,8 +1751,18 @@ m68k_ip (char *instring)
|
||||
const enum m68k_register *rp;
|
||||
|
||||
for (rp = control_regs; *rp; rp++)
|
||||
if (*rp == opP->reg)
|
||||
break;
|
||||
{
|
||||
if (*rp == opP->reg)
|
||||
break;
|
||||
/* In most CPUs RAMBAR refers to control reg
|
||||
c05 (RAMBAR1), but a few CPUs have it
|
||||
refer to c04 (RAMBAR0). */
|
||||
else if (*rp == RAMBAR_ALT && opP->reg == RAMBAR)
|
||||
{
|
||||
opP->reg = RAMBAR_ALT;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (*rp == 0)
|
||||
losing++;
|
||||
}
|
||||
@ -3075,6 +3093,7 @@ m68k_ip (char *instring)
|
||||
break;
|
||||
case FLASHBAR:
|
||||
case RAMBAR0:
|
||||
case RAMBAR_ALT:
|
||||
tmpreg = 0xC04;
|
||||
break;
|
||||
case RAMBAR:
|
||||
|
@ -1,3 +1,9 @@
|
||||
2007-04-20 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* gas/m68k/ctrl-1.d, gas/m68k/ctrl-1.s: New.
|
||||
* gas/m68k/ctrl-2.d, gas/m68k/ctrl-2.s: New.
|
||||
* gas/m68k/all.exp: Add them.
|
||||
|
||||
2007-04-20 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* gas/ppc/range64.s: New.
|
||||
|
@ -52,6 +52,9 @@ if { [istarget m68*-*-*] || [istarget fido*-*-*] } then {
|
||||
run_dump_test arch-cpu-1
|
||||
run_dump_test cpu32
|
||||
|
||||
run_dump_test ctrl-1
|
||||
run_dump_test ctrl-2
|
||||
|
||||
set testname "68000 operands"
|
||||
gas_run "operands.s" "-m68000" "2>err.out"
|
||||
if ![string match "child process exited abnormally" $comp_output] then {
|
||||
|
12
gas/testsuite/gas/m68k/ctrl-1.d
Normal file
12
gas/testsuite/gas/m68k/ctrl-1.d
Normal file
@ -0,0 +1,12 @@
|
||||
#name: ctrl-1.d
|
||||
#objdump: -d
|
||||
#as: -mcpu=5307
|
||||
|
||||
.*: file format .*
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
0+ <.text>:
|
||||
0: 4e7b 0c04 movec %d0,%rambar0
|
||||
4: 4e7b 0c04 movec %d0,%rambar0
|
||||
|
2
gas/testsuite/gas/m68k/ctrl-1.s
Normal file
2
gas/testsuite/gas/m68k/ctrl-1.s
Normal file
@ -0,0 +1,2 @@
|
||||
movec %d0,%rambar
|
||||
movec %d0,%rambar0
|
11
gas/testsuite/gas/m68k/ctrl-2.d
Normal file
11
gas/testsuite/gas/m68k/ctrl-2.d
Normal file
@ -0,0 +1,11 @@
|
||||
#name: ctrl-2.d
|
||||
#objdump: -d
|
||||
#as: -mcpu=5208
|
||||
|
||||
.*: file format .*
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
0+ <.text>:
|
||||
0: 4e7b 0c05 movec %d0,%rambar1
|
||||
4: 4e7b 0c05 movec %d0,%rambar1
|
2
gas/testsuite/gas/m68k/ctrl-2.s
Normal file
2
gas/testsuite/gas/m68k/ctrl-2.s
Normal file
@ -0,0 +1,2 @@
|
||||
movec %d0,%rambar
|
||||
movec %d0,%rambar1
|
@ -1,3 +1,8 @@
|
||||
2007-04-20 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* m68k-dis.c (print_insn_arg): Show c04 as rambar0 and c05 as
|
||||
rambar1.
|
||||
|
||||
2007-04-20 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* ppc-dis.c (print_insn_powerpc): Adjust for struct powerpc_operand
|
||||
|
@ -645,7 +645,9 @@ print_insn_arg (const char *d,
|
||||
{"%dtt0",0x006}, {"%dtt1",0x007}, {"%buscr",0x008},
|
||||
{"%usp", 0x800}, {"%vbr", 0x801}, {"%caar", 0x802},
|
||||
{"%msp", 0x803}, {"%isp", 0x804},
|
||||
{"%flashbar", 0xc04}, {"%rambar", 0xc05}, /* mcf528x added these. */
|
||||
/* reg c04 is sometimes called flashbar or rambar.
|
||||
rec c05 is also sometimes called rambar. */
|
||||
{"%rambar0", 0xc04}, {"%rambar1", 0xc05},
|
||||
|
||||
/* Should we be calling this psr like we do in case 'Y'? */
|
||||
{"%mmusr",0x805},
|
||||
|
Loading…
x
Reference in New Issue
Block a user