-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ARM: 6207/1: Replace CONFIG_HAS_TLS_REG with HWCAP_TLS and check for …
…it on V6 The TLS register is only available on ARM1136 r1p0 and later. Set HWCAP_TLS flags if hardware TLS is available and test for it if CONFIG_CPU_32v6K is not set for V6. Note that we set the TLS instruction in __kuser_get_tls dynamically as suggested by Jamie Lokier <jamie@shareable.org>. Also the __switch_to code is optimized out in most cases as suggested by Nicolas Pitre <nico@fluxnic.net>. Reviewed-by: Nicolas Pitre <nicolas.pitre@linaro.org> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
- Loading branch information
Tony Lindgren
authored and
Russell King
committed
Jul 9, 2010
1 parent
c1b2d97
commit f159f4e
Showing
8 changed files
with
105 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
#ifndef __ASMARM_TLS_H | ||
#define __ASMARM_TLS_H | ||
|
||
#ifdef __ASSEMBLY__ | ||
.macro set_tls_none, tp, tmp1, tmp2 | ||
.endm | ||
|
||
.macro set_tls_v6k, tp, tmp1, tmp2 | ||
mcr p15, 0, \tp, c13, c0, 3 @ set TLS register | ||
.endm | ||
|
||
.macro set_tls_v6, tp, tmp1, tmp2 | ||
ldr \tmp1, =elf_hwcap | ||
ldr \tmp1, [\tmp1, #0] | ||
mov \tmp2, #0xffff0fff | ||
tst \tmp1, #HWCAP_TLS @ hardware TLS available? | ||
mcrne p15, 0, \tp, c13, c0, 3 @ yes, set TLS register | ||
streq \tp, [\tmp2, #-15] @ set TLS value at 0xffff0ff0 | ||
.endm | ||
|
||
.macro set_tls_software, tp, tmp1, tmp2 | ||
mov \tmp1, #0xffff0fff | ||
str \tp, [\tmp1, #-15] @ set TLS value at 0xffff0ff0 | ||
.endm | ||
#endif | ||
|
||
#ifdef CONFIG_TLS_REG_EMUL | ||
#define tls_emu 1 | ||
#define has_tls_reg 1 | ||
#define set_tls set_tls_none | ||
#elif __LINUX_ARM_ARCH__ >= 7 || \ | ||
(__LINUX_ARM_ARCH__ == 6 && defined(CONFIG_CPU_32v6K)) | ||
#define tls_emu 0 | ||
#define has_tls_reg 1 | ||
#define set_tls set_tls_v6k | ||
#elif __LINUX_ARM_ARCH__ == 6 | ||
#define tls_emu 0 | ||
#define has_tls_reg (elf_hwcap & HWCAP_TLS) | ||
#define set_tls set_tls_v6 | ||
#else | ||
#define tls_emu 0 | ||
#define has_tls_reg 0 | ||
#define set_tls set_tls_software | ||
#endif | ||
|
||
#endif /* __ASMARM_TLS_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters