Subject: Re: COMPAT_LINUX: moving forward with NPTL machdep code
To: Emmanuel Dreyfus <manu@netbsd.org>
From: Richard Earnshaw <Richard.Earnshaw@buzzard.freeserve.co.uk>
List: tech-kern
Date: 06/27/2006 00:44:44
On Mon, 26 Jun 2006 22:55:31 +0200, Emmanuel Dreyfus wrote:
> Richard Earnshaw <Richard.Earnshaw@buzzard.freeserve.co.uk> wrote:
> 
> > > For other architectures:
> > > - For ARM, we just have to get and set process' register R3
> > Eh?  Where did this 'specification' come from? 
> 
> I get this in Linux kernel sources:
> 
>         if (clone_flags & CLONE_SETTLS)
>                 thread->tp_value = regs->ARM_r3;
> 
> But if r3 is a scratch register, then I don't know what it means.

I think this must just be an argument that is set up somehow for some 
specific kernel system call, but I'm not sufficiently familiar with the 
kernel sources to work out which.

Anyhow, the introductory text to this patch gives a good summary of the 
kernel API on ARM:

  http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=2430/3

Note, however, that the ARM/Linux kernel ABI has recently undergone a 
massive overhaul in order to switch to using the new ARM EABI calling 
convention; much of our linux emulation support for ARM will need tweaking 
as a consequence.  TLS is only supported with the new ABI.

R.