From: Nathan_Lynch@mentor.com (Nathan Lynch)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v7 7/9] ARM: add vdso user-space code
Date: Tue, 1 Jul 2014 08:28:30 -0500 [thread overview]
Message-ID: <53B2B77E.7040904@mentor.com> (raw)
In-Reply-To: <53B1D6B8.7080806@amacapital.net>
On 06/30/2014 04:29 PM, Andy Lutomirski wrote:
> On 06/22/2014 08:11 PM, Nathan Lynch wrote:
>> +
>> +# Build rules
>> +targets := $(obj-vdso) vdso.so vdso.so.dbg vdso.so.raw vdso.lds
>> +obj-vdso := $(addprefix $(obj)/, $(obj-vdso))
>> +
>> +ccflags-y := -shared -fPIC -fno-common -fno-builtin -fno-stack-protector
>> +ccflags-y += -nostdlib -Wl,-soname=linux-vdso.so.1 \
>> + $(call cc-ldoption, -Wl$(comma)--hash-style=sysv)
>
> Does this need -DDISABLE_BRANCH_PROFILING?
Yes, thanks.
>> diff --git a/arch/arm/kernel/vdso/checkundef.sh b/arch/arm/kernel/vdso/checkundef.sh
>> new file mode 100755
>> index 000000000000..185c30da202b
>> --- /dev/null
>> +++ b/arch/arm/kernel/vdso/checkundef.sh
>> @@ -0,0 +1,9 @@
>> +#!/bin/sh
>> +nm="$1"
>> +file="$2"
>> +"$nm" -u "$file" | ( ret=0; while read discard symbol
>> +do
>> + echo "$file: undefined symbol $symbol"
>> + ret=1
>> +done ; exit $ret )
>> +exit $?
>
> This is just as buggy as the x86 version. make;make malfunctions.
>
> Can you rely on a new enough toolchain to use -Wl,--no-undefined?
Looks like relying on --no-undefined should be okay.
>> diff --git a/arch/arm/kernel/vdso/datapage.S b/arch/arm/kernel/vdso/datapage.S
>> new file mode 100644
>> index 000000000000..fbf36d75da06
>> --- /dev/null
>> +++ b/arch/arm/kernel/vdso/datapage.S
>> @@ -0,0 +1,15 @@
>> +#include <linux/linkage.h>
>> +#include <asm/asm-offsets.h>
>> +
>> + .align 2
>> +.L_vdso_data_ptr:
>> + .long _start - . - VDSO_DATA_SIZE
>> +
>> +ENTRY(__get_datapage)
>> + .cfi_startproc
>> + adr r0, .L_vdso_data_ptr
>> + ldr r1, [r0]
>> + add r0, r0, r1
>> + bx lr
>> + .cfi_endproc
>> +ENDPROC(__get_datapage)
>
> Can you translate this into English for the non-ARM-speakers here?
It's a PC-relative load of the data page. If someone knows how to make
this happen in the C portion of the vdso, it would might get us a little
speedup.
>> +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
>> +#define HOST_ORDER ELFDATA2LSB
>> +#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
>> +#define HOST_ORDER ELFDATA2MSB
>> +#endif
>> +
>> +static const char *outfile;
>> +
>> +static void cleanup(void)
>> +{
>> + if (error_message_count > 0 && outfile != NULL)
>> + unlink(outfile);
>> +}
>> +
>> +static Elf32_Word read_elf_word(Elf32_Word word, bool swap)
>> +{
>> + return swap ? bswap_32(word) : word;
>> +}
>> +
>> +static Elf32_Half read_elf_half(Elf32_Half half, bool swap)
>> +{
>> + return swap ? bswap_16(half) : half;
>> +}
>> +
>> +static void write_elf_word(Elf32_Word val, Elf32_Word *dst, bool swap)
>> +{
>> + *dst = swap ? bswap_32(val) : val;
>> +}
>
> The macros in arch/x86/vdso/vdso2c.c are IMO much nicer.
Respectfully, I think I'd disagree, but more importantly, vdso2c.c seems
to assume a little-endian target.
next prev parent reply other threads:[~2014-07-01 13:28 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-23 3:11 [PATCH v7 0/9] ARM: VDSO Nathan Lynch
2014-06-23 3:11 ` [PATCH v7 1/9] clocksource: arm_arch_timer: change clocksource name if CP15 unavailable Nathan Lynch
2014-06-23 3:11 ` [PATCH v7 2/9] clocksource: arm_arch_timer: enable counter access for 32-bit ARM Nathan Lynch
2014-06-23 3:11 ` [PATCH v7 3/9] ARM: arch_timer: remove unused functions Nathan Lynch
2014-06-23 3:11 ` [PATCH v7 4/9] arm64: " Nathan Lynch
2014-06-23 3:11 ` [PATCH v7 5/9] ARM: place sigpage at a random offset above stack Nathan Lynch
2014-06-23 3:11 ` [PATCH v7 6/9] ARM: miscellaneous vdso infrastructure, preparation Nathan Lynch
2014-06-30 10:11 ` Arnd Bergmann
2014-06-30 12:27 ` Nathan Lynch
2014-06-30 13:06 ` Arnd Bergmann
2014-06-23 3:11 ` [PATCH v7 7/9] ARM: add vdso user-space code Nathan Lynch
2014-06-28 9:53 ` Russell King - ARM Linux
2014-06-28 10:03 ` Russell King - ARM Linux
2014-06-30 15:56 ` Andy Lutomirski
2014-06-28 15:19 ` Nathan Lynch
2014-06-28 15:26 ` Russell King - ARM Linux
2014-06-28 16:13 ` Nathan Lynch
2014-06-28 18:12 ` Russell King - ARM Linux
2014-06-28 19:45 ` Nathan Lynch
2014-06-28 20:11 ` Russell King - ARM Linux
2014-06-28 21:35 ` Nathan Lynch
2014-06-29 8:34 ` Russell King - ARM Linux
2014-06-29 15:48 ` Nathan Lynch
2014-06-29 16:07 ` Russell King - ARM Linux
2014-06-29 23:04 ` Nathan Lynch
2014-06-30 21:33 ` Andy Lutomirski
2014-06-30 15:59 ` Andy Lutomirski
2014-06-30 16:50 ` Nathan Lynch
2014-06-30 21:29 ` Andy Lutomirski
2014-07-01 9:00 ` Will Deacon
2014-07-01 13:34 ` Nathan Lynch
2014-07-01 14:11 ` Andy Lutomirski
2014-07-01 13:28 ` Nathan Lynch [this message]
2014-07-01 14:56 ` Andy Lutomirski
2014-06-23 3:11 ` [PATCH v7 8/9] ARM: vdso initialization, mapping, and synchronization Nathan Lynch
2014-06-30 21:37 ` Andy Lutomirski
2014-07-01 9:03 ` Will Deacon
2014-07-01 14:11 ` Nathan Lynch
2014-07-01 14:15 ` Will Deacon
2014-07-01 14:17 ` Andy Lutomirski
2014-07-01 17:27 ` Christopher Covington
2014-07-02 14:40 ` Will Deacon
2014-07-02 15:54 ` Andy Lutomirski
2014-07-02 16:18 ` Nathan Lynch
2014-07-02 16:27 ` Will Deacon
2014-07-02 16:47 ` Andy Lutomirski
2014-07-02 17:24 ` Will Deacon
2014-07-02 18:34 ` Andy Lutomirski
2014-07-02 18:54 ` Will Deacon
2014-07-22 0:14 ` Andy Lutomirski
2014-07-22 8:13 ` Will Deacon
2014-07-01 14:01 ` Nathan Lynch
2014-07-01 14:09 ` Andy Lutomirski
2014-07-01 14:14 ` Russell King - ARM Linux
2014-06-23 3:11 ` [PATCH v7 9/9] ARM: add CONFIG_VDSO Kconfig and Makefile bits Nathan Lynch
2014-06-27 8:51 ` [PATCH v7 0/9] ARM: VDSO Jan Glauber
2014-06-27 8:57 ` Russell King - ARM Linux
2014-06-27 9:41 ` Ard Biesheuvel
2014-06-27 9:46 ` Russell King - ARM Linux
2014-06-27 17:01 ` Nathan Lynch
2014-06-28 9:42 ` Russell King - ARM Linux
2014-06-28 9:55 ` Russell King - ARM Linux
2014-06-28 14:49 ` Russell King - ARM Linux
2014-06-30 7:27 ` Arnd Bergmann
2014-06-30 7:43 ` Arnd Bergmann
2014-06-30 18:27 ` Nathan Lynch
2014-06-27 16:00 ` Nathan Lynch
2014-06-30 16:03 ` Andy Lutomirski
2014-06-30 8:12 ` Ard Biesheuvel
2014-07-01 16:34 ` Nathan Lynch
2014-07-01 20:08 ` Ard Biesheuvel
2014-07-01 22:44 ` Russell King - ARM Linux
2014-06-30 14:40 ` Will Deacon
2014-06-30 15:42 ` Nathan Lynch
2014-06-30 21:56 ` Andy Lutomirski
2014-07-01 9:04 ` Will Deacon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53B2B77E.7040904@mentor.com \
--to=nathan_lynch@mentor.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.