[OpenBIOS] PATCH v2: Rework CIF interface to handle parameters in reverse order

Nick Couchman Nick.Couchman at seakr.com
Mon Nov 30 16:50:18 CET 2009

>>> On 2009/11/29 at 06:30, Mark Cave-Ayland <mark.cave-ayland at siriusit.co.uk>
> Hi everyone,
> Here is a second version of the patch which attempts to reverse the 
> argument order of the CIF Forth words so that they can be called 
> correctly from both Forth and C.
> The patch is fairly straightforward; probably the only unexpected part 
> is the need to rename the existing /openprom/client-services "claim" and 
> "release" words to "cif-claim" and "cif-release" respectively. This is 
> because we need to use the "claim" and "release" words in 
> forth/system/ciface.fs to reverse the argument order before calling the 
> real underlying words.
> I've tested this on a FC12 PPC CD as well as my SPARC64 Milax CD and 
> with this version of the patch, the CIF words are called correctly in 
> both cases. I'd like to apply this reasonably soon, so please can people 
> test on their setups to make sure it doesn't break anything?
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at siriusit.co.uk>

(Sorry if the patch wasn't supposed to fix this...)

After applying this patch still getting:

OpenBIOS for Sparc64
Configuration device id QEMU version 1 machine id 0
UUID: 00000000-0000-0000-0000-000000000000
claim isn't unique.
release isn't unique.
Welcome to OpenBIOS v1.0 built on Nov 30 2009 15:44
  Type 'help' for detailed information

0 > boot cdrom 
[sparc64] Booting file 'cdrom' with parameters ''
Not a bootable ELF image
Not a Linux kernel image
Not a bootable a.out image
Loading FCode image...
Loaded 7120 bytes
entry point is 0x4000
Evaluating FCode...
Unhandled Exception 0x0000000008000000
PC = 0x00000000ffd10e3c NPC = 0x00000000ffd10e40
Stopping execution

and GDB shows the error at:
(gdb) l *0x00000000ffd10e3c
0xffd10e3c is in cfetch (../include/openbios/stack.h:34).
29	typedef ucell phandle_t;
34	static inline void PUSH(ucell value) {
35		dstack[++dstackcnt] = (value);
36	}
37	static inline void PUSH_xt( xt_t xt ) { PUSH( (ucell)xt ); }
38	static inline void PUSH_ih( ihandle_t ih ) { PUSH( (ucell)ih ); }

Let me know if I can provide any additional output or debugging steps!

This e-mail may contain confidential and privileged material for the sole use of the intended recipient.  If this email is not intended for you, or you are not responsible for the delivery of this message to the intended recipient, please note that this message may contain SEAKR Engineering (SEAKR) Privileged/Proprietary Information.  In such a case, you are strictly prohibited from downloading, photocopying, distributing or otherwise using this message, its contents or attachments in any way.  If you have received this message in error, please notify us immediately by replying to this e-mail and delete the message from your mailbox.  Information contained in this message that does not relate to the business of SEAKR is neither endorsed by nor attributable to SEAKR.

More information about the OpenBIOS mailing list