[OpenBIOS] How to pass CIF chain arguments on SPARC64?

Mark Cave-Ayland mark.cave-ayland at ilande.co.uk
Fri Apr 4 18:53:49 CEST 2014

Hi all,

I'm working on implementing a version of the CIF chain service for 
SPARC64 and am trying to understand what to do with the arguments 
parameters. From the specification:

"chain: Frees size bytes of memory starting at virtual address virt, 
then executes another client program beginning at address entry. The 
argument buffer args, len is copied into the Open Firmware memory and 
passed to the other program. The address of the arguments in the Open 
Firmware memory is the client program’s second argument, and their 
length is its third argument. chain is used to free any remaining memory 
for a secondary boot program and begin executing the booted program."

How are the arguments passed to the next client program? A quick peek at 
the OpenBOOT source shows that (init-program) only sets up %o4 (CIF) and 
%o6 (stack) registers. Does that mean that the arguments should be 
copied onto the stack or somehow via the registers? Unfortunately I 
can't seem to find a suitable 64-bit SPARC IEEE1275 ISA document anywhere :(



More information about the OpenBIOS mailing list