cvs commit: src/lib/libthr/arch/alpha/alpha _curthread.c
John Baldwin
jhb at FreeBSD.org
Wed Jul 30 12:34:26 PDT 2003
On 24-Jul-2003 Marcel Moolenaar wrote:
> On Thu, Jul 24, 2003 at 05:00:13PM -0400, John Baldwin wrote:
>>
>> There is a chicken and egg problem. We use the unique value to
>> initialize the per-cpu pointer on kernel entry. We only have one
>> such beast, and in the kernel we cache it in a register that userland
>> gets to clobber (and frequently does). If you can think of a better
>> way to store the per-cpu pointer such that kernel entry can load it
>> into the register go for it.
>
> I see where the confusion is:
>
>> pcpup = (struct pcpu *) alpha_pal_rdval();
> ^^^^^^^^^^^^^^^^^^^^^^
>
> This is not the per-CPU unique value. I had to add alpha_pal_rdunique()
> in order to access it. In numbers:
>
> PAL_rdval = PAL_OSF1_rdval = 0x0032
> PAL_rdunique = 0x009e
>
> PAL_rdval is a privileged operation PAL_rdunique isn't.
Ah, ok. Confusion on my part then, sorry. Didn't have my Brown Book
handy. :-P
> There is no fundamental problem (although my alpha does reboot
> when I run a 1:1-threaded application, so there is a problem :-)
Heh. Thanks for working on the Alpha thread stuff.
--
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!" - http://www.FreeBSD.org/
More information about the cvs-all
mailing list