"Moore, Catherine" <catherine_mo...@mentor.com> writes: >> -----Original Message----- >> From: Moore, Catherine >> Subject: RE: [PATCH] Workaround errata for the PMC-Sierra RM7000 cpu. >> >> writes: >> > >> -----Original Message----- >> > >> From: Richard Sandiford [mailto:rdsandif...@googlemail.com] >> > >> Subject: Re: [PATCH] Workaround errata for the PMC-Sierra RM7000 >> cpu. >> > >> >> > >> "Moore, Catherine" <catherine_mo...@mentor.com> writes: >> > >> > Hi Richard, >> > >> > >> > >> > This patch implements a workaround for errors on the PMC-Sierra >> > >> > RM7000 cpu while executing the dmult or dmultu instruction. The >> > >> > workaround is to insert three nops after the dmult/dmultu. >> > >> >> > >> Do you have any more details? E.g. does "dmult $4,$5;addiu $6,$7,1" >> > >> cause problems? The VR41xx series had errata like these, but it >> > >> was always between the multiplication and other references to HI/LO. >> > > > > This is an updated patch that recognizes the -mifx-rm7000 option and > passes it off to the assembler.
This won't work on its own because GCC tries to use ".set noreorder" mode if possible. You need to change: /* Code compiled with -mfix-vr4120 or -mfix-24k can't be all noreorder because we rely on the assembler to work around some errata. The r5900 too has several bugs. */ if (TARGET_FIX_VR4120 || TARGET_FIX_24K || TARGET_MIPS5900) cfun->machine->all_noreorder_p = false; to: /* Code compiled with -mfix-vr4120, -mfix-rm7000 or -mfix-24k can't be all noreorder because we rely on the assembler to work around some errata. The R5900 too has several bugs. */ if (TARGET_FIX_VR4120 || TARGET_FIX_RM7000 || TARGET_FIX_24K || TARGET_MIPS5900) cfun->machine->all_noreorder_p = false; OK with that change, thanks. Richard