Below is the startup sequence using the PSIM PowerPC simulator built into GDB. It correctly preempts and starts to execute the idle thread - which uses a System Call to write out the Serial Driver.
Of course by the time it preempts the second time something had gone wrong - hence the large amount of memory debugging.
Also, it's using newlib which is a good sign of progress. Once the preempting problem is fixed, and with the newlib C library, an ethernet/serial based serial debugger would be a next port of call. Oh and moving to Qemu or something which has an ethernet device... and an ethernet driver. Hmm... fun times!
From there - or with them statically linked - parse and load ELF images and load them in!
Anything from interrupts.c is tracing from psim.
Update:Fixed it - update the memory management to be correct. The scheduler now loops around the idle thread!
Wooooohoo!
TARGET-PPC32: copying interrupt vectors to RAM...
KERNEL: initialising memory pool 0x0001CA90, size 0x02000000
KERNEL: initialising the scheduler...
KERNEL: initialising the kernels heap...
KERNEL: mempool at 0x0001CA90 alloc 0x00404000 at 0x0001CA90
KERNEL: initialising memory pool 0x0001CA90, size 0x00404000
KERNEL: initialising the task manager (dynamic)...
KERNEL: mempool at 0x0001CA90 alloc 0x0000000C at 0x0001CA90
KERNEL: mempool at 0x0001CA90 alloc 0x0000000C at 0x0001CA9C
KERNEL: creating kernel process...
KERNEL: mempool at 0x0001CA90 alloc 0x0000000C at 0x0001CAA8
KERNEL: creating idle thread...
KERNEL: mempool at 0x0001CA90 alloc 0x00000220 at 0x0001CAB4
KERNEL: mempool at 0x0001CA90 alloc 0x00001000 at 0x0001CCD4
KERNEL: thread (Kernel Idle) create spb=0x0001CCD4, sps=0x00001000, sp=0x0001DCD3
KERNEL: attaching the idle thread...
KERNEL: mempool at 0x0001CA90 alloc 0x0000000C at 0x0001DCD4
KERNEL: mempool at 0x0001CA90 alloc 0x00000220 at 0x0001DCE0
KERNEL: mempool at 0x0001CA90 alloc 0x00001000 at 0x0001DF00
KERNEL: thread (Kernel Scheduler) create spb=0x0001DF00, sps=0x00001000, sp=0x0001EEFF
KERNEL: mempool at 0x0001CA90 alloc 0x0000000C at 0x0001EF00
KERNEL: scheduler initialised
KERNEL: SAMOS Version 0.1
TARGET-PPC32: enabling external interrupts...
interrupts.c:464: external interrupt - cia=0x2104
interrupts.c:396: system-call interrupt - cia=0x5e70
KERNEL: idle thread
interrupts.c:396: system-call interrupt - cia=0x5e70
KERNEL: idle thread
interrupts.c:396: system-call interrupt - cia=0x5e70
KERNEL: idle thread
interrupts.c:396: system-call interrupt - cia=0x5e70
KERNEL: idle thread
interrupts.c:396: system-call interrupt - cia=0x5e70
KERNEL: idle thread
interrupts.c:396: system-call interrupt - cia=0x5e70
KERNEL: idle thread
interrupts.c:396: system-call interrupt - cia=0x5e70
KERNEL: idle thread
interrupts.c:396: system-call interrupt - cia=0x5e70
KERNEL: idle thread
interrupts.c:396: system-call interrupt - cia=0x5e70
KERNEL: idle thread
interrupts.c:396: system-call interrupt - cia=0x5e70
KERNEL: idle thread
interrupts.c:396: system-call interrupt - cia=0x5e70
KERNEL: idle thread
interrupts.c:396: system-call interrupt - cia=0x5e70
KERNEL: idle thread
interrupts.c:464: external interrupt - cia=0x4cfc
interrupts.c:396: system-call interrupt - cia=0x5e70
KERNEL: idle thread