On Wed, Oct 20, 2010 at 6:40 PM, Mark Cave-Ayland mark.cave-ayland@siriusit.co.uk wrote:
Blue Swirl wrote:
I suspect that you'll need to come up with something along similar lines for SPARC32. Blue, any thoughts?
On Sparc32 the client interface is not used and there is no 'flushw' instruction, but otherwise saving and restoring %g registers and flushing windows may be helpful.
Hmmm okay. Please find attached the following very very alpha quality patch (read: it doesn't work) that attempts to flush the windows using the FLUSH_ALL_KERNEL_WINDOWS macro and save the globals in an ASM wrapper before calling the actual obp_fortheval_v2() C function, then attempting to restore the globals and return.
Sadly I think that I've misunderstood something in my copy-and-paste quality patch as SPARC32 Solaris boot seems to get *less* far than it did without this patch, so my effort must have a fundamental bug somewhere...
At least %fp is not loaded and return with 'retl' is not OK if the function is not a leaf.