> > > It would, in principle, be possible to save/restore k0
> > > or k1 (but not both) if no other clever solution can be found.
> > > There are other VM OSes that manage to do so for MIPS,
> > > for other outside-the-old-ABI reasons. It does, of course,
> > > add some instructions and some memory traffic to the
> > > low-level exception handling , and we would have to look
> > > at whether we would want to make such a feature standard
> > > or specific to a "thread-ready" kernel build.
> >
> > I like the read-only k0 idea. We just need to make a system call to
> > tell kernel what value to put in k0 before returning to the user space.
> > It shouldn't be too hard to implement. I will try it next week.
>
> You could, I guess, wire a TLB entry to map the thread register into
> the highest virtual memory region of the machine (the top of 'kseg2'),
> which is accessible in a single instruction as a negative offset from
> $0.
Funny you should mention this. I was thinking about it
yesterday in this context as something else that I've seen
done in some non-Linux MIPS OSes, and something that
I think would be a better solution for CPU-specific fast
storage in SMP configurations than some of the hacks that
I've seen proposed for SMP MIPS/Linux so far.
|