This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Workaround errata for the PMC-Sierra RM7000 cpu.


"Moore, Catherine" <Catherine_Moore@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:rdsandiford@googlemail.com]
>> > >> Subject: Re: [PATCH] Workaround errata for the PMC-Sierra RM7000
>> cpu.
>> > >>
>> > >> "Moore, Catherine" <Catherine_Moore@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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]