mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-10 01:15:10 +08:00
gas/
2005-02-17 Jan Beulich <jbeulich@novell.com> * config/tc-ia64.c (ia64_parse_name): Don't advance 'name' when parsing inN, locN, outN. Set 'idx' to offset register number starts at. Don't handle numbers with leading zeroes or beyond 95. Remove pointless cast. gas/testsuite/ 2005-02-17 Jan Beulich <jbeulich@novell.com> * gas/ia64/nostkreg.[ds]: New. * gas/ia64/ia64.exp: Run new test.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2005-02-17 Jan Beulich <jbeulich@novell.com>
|
||||||
|
|
||||||
|
* config/tc-ia64.c (ia64_parse_name): Don't advance 'name' when
|
||||||
|
parsing inN, locN, outN. Set 'idx' to offset register number starts
|
||||||
|
at. Don't handle numbers with leading zeroes or beyond 95. Remove
|
||||||
|
pointless cast.
|
||||||
|
|
||||||
2005-02-16 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
|
2005-02-16 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
|
||||||
|
|
||||||
* config/tc-mips.c (load_address): Fix formatting.
|
* config/tc-mips.c (load_address): Fix formatting.
|
||||||
|
@ -7735,7 +7735,6 @@ ia64_parse_name (name, e, nextcharP)
|
|||||||
{
|
{
|
||||||
struct const_desc *cdesc;
|
struct const_desc *cdesc;
|
||||||
struct dynreg *dr = 0;
|
struct dynreg *dr = 0;
|
||||||
unsigned int regnum;
|
|
||||||
unsigned int idx;
|
unsigned int idx;
|
||||||
struct symbol *sym;
|
struct symbol *sym;
|
||||||
char *end;
|
char *end;
|
||||||
@ -7841,13 +7840,14 @@ ia64_parse_name (name, e, nextcharP)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* check for inN, locN, or outN: */
|
/* check for inN, locN, or outN: */
|
||||||
|
idx = 0;
|
||||||
switch (name[0])
|
switch (name[0])
|
||||||
{
|
{
|
||||||
case 'i':
|
case 'i':
|
||||||
if (name[1] == 'n' && ISDIGIT (name[2]))
|
if (name[1] == 'n' && ISDIGIT (name[2]))
|
||||||
{
|
{
|
||||||
dr = &md.in;
|
dr = &md.in;
|
||||||
name += 2;
|
idx = 2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -7855,7 +7855,7 @@ ia64_parse_name (name, e, nextcharP)
|
|||||||
if (name[1] == 'o' && name[2] == 'c' && ISDIGIT (name[3]))
|
if (name[1] == 'o' && name[2] == 'c' && ISDIGIT (name[3]))
|
||||||
{
|
{
|
||||||
dr = &md.loc;
|
dr = &md.loc;
|
||||||
name += 3;
|
idx = 3;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -7863,7 +7863,7 @@ ia64_parse_name (name, e, nextcharP)
|
|||||||
if (name[1] == 'u' && name[2] == 't' && ISDIGIT (name[3]))
|
if (name[1] == 'u' && name[2] == 't' && ISDIGIT (name[3]))
|
||||||
{
|
{
|
||||||
dr = &md.out;
|
dr = &md.out;
|
||||||
name += 3;
|
idx = 3;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -7871,13 +7871,16 @@ ia64_parse_name (name, e, nextcharP)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dr)
|
/* Ignore register numbers with leading zeroes, except zero itself. */
|
||||||
|
if (dr && (name[idx] != '0' || name[idx + 1] == '\0'))
|
||||||
{
|
{
|
||||||
|
unsigned long regnum;
|
||||||
|
|
||||||
/* The name is inN, locN, or outN; parse the register number. */
|
/* The name is inN, locN, or outN; parse the register number. */
|
||||||
regnum = strtoul (name, &end, 10);
|
regnum = strtoul (name + idx, &end, 10);
|
||||||
if (end > name && *end == '\0')
|
if (end > name + idx && *end == '\0' && regnum < 96)
|
||||||
{
|
{
|
||||||
if ((unsigned) regnum >= dr->num_regs)
|
if (regnum >= dr->num_regs)
|
||||||
{
|
{
|
||||||
if (!dr->num_regs)
|
if (!dr->num_regs)
|
||||||
as_bad ("No current frame");
|
as_bad ("No current frame");
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2005-02-17 Jan Beulich <jbeulich@novell.com>
|
||||||
|
|
||||||
|
* gas/ia64/nostkreg.[ds]: New.
|
||||||
|
* gas/ia64/ia64.exp: Run new test.
|
||||||
|
|
||||||
2005-02-16 Alan Modra <amodra@bigpond.net.au>
|
2005-02-16 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* gas/all/gas.exp (quad): Don't run on i960.
|
* gas/all/gas.exp (quad): Don't run on i960.
|
||||||
|
@ -47,6 +47,7 @@ if [istarget "ia64-*"] then {
|
|||||||
run_list_test "ldxmov-2" ""
|
run_list_test "ldxmov-2" ""
|
||||||
run_dump_test "ltoff22x-1"
|
run_dump_test "ltoff22x-1"
|
||||||
|
|
||||||
|
run_dump_test "nostkreg"
|
||||||
run_list_test "invalid-ar" ""
|
run_list_test "invalid-ar" ""
|
||||||
|
|
||||||
run_dump_test "dependency-1"
|
run_dump_test "dependency-1"
|
||||||
|
16
gas/testsuite/gas/ia64/nostkreg.d
Normal file
16
gas/testsuite/gas/ia64/nostkreg.d
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#objdump: -dr
|
||||||
|
#name: ia64 not stacked registers
|
||||||
|
|
||||||
|
.*: +file format .*
|
||||||
|
|
||||||
|
Disassembly of section \.text:
|
||||||
|
|
||||||
|
0+000 <_start>:
|
||||||
|
[[:space:]]*[[:xdigit:]]+:[[:space:][:xdigit:]]+\[M[IM]I\][[:space:]]+mov[[:space:]]+r5=0
|
||||||
|
[[:space:]]+0:[[:space:]]+IMM22[[:space:]]+in00
|
||||||
|
[[:space:]]+1:[[:space:]]+IMM22[[:space:]]+loc96
|
||||||
|
[[:space:]]*[[:xdigit:]]+:[[:space:][:xdigit:]]+mov[[:space:]]+r6=0
|
||||||
|
[[:space:]]*[[:xdigit:]]+:[[:space:][:xdigit:]]+mov[[:space:]]+r7=r32
|
||||||
|
[[:space:]]*[[:xdigit:]]+:[[:space:][:xdigit:]]+\[M[IM]B\][[:space:]]+mov[[:space:]]+r8=r34
|
||||||
|
[[:space:]]*[[:xdigit:]]+:[[:space:][:xdigit:]]+mov[[:space:]]+r9=r36
|
||||||
|
[[:space:]]*[[:xdigit:]]+:[[:space:][:xdigit:]]+br\.ret\.sptk\.few[[:space:]]+(b0|rp);;
|
9
gas/testsuite/gas/ia64/nostkreg.s
Normal file
9
gas/testsuite/gas/ia64/nostkreg.s
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
_start:
|
||||||
|
mov r5 = in00
|
||||||
|
mov r6 = loc96
|
||||||
|
.regstk 2, 6, 2, 8
|
||||||
|
.rotr in0I[2], loc1L[2], out2O[2]
|
||||||
|
mov r7 = in0I[0]
|
||||||
|
mov r8 = loc1L[0]
|
||||||
|
mov r9 = out2O[0]
|
||||||
|
br.ret.sptk rp
|
Reference in New Issue
Block a user