[PATCH v7 0/9] ARM: VDSO
Andy Lutomirski
luto at amacapital.net
Mon Jun 30 14:56:49 PDT 2014
On 06/30/2014 08:42 AM, Nathan Lynch wrote:
> On 06/30/2014 09:40 AM, Will Deacon wrote:
>> Hi Nathan,
>>
>> On Mon, Jun 23, 2014 at 04:11:49AM +0100, Nathan Lynch wrote:
>>> Provide fast userspace implementations of gettimeofday and
>>> clock_gettime on systems that implement the generic timers extension
>>> defined in ARMv7. This follows the example of arm64 in conception but
>>> significantly differs in some aspects of the implementation (C vs
>>> assembly, mainly).
>>
>> [...]
>>
>> This series is starting to gain traction now, so it's probably time to start
>> thinking about implementing this for CONFIG_COMPAT on arm64. We currently
>> map a fake vectors page there, but this would be much more flexible,
>> particularly as its written in C (and so we would magically get any new
>> functions added to the 32-bit version).
>>
>> So, there are a couple of questions that spring to mind:
>>
>> - How difficult is it to share the vdso code with arm64 to build a compat
>> vdso? (getting the Makefile to work will be hard, as we'll need an arm
>> toolchain...).
>
> Not sure. x86 might be the best example to work from here, although it
> has the advantage of everything living under arch/x86. 64-bit powerpc
> kernels provide a 32-bit VDSO for compat tasks but I think it doesn't
> really share code with the 64-bit VDSO.
Heh. x86 was not a shining example of how to share code. It's a little
bit better now (3.16-rc3 and up).
>
>>
>> - If we use your code to build an arm64 vdso, how much slower is it than
>> the handcrafted asm we currently have?
>
> Someone with access to 64-bit hardware (i.e. not me) would have to find
> this out, but I would not be surprised if the C code could be tightened
> up -- I have not spent much time on optimizing it.
>
I can't comment on ARM specifically, but the only assembly in the x86
vclock_gettime is an asm volatile (""), which causes gcc to emit more
optimal code. I doubt I could shave off more than a cycle or two by
rewriting it in assembly.
--Andy
More information about the linux-arm-kernel
mailing list