mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
Take unadjusted offset for loongson3a specific instructions.
This commit is contained in:
parent
0d7a18f740
commit
c95354ed13
@ -1,3 +1,8 @@
|
|||||||
|
2011-01-11 Mingjie Xing <mingjie.xing@gmail.com>
|
||||||
|
|
||||||
|
* config/tc-mips.c (mips_ip): Update error messages. Take an
|
||||||
|
unadjusted offset for "+c" argument.
|
||||||
|
|
||||||
2011-01-10 Nick Clifton <nickc@redhat.com>
|
2011-01-10 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* config/tc-i386.c (x86_elf_abi): Only define for targets that use
|
* config/tc-i386.c (x86_elf_abi): Only define for targets that use
|
||||||
|
@ -9321,7 +9321,7 @@ mips_ip (char *str, struct mips_cl_insn *ip)
|
|||||||
if (imm_expr.X_add_number < min_range
|
if (imm_expr.X_add_number < min_range
|
||||||
|| imm_expr.X_add_number > max_range)
|
|| imm_expr.X_add_number > max_range)
|
||||||
{
|
{
|
||||||
as_bad (_("immediate not in range %ld..%ld (%ld)"),
|
as_bad (_("Offset not in range %ld..%ld (%ld)"),
|
||||||
(long) min_range, (long) max_range,
|
(long) min_range, (long) max_range,
|
||||||
(long) imm_expr.X_add_number);
|
(long) imm_expr.X_add_number);
|
||||||
}
|
}
|
||||||
@ -9338,7 +9338,7 @@ mips_ip (char *str, struct mips_cl_insn *ip)
|
|||||||
if (imm_expr.X_add_number < min_range
|
if (imm_expr.X_add_number < min_range
|
||||||
|| imm_expr.X_add_number > max_range)
|
|| imm_expr.X_add_number > max_range)
|
||||||
{
|
{
|
||||||
as_bad (_("immediate not in range %ld..%ld (%ld)"),
|
as_bad (_("Offset not in range %ld..%ld (%ld)"),
|
||||||
(long) min_range, (long) max_range,
|
(long) min_range, (long) max_range,
|
||||||
(long) imm_expr.X_add_number);
|
(long) imm_expr.X_add_number);
|
||||||
}
|
}
|
||||||
@ -9352,14 +9352,23 @@ mips_ip (char *str, struct mips_cl_insn *ip)
|
|||||||
check_absolute_expr (ip, &imm_expr);
|
check_absolute_expr (ip, &imm_expr);
|
||||||
min_range = -((OP_MASK_OFFSET_C + 1) >> 1);
|
min_range = -((OP_MASK_OFFSET_C + 1) >> 1);
|
||||||
max_range = ((OP_MASK_OFFSET_C + 1) >> 1) - 1;
|
max_range = ((OP_MASK_OFFSET_C + 1) >> 1) - 1;
|
||||||
|
/* We check the offset range before adjusted. */
|
||||||
|
min_range <<= 4;
|
||||||
|
max_range <<= 4;
|
||||||
if (imm_expr.X_add_number < min_range
|
if (imm_expr.X_add_number < min_range
|
||||||
|| imm_expr.X_add_number > max_range)
|
|| imm_expr.X_add_number > max_range)
|
||||||
{
|
{
|
||||||
as_bad (_("immediate not in range %ld..%ld (%ld)"),
|
as_bad (_("Offset not in range %ld..%ld (%ld)"),
|
||||||
(long) min_range, (long) max_range,
|
(long) min_range, (long) max_range,
|
||||||
(long) imm_expr.X_add_number);
|
(long) imm_expr.X_add_number);
|
||||||
}
|
}
|
||||||
INSERT_OPERAND (OFFSET_C, *ip, imm_expr.X_add_number);
|
if (imm_expr.X_add_number & 0xf)
|
||||||
|
{
|
||||||
|
as_bad (_("Offset not 16 bytes alignment (%ld)"),
|
||||||
|
(long) imm_expr.X_add_number);
|
||||||
|
}
|
||||||
|
/* Right shift 4 bits to adjust the offset operand. */
|
||||||
|
INSERT_OPERAND (OFFSET_C, *ip, imm_expr.X_add_number >> 4);
|
||||||
imm_expr.X_op = O_absent;
|
imm_expr.X_op = O_absent;
|
||||||
s = expr_end;
|
s = expr_end;
|
||||||
continue;
|
continue;
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2011-01-11 Mingjie Xing <mingjie.xing@gmail.com>
|
||||||
|
|
||||||
|
* mips/loongson-3a-2.s, mips/loongson-3a-2.d: Use the real offset
|
||||||
|
value in assembly.
|
||||||
|
|
||||||
2011-01-10 Nathan Sidwell <nathan@codesourcery.com>
|
2011-01-10 Nathan Sidwell <nathan@codesourcery.com>
|
||||||
Glauber de Oliveira Costa <glommer@gmail.com>
|
Glauber de Oliveira Costa <glommer@gmail.com>
|
||||||
|
|
||||||
|
@ -57,9 +57,9 @@ Disassembly of section .text:
|
|||||||
.*: d8912c07 gsldxc1 \$f17,-128\(\$4,\$5\)
|
.*: d8912c07 gsldxc1 \$f17,-128\(\$4,\$5\)
|
||||||
.*: f8d23bfe gsswxc1 \$f18,127\(\$6,\$7\)
|
.*: f8d23bfe gsswxc1 \$f18,127\(\$6,\$7\)
|
||||||
.*: f9134c07 gssdxc1 \$f19,-128\(\$8,\$9\)
|
.*: f9134c07 gssdxc1 \$f19,-128\(\$8,\$9\)
|
||||||
.*: c98b3fea gslq \$10,\$11,255\(\$12\)
|
.*: c98b3fea gslq \$10,\$11,4080\(\$12\)
|
||||||
.*: e9ee402d gssq \$13,\$14,-256\(\$15\)
|
.*: e9ee402d gssq \$13,\$14,-4096\(\$15\)
|
||||||
.*: ca15bff4 gslqc1 \$f20,\$f21,255\(\$16\)
|
.*: ca15bff4 gslqc1 \$f20,\$f21,4080\(\$16\)
|
||||||
.*: ea37c036 gssqc1 \$f22,\$f23,-256\(\$17\)
|
.*: ea37c036 gssqc1 \$f22,\$f23,-4096\(\$17\)
|
||||||
#pass
|
#pass
|
||||||
|
|
||||||
|
@ -58,8 +58,8 @@
|
|||||||
gsswxc1 $f18,127($6,$7)
|
gsswxc1 $f18,127($6,$7)
|
||||||
gssdxc1 $f19,-128($8,$9)
|
gssdxc1 $f19,-128($8,$9)
|
||||||
|
|
||||||
gslq $10,$11,255($12)
|
gslq $10,$11,4080($12)
|
||||||
gssq $13,$14,-256($15)
|
gssq $13,$14,-4096($15)
|
||||||
gslqc1 $f20,$f21,255($16)
|
gslqc1 $f20,$f21,4080($16)
|
||||||
gssqc1 $f22,$f23,-256($17)
|
gssqc1 $f22,$f23,-4096($17)
|
||||||
|
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2011-01-11 Mingjie Xing <mingjie.xing@gmail.com>
|
||||||
|
|
||||||
|
* mips-dis.c (print_insn_args): Adjust the value to print the real
|
||||||
|
offset for "+c" argument.
|
||||||
|
|
||||||
2011-01-10 Nick Clifton <nickc@redhat.com>
|
2011-01-10 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* po/da.po: Updated Danish translation.
|
* po/da.po: Updated Danish translation.
|
||||||
|
@ -991,7 +991,8 @@ print_insn_args (const char *d,
|
|||||||
delta = (l >> OP_SH_OFFSET_C) & OP_MASK_OFFSET_C;
|
delta = (l >> OP_SH_OFFSET_C) & OP_MASK_OFFSET_C;
|
||||||
if (delta & 0x100)
|
if (delta & 0x100)
|
||||||
delta |= ~OP_MASK_OFFSET_C;
|
delta |= ~OP_MASK_OFFSET_C;
|
||||||
(*info->fprintf_func) (info->stream, "%d", delta);
|
/* Left shift 4 bits to print the real offset. */
|
||||||
|
(*info->fprintf_func) (info->stream, "%d", delta << 4);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'z':
|
case 'z':
|
||||||
|
Loading…
Reference in New Issue
Block a user