On 4/3/10, Mark Cave-Ayland mark.cave-ayland@siriusit.co.uk wrote:
Blue Swirl wrote:
Unfortunately some Linux images break, for example like this: OpenBIOS for Sparc64 Configuration device id QEMU version 1 machine id 0 kernel addr 404000 size 404d61 kernel cmdline root=/dev/ram -p console=prom init=/sbin/init of_debug=3 ofpci_debug=1 CPUs: 1 x SUNW,UltraSPARC-II UUID: 00000000-0000-0000-0000-000000000000 Welcome to OpenBIOS v1.0 built on Apr 2 2010 14:10 Type 'help' for detailed information
[sparc64] Kernel already loaded Unhandled Exception 0x0000000000000010 PC = 0x0000000000404380 NPC = 0x0000000000404384 Stopping execution
Hmmmm that's strange. Perhaps since the CIF argument array is passed in by the client then we do need to respect pb->nrets since the client has allocated the appropriate memory? What happens if you simply add the missing "0" from r732 in forth/system/ciface.fs to r731 and leave libopenbios/client.c as it was?
I took the other approach and this seems to work:
diff --git a/forth/system/ciface.fs b/forth/system/ciface.fs index aada422..b2035bc 100644 --- a/forth/system/ciface.fs +++ b/forth/system/ciface.fs @@ -341,5 +341,4 @@ device-end : client-call-iface ( [args] name len -- [args] -1 | [rets] 0 ) ciface-ph find-method 0= if -1 exit then execute - 0 ;