[patch] [MIPS] Implement Errata for 24K and 24KE

Catherine Moore clm@codesourcery.com
Wed Apr 8 21:14:00 GMT 2009


This patch implements the errata for the 24K and 24KE.  The errata calls for a NOP to be emitted 
after an ERET/DERET instruction followed by a branch.  If the ERET/DERET is in a noreorder section, 
then a warning will be issued instead.  This functionality requires the -mfix-24k option.

In addition, there was an error in the delay slot handling in append_insn.  The code failed to 
exclude an ERET or DERET instuction from being moved into a delay slot.  That failure is also 
corrected with this patch.

Does this look okay to install?

Thanks,
Catherine


2009-04-08  Catherine Moore  <clm@codesourcery.com>

         gas/
         * config/tc-mips.c (mips_fix_24k): Declare.
         (check_for_24k_errata): New.
         (mips_cleanup): Call check_for_24k_errata.
         (start_noreorder): Likewise.
         (md_mips_end): Likewise.
         (s_change_sec): Likewise.
         (s_change_section): Likewise.
	(append_insn): Call check_for_24k_errata.  Prevent
	ERET/DERET instructions from being moved into delay
	slots.
         (OPTION_FIX_24K): New.
         (OPTION_NO_FIX_24k) New.
         (md_longopts): Add "mfix-24k" and "mno-fix-24k".
         (md_parse_option): Handle fix-24k options.
         (md_show_usage): Display fix-24k options.
         * doc/c-mips.texi: Document.
         * testsuite/gas/mips/mips.exp: Run new tests.
         * testsuite/gas/mips/eret.s: New test.
         * testsuite/gas/mips/eret.d: New test output.
         * testsuite/gas/mips/eret.l: New test output.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: eret.patch
Type: text/x-diff
Size: 13005 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20090408/5bc9d064/attachment.bin>


More information about the Binutils mailing list