Re: [WIP/RFC] MIPS registers overhaul

Andrew Cagney
2003-05-20T20:25:22Z

> At Fri, 16 May 2003 22:25:13 +0000 (UTC), cgd@broadcom.com wrote:
>
>> This MIPS specifications (M64 1.00 Volume I, page 50, section 5.6.2)
>> indicate that doing 64-bit reads/writes from/to odd FP registers when
>> FR=0 are "illegal", and that values produced by such operations are
>> unpredictable.
>
>
> Actually, on the reads they say that the values produced are
> unpredictable.
>
> For writes, they indicate that the operation itself is unpredictable
> ("UNPREDICTABLE").

When a 64 bit kernel goes to save/resume an o32 process, how does it do
it? Does it have a choice?

For instance, do a 64 bit FP restore then clear the FR bit; the reverse;
some other variant; ...?

Andrew

> in other words, doing an ldc1 when FR == 0 could cause a trap if an
> implementation were paranoid (*cough* simulator 8-).
>
> So, really, when FR == 0, best to think of yourself as having only 32
> * 32 bits.
>
>
> Now, the question is, in the remote protocol, if 64-bit registers are
> being passed, *how*. (64-bit target, normally 64-bit registers... i'd assume
> they're being passed as 64-bits.)
>
> One reasonable way to do it, which i believe would be the result of
> using n32 / n64 RDA on linux to debug an o32 executable, would be:
>
> 0: meaningful
> 1: garbage
> etc.
>
> this is the natural way to do it on a 64-bit part, with a 64-bit FPU.
> another reasonable way (but less efficient on a 64-bit part with a
> 64-bit FPU) would be:
>
> 0: <high half garbage><low half meaningful>
> 1: <high half garbage><low half meaningful>
>
> Are there 64-bit parts out there that have FPUs with 32 single float
> regs which one can operate on (4650, looking at gcc srcs?) If so, the
> latter would be a reasonable representation for them.
>
>
> So, my conclusion is:
>
> for raw registers that are xferred as 64-bits, yeah, fine, let people
> have acess to them. that's for debugger-debugging, and people who
> muck with them may be shooting themselves in the head, but if they're
> debugging the debugger they're smart, right? 8-)
>
> need to have some way to tell which of the ways above is being used to
> xfer the register data. (or, need to define that only one way may be
> used.)
>
>
> chris
>
>