[OpenBIOS] Latest SPARC64 & Milax update
Igor Kovalenko
igor.v.kovalenko at gmail.com
Sun Jan 3 09:52:33 CET 2010
On Sun, Jan 3, 2010 at 6:42 AM, Mark Cave-Ayland
<mark.cave-ayland at siriusit.co.uk> wrote:
> Igor Kovalenko wrote:
>
>> Memory range which it tries to claim is already mapped.
>> If I try to comment out this failing statement, it copies elf
>> data to target addresses, and control is returned to prompt.
>
> Oh that's interesting - is it a bug in the elf-loader, or do we need to
> change the ofmem implementation to allow multiple mappings?
>
>> 'go' reports 'go is not yet implemented'
>
> Yeah unfortunately we need someone proficient in SPARC assembler and with
> the relevant documentation to write the equivalent of PPC's call_elf() for
> SPARC :(
>
Seems to be no need to go with assembly yet. With the following change
you can try executing
elf-entry @ " (go)" evaluate
like ppc implementation of 'go' does. It would start executing elf code.
Unfortunately it would crash with unhandled divide by zero trap
which I still cannot find a reason for.
diff --git a/arch/sparc64/openbios.c b/arch/sparc64/openbios.c
index 2926212..7c8de91 100644
--- a/arch/sparc64/openbios.c
+++ b/arch/sparc64/openbios.c
@@ -459,6 +459,13 @@ static void debugger_breakpoint(void)
printk("=== DEBUGGER BREAKPOINT ===\n");
}
+static void go( void )
+{
+ ucell addr = POP();
+ void (*entry)(void) = (void*) addr;
+ entry();
+}
+
static void
arch_init( void )
{
@@ -470,6 +477,7 @@ arch_init( void )
device_end();
bind_func("platform-boot", boot );
+ bind_func("(go)", go);
}
--
Kind regards,
Igor V. Kovalenko
More information about the OpenBIOS
mailing list