mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-18 13:23:10 +08:00
* config/tc-mips.c (append_insn): For mips16, insert a nop between
a read of HI or LO and an immediatly following branch.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
1998-12-29 Gavin Romig-Koch <gavin@cygnus.com>
|
||||||
|
|
||||||
|
* config/tc-mips.c (append_insn): For mips16, insert a nop between
|
||||||
|
a read of HI or LO and an immediatly following branch.
|
||||||
|
|
||||||
1998-12-29 Gavin Romig-Koch <gavin@cygnus.com>
|
1998-12-29 Gavin Romig-Koch <gavin@cygnus.com>
|
||||||
|
|
||||||
* config/tc-mips.c (md_begin): Another correction to the setting of
|
* config/tc-mips.c (md_begin): Another correction to the setting of
|
||||||
|
@ -1689,6 +1689,16 @@ append_insn (place, ip, address_expr, reloc_type, unmatched_hi)
|
|||||||
&& (mips_optimize == 0
|
&& (mips_optimize == 0
|
||||||
|| (pinfo & INSN_WRITE_LO)))
|
|| (pinfo & INSN_WRITE_LO)))
|
||||||
nops += 2;
|
nops += 2;
|
||||||
|
/* Most mips16 branch insns don't have a delay slot.
|
||||||
|
If a read from LO is immediately followed by a branch
|
||||||
|
to a write to LO we have a read followed by a write
|
||||||
|
less than 2 insns away. We assume the target of
|
||||||
|
a branch might be a write to LO, and insert a nop
|
||||||
|
between a read and an immediately following branch. */
|
||||||
|
else if (mips_opts.mips16
|
||||||
|
&& (mips_optimize == 0
|
||||||
|
|| (pinfo & MIPS16_INSN_BRANCH)))
|
||||||
|
nops += 1;
|
||||||
}
|
}
|
||||||
else if (prev_insn.insn_mo->pinfo & INSN_READ_HI)
|
else if (prev_insn.insn_mo->pinfo & INSN_READ_HI)
|
||||||
{
|
{
|
||||||
@ -1701,6 +1711,16 @@ append_insn (place, ip, address_expr, reloc_type, unmatched_hi)
|
|||||||
&& (mips_optimize == 0
|
&& (mips_optimize == 0
|
||||||
|| (pinfo & INSN_WRITE_HI)))
|
|| (pinfo & INSN_WRITE_HI)))
|
||||||
nops += 2;
|
nops += 2;
|
||||||
|
/* Most mips16 branch insns don't have a delay slot.
|
||||||
|
If a read from HI is immediately followed by a branch
|
||||||
|
to a write to HI we have a read followed by a write
|
||||||
|
less than 2 insns away. We assume the target of
|
||||||
|
a branch might be a write to HI, and insert a nop
|
||||||
|
between a read and an immediately following branch. */
|
||||||
|
else if (mips_opts.mips16
|
||||||
|
&& (mips_optimize == 0
|
||||||
|
|| (pinfo & MIPS16_INSN_BRANCH)))
|
||||||
|
nops += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If the previous instruction was in a noreorder section, then
|
/* If the previous instruction was in a noreorder section, then
|
||||||
|
Reference in New Issue
Block a user