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 :(
ATB,
Mark.