* config/tc-v850.c (md_assemble): Allow signed values for
V850E_IMMEDIATE. * gas/v850/basic.exp: Allow for variations in reloc names. * gas/v850/split-lo16.d: Likewise. * gas/v850/v850e1.s: Add more tests of the PREPARE insn. * gas/v850/v850e1.d: Update expected disassembly. * v850-dis.c (get_operand_value): Sign extend V850E_IMMEDIATE values. * v850-opc.c (IMM16LO): Add V850_OPERAND_SIGNED attribute.
This commit is contained in:
parent
77bf820f91
commit
dd42f06036
10 changed files with 37 additions and 13 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2013-01-15 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* config/tc-v850.c (md_assemble): Allow signed values for
|
||||||
|
V850E_IMMEDIATE.
|
||||||
|
|
||||||
2013-01-11 Sean Keys <skeys@ipdatasys.com>
|
2013-01-11 Sean Keys <skeys@ipdatasys.com>
|
||||||
|
|
||||||
* config/tc-xgate.c (md_begin): Fix mistake made when going from
|
* config/tc-xgate.c (md_begin): Fix mistake made when going from
|
||||||
|
|
|
@ -2350,7 +2350,8 @@ md_assemble (char *str)
|
||||||
}
|
}
|
||||||
if (operand->flags & V850E_IMMEDIATE16)
|
if (operand->flags & V850E_IMMEDIATE16)
|
||||||
{
|
{
|
||||||
if (ex.X_add_number & 0xffff0000)
|
if ((ex.X_add_number & 0xffff0000)
|
||||||
|
&& ((ex.X_add_number & 0xffff0000) != 0xffff0000))
|
||||||
{
|
{
|
||||||
errmsg = _("constant too big to fit into instruction");
|
errmsg = _("constant too big to fit into instruction");
|
||||||
goto error;
|
goto error;
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
|
2013-01-15 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* gas/v850/basic.exp: Allow for variations in reloc names.
|
||||||
|
* gas/v850/split-lo16.d: Likewise.
|
||||||
|
|
||||||
|
* gas/v850/v850e1.s: Add more tests of the PREPARE insn.
|
||||||
|
* gas/v850/v850e1.d: Update expected disassembly.
|
||||||
|
|
||||||
2013-01-14 Alan Modra <amodra@gmail.com>
|
2013-01-14 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* gas/v850/basic.exp (reloc part 1): Pass -mgcc-abi to gas.
|
* gas/v850/basic.exp (reloc part 1): Pass -mgcc-abi to gas.
|
||||||
|
|
|
@ -386,17 +386,17 @@ proc do_simple_reloc_tests {} {
|
||||||
|
|
||||||
while 1 {
|
while 1 {
|
||||||
expect {
|
expect {
|
||||||
-re "^00000002\[^\n\]*R_V850_LO16\[^\n\]*\n"
|
-re "^00000002\[^\n\]*R_V8\[A-Z0-9_\]+\[^\n\]*\n"
|
||||||
{ set x [expr $x+1] }
|
{ set x [expr $x+1] }
|
||||||
-re "^00000006\[^\n\]*R_V850_HI16_S\[^\n\]*\n"
|
-re "^00000006\[^\n\]*R_V8\[A-Z0-9_\]+\[^\n\]*\n"
|
||||||
{ set x [expr $x+1] }
|
{ set x [expr $x+1] }
|
||||||
-re "^0000000a\[^\n\]*R_V850_HI16\[^\n\]*\n"
|
-re "^0000000a\[^\n\]*R_V8\[A-Z0-9_\]+\[^\n\]*\n"
|
||||||
{ set x [expr $x+1] }
|
{ set x [expr $x+1] }
|
||||||
-re "^0000000e\[^\n\]*R_V850_ZDA_16_16_OFFSET\[^\n\]*\n"
|
-re "^0000000e\[^\n\]*R_V8\[A-Z0-9_\]+\[^\n\]*\n"
|
||||||
{ set x [expr $x+1] }
|
{ set x [expr $x+1] }
|
||||||
-re "^00000012\[^\n\]*R_V850_TDA_16_16_OFFSET\[^\n\]*\n"
|
-re "^00000012\[^\n\]*R_V8\[A-Z0-9_\]+\[^\n\]*\n"
|
||||||
{ set x [expr $x+1] }
|
{ set x [expr $x+1] }
|
||||||
-re "^00000016\[^\n\]*R_V850_SDA_16_16_OFFSET\[^\n\]*\n"
|
-re "^00000016\[^\n\]*R_V8\[A-Z0-9_\]+\[^\n\]*\n"
|
||||||
{ set x [expr $x+1] }
|
{ set x [expr $x+1] }
|
||||||
-re "\[^\n\]*\n" { }
|
-re "\[^\n\]*\n" { }
|
||||||
timeout { perror "timeout\n"; break }
|
timeout { perror "timeout\n"; break }
|
||||||
|
|
|
@ -4,13 +4,13 @@
|
||||||
#...
|
#...
|
||||||
00000000 <.*>:
|
00000000 <.*>:
|
||||||
0: 40 0e 00 00 movhi 0, r0, r1
|
0: 40 0e 00 00 movhi 0, r0, r1
|
||||||
2: R_V850_HI16_S foo
|
2: R_V8.* foo
|
||||||
4: 01 16 00 00 addi 0, r1, r2
|
4: 01 16 00 00 addi 0, r1, r2
|
||||||
6: R_V850_LO16 foo
|
6: R_V8.* foo
|
||||||
8: 01 17 00 00 ld\.b 0\[r1\], r2
|
8: 01 17 00 00 ld\.b 0\[r1\], r2
|
||||||
a: R_V850_LO16 foo
|
a: R_V8.* foo
|
||||||
c: 81 17 01 00 ld\.bu 0\[r1\], r2
|
c: 81 17 01 00 ld\.bu 0\[r1\], r2
|
||||||
c: R_V850_LO16_SPLIT_OFFSET foo
|
c: R_V8.* foo
|
||||||
10: a1 17 45 23 ld\.bu 9029\[r1\], r2
|
10: a1 17 45 23 ld\.bu 9029\[r1\], r2
|
||||||
14: 81 17 57 34 ld\.bu 13398\[r1\], r2
|
14: 81 17 57 34 ld\.bu 13398\[r1\], r2
|
||||||
18: 20 57 01 00 ld.w 0\[r0\], r10
|
18: 20 57 01 00 ld.w 0\[r0\], r10
|
||||||
|
|
|
@ -43,3 +43,4 @@ Disassembly of section .text:
|
||||||
0x0+7a 83 00 [ ]*zxb sp
|
0x0+7a 83 00 [ ]*zxb sp
|
||||||
0x0+7c c4 00 [ ]*zxh gp
|
0x0+7c c4 00 [ ]*zxh gp
|
||||||
0x0+7e 63 ff 9d 00[ ]*st.w lp, 156\[sp\]
|
0x0+7e 63 ff 9d 00[ ]*st.w lp, 156\[sp\]
|
||||||
|
0x0+82 80 07 0b e8 f6 ff[ ]*prepare {r20, r24 - r26}, 0, -10
|
||||||
|
|
|
@ -37,3 +37,4 @@
|
||||||
zxb r3
|
zxb r3
|
||||||
zxh r4
|
zxh r4
|
||||||
st.w lp, 156[sp]
|
st.w lp, 156[sp]
|
||||||
|
prepare {r20,r24,r25,r26},0,-10
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2013-01-15 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* v850-dis.c (get_operand_value): Sign extend V850E_IMMEDIATE
|
||||||
|
values.
|
||||||
|
* v850-opc.c (IMM16LO): Add V850_OPERAND_SIGNED attribute.
|
||||||
|
|
||||||
2013-01-14 Will Newton <will.newton@imgtec.com>
|
2013-01-14 Will Newton <will.newton@imgtec.com>
|
||||||
|
|
||||||
* metag-dis.c (REG_WIDTH): Increase to 64.
|
* metag-dis.c (REG_WIDTH): Increase to 64.
|
||||||
|
|
|
@ -118,6 +118,8 @@ get_operand_value (const struct v850_operand *operand,
|
||||||
|
|
||||||
if (operand->flags & V850E_IMMEDIATE16HI)
|
if (operand->flags & V850E_IMMEDIATE16HI)
|
||||||
value <<= 16;
|
value <<= 16;
|
||||||
|
else if (value & 0x8000)
|
||||||
|
value |= (-1L << 16);
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
|
@ -747,9 +747,9 @@ const struct v850_operand v850_operands[] =
|
||||||
#define IMM16 (I16 + 1)
|
#define IMM16 (I16 + 1)
|
||||||
{ 16, 32, NULL, NULL, V850E_IMMEDIATE16, BFD_RELOC_16 },
|
{ 16, 32, NULL, NULL, V850E_IMMEDIATE16, BFD_RELOC_16 },
|
||||||
|
|
||||||
/* The 16 bit immediate following a 32 bit instruction. */
|
/* The signed 16 bit immediate following a prepare instruction. */
|
||||||
#define IMM16LO (IMM16 + 1)
|
#define IMM16LO (IMM16 + 1)
|
||||||
{ 16, 32, NULL, NULL, V850E_IMMEDIATE16, BFD_RELOC_LO16 },
|
{ 16, 32, NULL, NULL, V850E_IMMEDIATE16 | V850_OPERAND_SIGNED, BFD_RELOC_LO16 },
|
||||||
|
|
||||||
/* The hi 16 bit immediate following a 32 bit instruction. */
|
/* The hi 16 bit immediate following a 32 bit instruction. */
|
||||||
#define IMM16HI (IMM16LO + 1)
|
#define IMM16HI (IMM16LO + 1)
|
||||||
|
|
Loading…
Reference in a new issue