[PATCH] Add MIPS32r2/MT ASE pause instruction

Andrew Pinski andrew.pinski@caviumnetworks.com
Thu Dec 8 19:54:00 GMT 2011


On Thu, Dec 8, 2011 at 11:52 AM, Richard Sandiford
<rdsandiford@googlemail.com> wrote:
> "Maciej W. Rozycki" <macro@linux-mips.org> writes:
>>> Index: opcodes/mips-opc.c
>>> ===================================================================
>>> RCS file: /cvs/src/src/opcodes/mips-opc.c,v
>>> retrieving revision 1.89
>>> diff -u -p -r1.89 mips-opc.c
>>> --- opcodes/mips-opc.c       29 Nov 2011 20:28:55 -0000      1.89
>>> +++ opcodes/mips-opc.c       7 Dec 2011 22:39:50 -0000
>>> @@ -1169,6 +1169,7 @@ const struct mips_opcode mips_builtin_op
>>>  {"ori",     "t,r,i",        0x34000000, 0xfc000000, WR_t|RD_s,              0,              I1      },
>>>  {"pabsdiff.ob", "X,Y,Q",0x78000009, 0xfc20003f,     WR_D|RD_S|RD_T|FP_D,    0,              SB1     },
>>>  {"pabsdiffc.ob", "Y,Q",     0x78000035, 0xfc2007ff, RD_S|RD_T|FP_D,         WR_MACC,        SB1     },
>>> +{"pause",   "",             0x00000140, 0xffffffff, TRAP,                   0,              I33|MT32},
>>>  {"pavg.ob", "X,Y,Q",        0x78000008, 0xfc20003f, WR_D|RD_S|RD_T|FP_D,    0,              SB1     },
>>>  {"pickf.ob", "X,Y,Q",       0x78000002, 0xfc20003f, WR_D|RD_S|RD_T|FP_D,    0,              MX|SB1  },
>>>  {"pickf.ob", "D,S,T",       0x4ac00002, 0xffe0003f, WR_D|RD_S|RD_T,         0,              N54     },
>>
>>  I think it's redundant to say |MT32 here as MT32 already implies I33 --
>> the MT ASE requires rev. 2 of the architecture.
>>
>>  Also please use NODS rather than TRAP -- although both macros expand to
>> the same numerical value, they have been semantically split so that the
>> former refers to instructions that must not be scheduled into a delay slot
>> for architectural reasons (undefined behaviour) and the latter is for
>> instructions that are meant to generate a trap and we chose not to
>> schedule these instructions into a delay slot merely to make life of other
>> software easier (delay-slot execution is just fine).
>>
>>  Yes, I know most MT instructions use the TRAP flag, but that's because
>> there's really no reason I know of they should have this flag at all in
>> the first place, so they have been left as classified "for someone's
>> convenience" (some can legitimately trap indeed, i.e. FORK when run out of
>> thread contexts).  PAUSE's delay-slot operation is on the other hand
>> undefined (which actually brings a concern about forward compatibility of
>> old software, hmm...).
>>
>>  I can't approve the change, but it looks good to me otherwise.
>
> OK with Maciej's changes (i.e. MT32 rather than "I33|MT32" and
> NODS rather than TRAP).

It is part of the MIPS32R2 instruction set as of v2.6 (and not just
MT32).  So should it be just I33 then?

Thanks,
Andrew Pinski



More information about the Binutils mailing list