Subject: Re: Kaffe anyone?
To: None <port-hpcarm@netbsd.org>
From: Valeriy E. Ushakov <uwe@ptc.spbu.ru>
List: port-hpcarm
Date: 01/18/2005 15:22:56
Andreas Drewke <andreas_dr@gmx.de> wrote:

> on i386:
> /machine/signal.h declares struct sigcontext.
> 
> whereas
> on hpcarm
> /machine/signal.h declares struct sigcontext like this 
> 
> #ifndef _LOCORE
> #ifdef COMPAT_16
> struct sigcontext {
> ...
> }
> 
> since the default kernel which I am using sets the option COMPAT_16,
> _LOCORE must be the reason that compiling Kaffe sais:
> ...
> signal.c:264: warning: `struct sigcontext' declared inside parameter list
> ...
> 
> 
> I am curios, what means _LOCORE at all and Shoulnt it be the fact
> that the interfaces to the kernel should be as equal as possible on
> all architectures?

_LOCORE is defined for the parts of the kernel written in assembler.
See locore.S files in sys/arch/foo/foo - which is a "traditonal" file
name.  So it's a fancy way to say "assembler".  The ifndef is there to
prevent C declarations from being seen by the as(1).

As for the struct sigcontext - NetBSD 2.0 uses ucontext instead (which
was introduced in SVID (iirc) and is now a part of some relevant
standard (don't remeber which one off the top of my head)).

The kernel still supports struct sigcontext so that the old binaries
that rely on it can run under 2.0, but the new code should use
ucontext.


SY, Uwe
-- 
uwe@ptc.spbu.ru                         |       Zu Grunde kommen
http://www.ptc.spbu.ru/~uwe/            |       Ist zu Grunde gehen