On Sun, Jan 3, 2010 at 3:00 PM, Blue Swirl blauwirbel@gmail.com wrote:
On Sun, Jan 3, 2010 at 10:12 AM, Mark Cave-Ayland mark.cave-ayland@siriusit.co.uk wrote:
Blue Swirl wrote:
Have we verified that OpenBios can jump to a SPARC ELF file?
Hmmm no - looking at the PPC code for the go word it seems that we need someone who owns a copy of the IEEE-1275 bindings for SPARC and who is proficient in SPARC assembler to implement this :(
Which bindings? http://playground.sun.com/1275/home.html gives a SPARC binding but that is for V8.
I think that will do; at least it should contain enough information to work on the saved-program-state and the interaction between the client image and OF. Alas it's quite far out of my sphere of knowledge though.
Looking at SILO and Linux usage, It looks like OF entry point needs to be in %o4 and %o0 must be zero.
http://fxr.watson.org/fxr/source/arch/sparc64/kernel/head.S?v=linux-2.4.22 http://git.kernel.org/?p=linux/kernel/git/bcollins/silo.git;a=blob;f=first/u... http://fxr.watson.org/fxr/source/arch/sparc/kernel/head.S?v=linux-2.4.22
But start_client_image() already handles this, except for zero %o0.
We may want to rework implementation so go() uses start_client_image() with saved context, and boot word uses client state reset, load, init-program and go words. load would fetch image, init-program would prepare saved context. This would match a hint in of1275 document about difference between boot and load words.
Igor has suggested a C version in his previous email, although again I don't really know enough about SPARC to know if this is valid or not.
Looks OK, though I don't again see any difference.
You need to skip return for failed ofmem_claim() in elf-loader to see any difference.