[OpenBIOS] [PATCH] make select-dev and unselect-dev compatible with OBP
Bob Breuer
breuerr at mc.net
Fri Aug 5 16:29:22 CEST 2011
Mark Cave-Ayland wrote:
> On 02/08/11 16:00, Bob Breuer wrote:
>
>> select-dev and unselect-dev are pre Open Firmware, and not the same
>> as open-dev/device-end. Make them Sun OBP compatible by pulling the
>> functionality for select-dev/unselect-dev out of (and simplifying)
>> begin-package/end-package.
>>
>> Signed-off-by: Bob Breuer<breuerr at mc.net>
>> ---
>> forth/admin/devices.fs | 4 ----
>> forth/debugging/fcode.fs | 22 +++++++++++++++++-----
>> forth/device/pathres.fs | 4 ----
>> 3 files changed, 17 insertions(+), 13 deletions(-)
>>
>> Index: forth/device/pathres.fs
>> ===================================================================
>> --- forth/device/pathres.fs (revision 1045)
>> +++ forth/device/pathres.fs (working copy)
>> @@ -471,10 +471,6 @@
>> ( ihandle )
>> ;
>>
>> -: select-dev ( dev-str dev-len -- ihandle | 0 )
>> - open-dev
>> -;
>> -
>> : execute-device-method
>> ( ... dev-str dev-len met-str met-len -- ... false | ?? true )
>> 2swap
>> Index: forth/admin/devices.fs
>> ===================================================================
>> --- forth/admin/devices.fs (revision 1045)
>> +++ forth/admin/devices.fs (working copy)
>> @@ -46,10 +46,6 @@
>> 0 active-package!
>> ;
>>
>> -: unselect-dev ( -- )
>> - device-end
>> -;
>> -
>> : ?active-package ( -- phandle )
>> active-package dup 0= abort" no active device"
>> ;
>> Index: forth/debugging/fcode.fs
>> ===================================================================
>> --- forth/debugging/fcode.fs (revision 1045)
>> +++ forth/debugging/fcode.fs (working copy)
>> @@ -10,21 +10,33 @@
>> : headers ( -- )
>> ;
>>
>> -: begin-package ( arg-str arg-len reg-str reg-len dev-str dev-len -- )
>> +\ Open specified device node and make it the current instance.
>> +\ pre Open Firmware, but Sun OBP compatible
>> +: select-dev ( dev-str dev-len -- )
>> open-dev dup 0= abort" failed opening parent."
>> dup to my-self
>> ihandle>phandle active-package!
>> +;
>> +
>> +: begin-package ( arg-str arg-len reg-str reg-len dev-str dev-len -- )
>> + select-dev
>> new-device
>> set-args
>> ;
>>
>> -: end-package ( -- )
>> - my-parent>r
>> - finish-device
>> +\ Close current node, deselect active package and current instance,
>> +\ leaving no instance selected
>> +\ pre Open Firmware, but Sun OBP compatible
>> +: unselect-dev ( -- )
>> + my-self close-dev
>> 0 active-package!
>> 0 to my-self
>> - r> close-dev
>> ;
>>
>> +: end-package ( -- )
>> + finish-device
>> + unselect-dev
>> +;
>> +
>> : apply ( ... "method-name< >device-specifier< >" -- ??? )
>> ;
>
> I've applied this patch locally and tested it on my various SPARC32
> images and everything seems to work fine. My only minor niggle is that
> logically I would expect all of the package words to be in
> forth/admin/devices.fs rather than forth/debugging/fcode.fs.
Both begin-package and end-package were already in
forth/debugging/fcode.fs. This is mostly just code movement/refactoring
so I moved select-dev/unselect-dev to where most of the code already
was. Let me know if you want it another way. None of the words that I
changed are used anywhere within OpenBIOS itself.
>
> However... reading the IEEE 1275 specification once again I found this
> on page 251 (Section H.8): "The following user interface command names
> have changed from their pre-Open Firmware versions, with no change in
> behavior" and select-dev/unselect-dev are listed below. Hmmm. This seems
> to disagree with the original intent of the patch. Anyone have any
> further thoughts on this?
See the errata for section H.8. Also see the "Debugging and Testing
Fcode Programs" section of "Writing FCode 3.x Programs" at
http://download.oracle.com/docs/cd/E19253-01/806-1379-10/fctest.html#pgfId-330
which shows the simpler OBP definitions for begin-package/end-package
along with descriptions of select-dev/unselect-dev. Maybe I should add
this extra detail to the patch description and source comments.
Bob
>
> ATB,
>
> Mark.
>
More information about the OpenBIOS
mailing list