This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [patch] [MIPS] Implement Errata for 24K and 24KE
Catherine Moore <clm@codesourcery.com> writes:
> Richard Sandiford wrote:
>> Catherine Moore <clm@codesourcery.com> writes:
>>> I've attached a new patch. It adds the testcases that you asked for
>>> along with the other cleanups. I had trouble with one section -- this
>>> first example:
>>>
>>> .set noreorder
>>> 1: eret
>>> .set reorder
>>> b 1b
>>>
>>> insns_between is called only when the the history insn is not in a
>>> noreorder block.
>>
>> Hmm, yeah. So the current code doesn't behave as I said after all. ;(
>> Sorry about that. Serves me right for going on memory.
>>
>> I still think that what I said is what ought to happen. I can't see
>> any reason for the current approach to non-24k hazards, where we insert
>> nops between A and B iff _A_ is not in a noreorder block. Why should
>> A and B be assymetric in that way?
>
> This sounds like a good plan. Will you let me know when you've
> checked in your bit?
OK, there were no objections, so I went ahead and applied it after
testing on mipsisa64-elf.
>> So assuming we can use the patch below, and drop the hunk above
>> from your patch, the rest looks good. However, the logic is
>> overly complex:
>
> (code snipped). I think that you meant for the check on insn2 to be
> insn2 != NULL, otherwise this change looks okay to me as well.
I think the original "insn2 == NULL" was right. If insn2 is null,
we need to assume the worst, and return 1.
Richard