[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