[OpenBIOS] Solaris anyone?
Blue Swirl
blauwirbel at gmail.com
Mon Jun 20 23:36:41 CEST 2011
On Mon, Jun 20, 2011 at 6:40 PM, Bob Breuer <breuerr at mc.net> wrote:
> Mark Cave-Ayland wrote:
>> On 15/06/11 19:48, Blue Swirl wrote:
>>
>>>> By the way, what would it take to get the space[cwLd] commands in
>>>> OpenBIOS? They come in handy for verifying these asi accesses.
>>>
>>> Shouldn't be very difficult. Since on Sparc32 it's not possible to
>>> give ASI in a register, a switch or hand assembly would be needed.
>>
>> +1 this is a fairly easy job - handcraft some assembly into C and then
>> bind it into Forth. I'm happy to give you some pointers and help
>> review the patch if you can write it (especially as I know some of the
>> space* words are used in the SPARC64 loader too).
>
> Based off of
> http://forums.oracle.com/forums/thread.jspa?threadID=1905000&tstart=90 ,
> using the branch in a delay slot trick, here's a (untested) snippet of
> inline assembly to start from:
> __asm__("set 1f, %%g2\n\t"
> "sll %1, 2, %1\n\t"
> "jmp %1, %%g2, %%g0\n\t"
> " ba 2f\n"
> "1:\n\t"
> "lda [%2] 0, %0\n\t"
> "lda [%2] 4, %0\n\t"
> ...
> "2:\n"
> : "=r" (result)
> : "r" (asi), "r" (address)
> : "g2");
IIRC there is some way to let GCC pick the register instead of fixing it to g2.
> I'm not that familiar with the OpenBIOS source tree layout, so where
> would this best be placed? How far to unroll the list of lda's? I'm
> not even sure if the asi's are 7 or 8 bit, and it looks like nothing
> above 0x4c is defined for sparc32. Maybe add some CPP magic to help
> with unrolling the list.
I'd add all of them.
More information about the OpenBIOS
mailing list