Hello,
On Sun, 2 Mar 2014, Olivier Danet wrote:
It is possible to invoke manually "nextprop" from the OpenBIOS prompt :
cd /cpus/PowerPC,G4
\ Empty string : Returns 1 "name"= first property " mmmmmmmmmmmm" drop dup " "(00)" drop ?active-package " nextprop" client-call-iface . cr . dup cstrlen cr type cr
\ Nonexistant : Returns -1 "" " mmmmmmmmmmmm" drop dup " mmmmm"(00)" drop ?active-package " nextprop" client-call-iface . cr . dup cstrlen cr type cr
\ Property : Returns 1 and the following one : "device_type" " mmmmmmmmmmmm" drop dup " name"(00)" drop ?active-package " nextprop" client-call-iface . cr . dup cstrlen cr type cr
\ Last : Returns 0 "" " mmmmmmmmmmmm" drop dup " translations"(00)" drop ?active-package " nextprop" client-call-iface . cr . dup cstrlen cr type cr
... and it works!
These commands work but when called by the boot loader it fails.
Maybe you could try this :
memdump(arg2pointer(pb->args[2]), pb->args[pb->nargs]);
memdump(arg2pointer(pb->args[2]), 32);
With this patch it shows that it returns -1 and an empty string:
finddevice("/cpus") = 0xfff4bbe8 child(0xfff4bbe8) = 0xfff51948 nextprop(0xfff51948, "", 0x07de7e30) = 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(0xfff51948, "name", 0x07de7df0, 64) = 11 0x07de7df0 50 6f 77 65 72 50 43 2c 47 34 00 __ __ __ __ __ PowerPC,G4. nextprop(0xfff51948, "name", 0x07de7e30) = -1 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(0xfff51948) = 0x00000000
Finally, you can also try this :
Index: forth/system/ciface.fs
--- forth/system/ciface.fs (révision 1269) +++ forth/system/ciface.fs (copie de travail) @@ -110,18 +110,7 @@ ( buf prev prev_len ) 0 3 pick c!
- \ verify that prev exists (overkill...)
- dup if
- 2dup r@ get-package-property if
r> 2drop 2drop -1 exit
- else
2drop
- then
- then
- ( buf prev prev_len )
- r> next-property if
- r> next-property if ( buf name name_len ) dup 1+ -rot ci-strcpy drop 1 else
=================================================================== (or next-property-std above if you applied my previous patch)
Maybe it will change something.
It only changes that now it returns 0 but still an empty string:
finddevice("/cpus") = 0xfff4bba8 child(0xfff4bba8) = 0xfff51908 nextprop(0xfff51908, "", 0x07de7e30) = 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) = 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
Any more ideas?
Thanks, BALATON Zoltan