Subject: Re: RFC: Change SWI number base?
To: David Laight <David.Laight@btinternet.com>
From: Ben Harris <firstname.lastname@example.org>
Date: 01/08/2002 09:20:36
On Fri, 4 Jan 2002, David Laight wrote:
> > stackargs = (caddr_t) &frame->tf_r1;
> > regparms = 3 * sizeof(int);
> > callp = p->p_emul->e_sysent;
> Yes... I don't have the source available....
> Does lose a register arg though.
> Could the syscall number be passed in the user r12?
> It is available - unless the SWI entry code already trashes it.
This seems a far better idea that using R0. It only adds one instruction
to the current ARM-state veneer, and produces a shorter Thumb-state veneer
than using R0 despite the pain of getting at high registers from Thumb
> Ok - make the thumb code:
> .balign 4
> .short syscall & 0xffff
> swi syscall >> 16
> bcs __cerror
> And do a 32 bit load from pc-4 (as in the current ARM version).
> The linker should honour the alignment rule.
That is a truly evil hack. Well done. Unfortunately, it won't work on
big-endian systems (which we might well end up supporting some day).
Ben Harris <email@example.com>
Portmaster, NetBSD/arm26 <URL:http://www.netbsd.org/Ports/arm26/>