* config/tc-mips.c (load_address): Use mips_gp_register instead
of hardcoded value. Remove dbl parameter, use HAVE_32BIT_ADDRESSES instead. (macro): Use mips_gp_register instead of hardcoded value.
This commit is contained in:
parent
3765b1be13
commit
f7ea7ef2ee
2 changed files with 26 additions and 14 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2002-05-31 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
|
||||||
|
|
||||||
|
* config/tc-mips.c (load_address): Use mips_gp_register instead
|
||||||
|
of hardcoded value. Remove dbl parameter, use HAVE_32BIT_ADDRESSES
|
||||||
|
instead.
|
||||||
|
(macro): Use mips_gp_register instead of hardcoded value.
|
||||||
|
|
||||||
2002-05-30 Richard Henderson <rth@redhat.com>
|
2002-05-30 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
* expr.h (operatorT): Add O_md17..O_md32.
|
* expr.h (operatorT): Add O_md17..O_md32.
|
||||||
|
|
|
@ -3818,7 +3818,7 @@ load_address (counter, reg, ep, used_at)
|
||||||
If there is a constant, it must be added in after. */
|
If there is a constant, it must be added in after. */
|
||||||
ex.X_add_number = ep->X_add_number;
|
ex.X_add_number = ep->X_add_number;
|
||||||
ep->X_add_number = 0;
|
ep->X_add_number = 0;
|
||||||
if (reg_needs_delay (GP))
|
if (reg_needs_delay (mips_gp_register))
|
||||||
off = 4;
|
off = 4;
|
||||||
else
|
else
|
||||||
off = 0;
|
off = 0;
|
||||||
|
@ -3826,9 +3826,11 @@ load_address (counter, reg, ep, used_at)
|
||||||
macro_build ((char *) NULL, counter, ep, "lui", "t,u", reg,
|
macro_build ((char *) NULL, counter, ep, "lui", "t,u", reg,
|
||||||
(int) BFD_RELOC_MIPS_GOT_HI16);
|
(int) BFD_RELOC_MIPS_GOT_HI16);
|
||||||
macro_build ((char *) NULL, counter, (expressionS *) NULL,
|
macro_build ((char *) NULL, counter, (expressionS *) NULL,
|
||||||
dbl ? "daddu" : "addu", "d,v,t", reg, reg, GP);
|
HAVE_32BIT_ADDRESSES ? "addu" : "daddu", "d,v,t", reg,
|
||||||
macro_build ((char *) NULL, counter, ep, dbl ? "ld" : "lw",
|
reg, mips_gp_register);
|
||||||
"t,o(b)", reg, (int) BFD_RELOC_MIPS_GOT_LO16, reg);
|
macro_build ((char *) NULL, counter, ep,
|
||||||
|
HAVE_32BIT_ADDRESSES ? "lw" : "ld", "t,o(b)", reg,
|
||||||
|
(int) BFD_RELOC_MIPS_GOT_LO16, reg);
|
||||||
p = frag_var (rs_machine_dependent, 12 + off, 0,
|
p = frag_var (rs_machine_dependent, 12 + off, 0,
|
||||||
RELAX_ENCODE (12, 12 + off, off, 8 + off, 0,
|
RELAX_ENCODE (12, 12 + off, off, 8 + off, 0,
|
||||||
mips_opts.warn_about_macros),
|
mips_opts.warn_about_macros),
|
||||||
|
@ -3842,19 +3844,21 @@ load_address (counter, reg, ep, used_at)
|
||||||
macro_build (p, counter, (expressionS *) NULL, "nop", "");
|
macro_build (p, counter, (expressionS *) NULL, "nop", "");
|
||||||
p += 4;
|
p += 4;
|
||||||
}
|
}
|
||||||
macro_build (p, counter, ep, dbl ? "ld" : "lw",
|
macro_build (p, counter, ep, HAVE_32BIT_ADDRESSES ? "lw" : "ld",
|
||||||
"t,o(b)", reg, (int) BFD_RELOC_MIPS_GOT16, GP);
|
"t,o(b)", reg, (int) BFD_RELOC_MIPS_GOT16,
|
||||||
|
mips_gp_register);
|
||||||
p += 4;
|
p += 4;
|
||||||
macro_build (p, counter, (expressionS *) NULL, "nop", "");
|
macro_build (p, counter, (expressionS *) NULL, "nop", "");
|
||||||
p += 4;
|
p += 4;
|
||||||
macro_build (p, counter, ep, dbl ? "daddiu" : "addiu",
|
macro_build (p, counter, ep, HAVE_32BIT_ADDRESSES ? "addiu" : "daddiu",
|
||||||
"t,r,j", reg, reg, (int) BFD_RELOC_LO16);
|
"t,r,j", reg, reg, (int) BFD_RELOC_LO16);
|
||||||
if (ex.X_add_number != 0)
|
if (ex.X_add_number != 0)
|
||||||
{
|
{
|
||||||
if (ex.X_add_number < -0x8000 || ex.X_add_number >= 0x8000)
|
if (ex.X_add_number < -0x8000 || ex.X_add_number >= 0x8000)
|
||||||
as_bad (_("PIC code offset overflow (max 16 signed bits)"));
|
as_bad (_("PIC code offset overflow (max 16 signed bits)"));
|
||||||
ex.X_op = O_constant;
|
ex.X_op = O_constant;
|
||||||
macro_build ((char *) NULL, counter, &ex, dbl ? "daddiu" : "addiu",
|
macro_build ((char *) NULL, counter, &ex,
|
||||||
|
HAVE_32BIT_ADDRESSES ? "addiu" : "daddiu",
|
||||||
"t,r,j", reg, reg, (int) BFD_RELOC_LO16);
|
"t,r,j", reg, reg, (int) BFD_RELOC_LO16);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4940,7 +4944,7 @@ macro (ip)
|
||||||
expr1.X_add_number = offset_expr.X_add_number;
|
expr1.X_add_number = offset_expr.X_add_number;
|
||||||
offset_expr.X_add_number = 0;
|
offset_expr.X_add_number = 0;
|
||||||
frag_grow (52);
|
frag_grow (52);
|
||||||
if (reg_needs_delay (GP))
|
if (reg_needs_delay (mips_gp_register))
|
||||||
gpdel = 4;
|
gpdel = 4;
|
||||||
else
|
else
|
||||||
gpdel = 0;
|
gpdel = 0;
|
||||||
|
@ -5232,7 +5236,7 @@ macro (ip)
|
||||||
macro_build ((char *) NULL, &icnt, &offset_expr,
|
macro_build ((char *) NULL, &icnt, &offset_expr,
|
||||||
HAVE_32BIT_ADDRESSES ? "lw" : "ld",
|
HAVE_32BIT_ADDRESSES ? "lw" : "ld",
|
||||||
"t,o(b)", PIC_CALL_REG,
|
"t,o(b)", PIC_CALL_REG,
|
||||||
(int) BFD_RELOC_MIPS_CALL16, GP);
|
(int) BFD_RELOC_MIPS_CALL16, mips_gp_register);
|
||||||
macro_build ((char *) NULL, &icnt, (expressionS *) NULL,
|
macro_build ((char *) NULL, &icnt, (expressionS *) NULL,
|
||||||
"nop", "");
|
"nop", "");
|
||||||
p = frag_var (rs_machine_dependent, 4, 0,
|
p = frag_var (rs_machine_dependent, 4, 0,
|
||||||
|
@ -5243,7 +5247,7 @@ macro (ip)
|
||||||
{
|
{
|
||||||
int gpdel;
|
int gpdel;
|
||||||
|
|
||||||
if (reg_needs_delay (GP))
|
if (reg_needs_delay (mips_gp_register))
|
||||||
gpdel = 4;
|
gpdel = 4;
|
||||||
else
|
else
|
||||||
gpdel = 0;
|
gpdel = 0;
|
||||||
|
@ -5251,7 +5255,8 @@ macro (ip)
|
||||||
PIC_CALL_REG, (int) BFD_RELOC_MIPS_CALL_HI16);
|
PIC_CALL_REG, (int) BFD_RELOC_MIPS_CALL_HI16);
|
||||||
macro_build ((char *) NULL, &icnt, (expressionS *) NULL,
|
macro_build ((char *) NULL, &icnt, (expressionS *) NULL,
|
||||||
HAVE_32BIT_ADDRESSES ? "addu" : "daddu",
|
HAVE_32BIT_ADDRESSES ? "addu" : "daddu",
|
||||||
"d,v,t", PIC_CALL_REG, PIC_CALL_REG, GP);
|
"d,v,t", PIC_CALL_REG, PIC_CALL_REG,
|
||||||
|
mips_gp_register);
|
||||||
macro_build ((char *) NULL, &icnt, &offset_expr,
|
macro_build ((char *) NULL, &icnt, &offset_expr,
|
||||||
HAVE_32BIT_ADDRESSES ? "lw" : "ld",
|
HAVE_32BIT_ADDRESSES ? "lw" : "ld",
|
||||||
"t,o(b)", PIC_CALL_REG,
|
"t,o(b)", PIC_CALL_REG,
|
||||||
|
@ -5270,7 +5275,7 @@ macro (ip)
|
||||||
macro_build (p, &icnt, &offset_expr,
|
macro_build (p, &icnt, &offset_expr,
|
||||||
HAVE_32BIT_ADDRESSES ? "lw" : "ld",
|
HAVE_32BIT_ADDRESSES ? "lw" : "ld",
|
||||||
"t,o(b)", PIC_CALL_REG,
|
"t,o(b)", PIC_CALL_REG,
|
||||||
(int) BFD_RELOC_MIPS_GOT16, GP);
|
(int) BFD_RELOC_MIPS_GOT16, mips_gp_register);
|
||||||
p += 4;
|
p += 4;
|
||||||
macro_build (p, &icnt, (expressionS *) NULL, "nop", "");
|
macro_build (p, &icnt, (expressionS *) NULL, "nop", "");
|
||||||
p += 4;
|
p += 4;
|
||||||
|
@ -5784,7 +5789,7 @@ macro (ip)
|
||||||
if (expr1.X_add_number < -0x8000
|
if (expr1.X_add_number < -0x8000
|
||||||
|| expr1.X_add_number >= 0x8000)
|
|| expr1.X_add_number >= 0x8000)
|
||||||
as_bad (_("PIC code offset overflow (max 16 signed bits)"));
|
as_bad (_("PIC code offset overflow (max 16 signed bits)"));
|
||||||
if (reg_needs_delay (GP))
|
if (reg_needs_delay (mips_gp_register))
|
||||||
gpdel = 4;
|
gpdel = 4;
|
||||||
else
|
else
|
||||||
gpdel = 0;
|
gpdel = 0;
|
||||||
|
|
Loading…
Reference in a new issue