Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: converting SWIs to pass swi number in a register.



On Thu, 2008-07-03 at 10:15 +0100, Chris Gilbert wrote:
> Richard Earnshaw wrote:
> > On Wed, 2008-07-02 at 22:41 -0700, Matt Thomas wrote:
> >> On Jul 2, 2008, at 2:43 PM, Chris Gilbert wrote:
> >>> This would allow a post 5.0 kernel to only need to look at the r12/ 
> >>> ip to work out the SWI call.
> >> I'm already doing that for the THUMB SWI where syscall # > 255.
> >> One question is how do we know we are using ip?  Think binary
> >> compat with older binaries...
> >>
> > 
> > Use 0 in the SWI # field (as linux does).  You only need to look in the
> > SWI field if you have a relevant COMPAT_.. enabled.
> 
> And if we find 0 look at the register? 

Yes.

>  I had hoped to cheat for now and
> not do the kernel side change, just setup userland to do the right
> thing, but that's just laziness on my part :)  But then the kernel work
> is quite small really.
> 
> > Overall I think this would be a good move (with potential performance
> > boost), but probably should be combined with a move to the AEABI as
> > well...
> 
> That was something I suggested doing when we do a libc major (which is
> expected when time_t becomes 64bit.)  I was hoping to sneak this in so
> that come the release after 5.0 we can make use of this...
> 
> > BTW, AFAICT linux uses r7 for the syscall number, since Thumb finds it
> > very hard to set up r12.
> 
> Yes it does, I was thinking about how to avoid stacking r7, and r12
> doesn't normally need to be stacked.
> 

But in Thumb you'll have to stack a register anyway, since r0-r3 will
contain arguments (well, they will for some calls), and you'll need a
low-reg in which to construct the swi number before you move it to r12.
Overall I would think it's the best compromise to just use r7
everywhere.

R.



Home | Main Index | Thread Index | Old Index