[OpenBIOS] [Qemu-ppc] MorphOS 4.x on QEMU
BALATON Zoltan
balaton at eik.bme.hu
Mon Mar 3 14:05:53 CET 2014
On Sun, 2 Mar 2014, Mark Cave-Ayland wrote:
> Now the fact that nextprop returns -1 indicates that the following check has
> failed:
>
> \ verify that prev exists (overkill...)
> dup if
> 2dup r@ get-package-property if
> r> 2drop 2drop -1 exit
> else
> 2drop
> then
> then
>
> This means that the client requested the next property after "name" but
> OpenBIOS's get-package-property couldn't find "name" and so returns -1 back
> to the caller as shown in your trace.
If I remove this check it returns 0 and an empty string. With debug
nextprop (and the above check removed + Olivier's patch) I get the
following:
>> finddevice("/cpus") = 0xfff4bba8
>> child(0xfff4bba8) = 0xfff51908
>> nextprop(0xfff51908, "", 0x07de7e30) =
: nextprop ( 7de7e30 7de7e30 fff51908 )
fff4a06c: >r
R: ( fff49af0 fff49bec fff383a4 fff4aa8c fff3dba4 0 fff3db54 fffb4214 fff4cb08 0
3 0 fff35164 fffb4214 fff38584 7c58522 100 0 15 16 fff38500 fff37dfc fffb4214 f
ff49224 fff448c0 fffb4214 fffb4214 fff4a8b0 fff4a7ac 0 4 c fff35164 fffb4214 )
( 7de7e30 7de7e30 )
fff4a070: dup ( 7de7e30 7de7e30 7de7e30 )
fff4a074: 0= ( 7de7e30 7de7e30 0 )
fff4a078: do?branch ( 7de7e30 7de7e30 )
fff4a08c: dup ( 7de7e30 7de7e30 7de7e30 )
fff4a090: cstrlen ( 7de7e30 7de7e30 0 )
fff4a094: 0 ( 7de7e30 7de7e30 0 0 )
fff4a098: 3 ( 7de7e30 7de7e30 0 0 3 )
fff4a09c: pick ( 7de7e30 7de7e30 0 0 7de7e30 )
fff4a0a0: c! ( 7de7e30 7de7e30 0 )
fff4a0a4: r> ( 7de7e30 7de7e30 0 fff51908 )
fff4a0a8: next-property-std ( 7de7e30 fff5197c 4 ffffffff )
fff4a0ac: do?branch ( 7de7e30 fff5197c 4 )
fff4a0b4: dup ( 7de7e30 fff5197c 4 4 )
fff4a0b8: 1+ ( 7de7e30 fff5197c 4 5 )
fff4a0bc: -rot ( 7de7e30 5 fff5197c 4 )
fff4a0c0: ci-strcpy ( 4 )
fff4a0c4: drop ( Empty )
fff4a0c8: 1 ( 1 )
fff4a0cc: dobranch ( 1 )
fff4a0dc: (semis)
[ Finished nextprop ] 1
>> 0x07de7e30 6e 61 6d 65 00 00 00 00 00 00 00 00 00 00 00 00 name............
>> 0x07de7e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
>> getprop(0xfff51908, "name", 0x07de7df0, 64) = 11
>> 0x07de7df0 50 6f 77 65 72 50 43 2c 47 34 00 __ __ __ __ __ PowerPC,G4.
>> nextprop(0xfff51908, "name", 0x07de7e30) =
: nextprop ( 7de7e30 7de7e30 fff51908 )
fff4a06c: >r
R: ( fff49af0 fff49bec fff383a4 fff4aa8c fff3dba4 0 fff3db54 fffb4214 fff4cb08 0
3 0 fff35164 fffb4214 fff38584 7c58522 100 0 15 16 fff38500 fff37dfc fffb4214 f
ff49224 fff448c0 fffb4214 fffb4214 fff4a8b0 fff4a7ac 0 4 c fff35164 fffb4214 )
( 7de7e30 7de7e30 )
fff4a070: dup ( 7de7e30 7de7e30 7de7e30 )
fff4a074: 0= ( 7de7e30 7de7e30 0 )
fff4a078: do?branch ( 7de7e30 7de7e30 )
fff4a08c: dup ( 7de7e30 7de7e30 7de7e30 )
fff4a090: cstrlen ( 7de7e30 7de7e30 4 )
fff4a094: 0 ( 7de7e30 7de7e30 4 0 )
fff4a098: 3 ( 7de7e30 7de7e30 4 0 3 )
fff4a09c: pick ( 7de7e30 7de7e30 4 0 7de7e30 )
fff4a0a0: c! ( 7de7e30 7de7e30 4 )
fff4a0a4: r> ( 7de7e30 7de7e30 4 fff51908 )
fff4a0a8: next-property-std ( 7de7e30 0 )
fff4a0ac: do?branch ( 7de7e30 )
fff4a0d4: drop ( Empty )
fff4a0d8: 0 ( 0 )
fff4a0dc: (semis)
[ Finished nextprop ] 0
>> 0x07de7e30 00 61 6d 65 00 00 00 00 00 00 00 00 00 00 00 00 .ame............
>> 0x07de7e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
>> child(0xfff51908) = 0x00000000
> You should find that OpenBIOS boots your image and then breaks on nextprop,
> allowing you to step through the function examining the stack (and input
> string) to see what is going wrong.
I hope the above make sense to you and helps finding why it does not work.
Regards,
BALATON Zoltan
More information about the OpenBIOS
mailing list