Subject: Re: Port amigappc
To: Frank Wille <frank@phoenix.owl.de>
From: Ignatios Souvatzis <is@netbsd.org>
List: port-powerpc
Date: 01/06/2007 11:54:52
On Sat, Jan 06, 2007 at 09:50:12AM +0100, Frank Wille wrote:
> Hi!
> 
> I'm currently analyzing and experimenting with the amigappc port, to get a
> better understanding for kernel-programming.
> 
> After many years amigappc compiles and links again, but I have a problem
> with the exception handlers from powerpc/powerpc/trap_subr.S: They are using
> the "bla" instruction to branch into the actual kernel, which forces the
> kernel to reside in a region from 0x00000000 to 0x03ffffff or 0xfc000000 to
> 0xffffffff.
> 
> Unfortunately Amigas have their Fast-RAM between 0x07000000 and 0x0fffffff,
> which is out of range. What would be the most elegant solution?
> 
> Maybe implement a stub near the exception address space, which does
> something like:
> 
> s_trap:
>     bl  s_trap2
>     .long   s_trap_kernel   # R_PPC_ADDR32 reloc
> s_trap2:
>     mflr    r11
>     lwz r11,0(r11)
>     mtlr    r11
>     blr

Uh, no. This creates stalls waiting for the memory  read.

There's a load high (or was it or to high) instruction in the PPC
instruction set, and you can tell the assembler/linker to put the
high part of the address in there. There are examples.

	-is