[OpenBIOS] PIC Passthough( VGA )

Mark Cave-Ayland mark.cave-ayland at ilande.co.uk
Fri Dec 22 12:11:45 CET 2017


On 19/12/17 16:20, Jd Lyons wrote:

>> On Dec 19, 2017, at 10:56 AM, Segher Boessenkool <segher at kernel.crashing.org> wrote:
>>
>> On Tue, Dec 19, 2017 at 10:40:08AM -0500, Jd Lyons wrote:
>>> Looks like the spot were I’m stuck is:
>>>
>>> b(;) ( 0x0c2 )
>>> 25612: b(') ( 0x011 ) (unnamed-fcode) [0xc84]
>>> 25613: b(to) ( 0x0c3 ) (unnamed-fcode) [0x9a9]
>>> 25614: (unnamed-fcode) [0xe34]
>>> 25615: (unnamed-fcode) [0xdff]
>>> 25616: (unnamed-fcode) [0x93d]
>>> 25617: b(lit) ( 0x010 ) 0xf
>>> 25618: <> ( 0x03d )
>>> 25619: b?branch ( 0x014 ) 0x0026 ( =dec 38)
>>> 25620:     (unnamed-fcode) [0x9bd]
>>> 25621:     b(lit) ( 0x010 ) 0xff
>>> 25622:     and ( 0x023 )
>>> 25623:     my-space ( 0x103 )
>>> 25624:     + ( 0x01e )
>>> 25625:     (unnamed-fcode) [0xa08]
>>> 25626:     b(lit) ( 0x010 ) 0x6
>>> 25627:     and ( 0x023 )
>>> 25628:     b(lit) ( 0x010 ) 0x4
>>> 25629:     = ( 0x03c )
>>> 25630:     b?branch ( 0x014 ) 0x0009 ()
>>> 25631:         b(') ( 0x011 ) (unnamed-fcode) [0x9c1]
>>> 25632:         b(to) ( 0x0c3 ) (unnamed-fcode) [0x9c0]
>>> 25633:     b(>resolve) ( 0x0b2 )
>>> 25634: b(>resolve) ( 0x0b2 )
>>>
>>> It seems to break right here……………………………….
>>
>> Those b?branch are in interpret mode, I don't know if that is handled
>> correctly (it is tricky to get right).
>>
> 
> So, is it hanging at b(>resolve) ( 0x0b2 ) or (unnamed-fcode) [0xddf] ?
> 
> Do we need to work on how Openbios handles  b?branch?

Are you sure that b?branch is the culprit here? A b?branch...b(>resolve) 
is a representation of a if() { ... } block which means as soon as you 
hit the b(>resolve) then you execute the contents of the buffer 
generated between b?branch and b(>resolve) if you match the condition.

Now the Solaris/SPARC boot blocks do some really crazy stuff in Forth 
which to the best of my knowledge flushed out all the FCode branch bugs 
- not that there couldn't be a bug remaining, but it's much more likely 
that something in the b?branch...b(>resolve) is throwing an exception.


ATB,

Mark.



More information about the OpenBIOS mailing list