Re: Bug#539378: [hppa]: fails to load nfs module: Global Offset Table
On Fri, 31 Jul 2009, Carlos O'Donell wrote:
> >> + if (d <= 15)
> >> + stub->insns[0] |= reassemble_14(d);
> >
> > reassemble_14 is wrong for ldd format 3. Need format 5 and im5 insertion.
>
> This is using reassemble_14 for ldd format 5, which is correct.
Huh? Format 5 has a five bit immediate and it's not compatible with
reassemble_14. The value is actually being stuffed into a format 3 ldd
pattern (i.e., format 3 is being used for displacements 0 and 8).
If format 3 is going to be used for short displacements, then use
reassemble_16a as it is the inverse to the assemble_16a operation
described in the arch. Using reassemble_14 with ldd is confusing.
As you pointed out, the arch shows using format 5 for short displacements.
It's unclear whether there is a performance or functional difference aside
from the behavior of space selection. There may be no requirement for
hardware to implement short displacements using format 3.
Dave
--
J. David Anglin dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6602)
Reply to: