resolved conflicts for merge of 4a05d12c
to eclair-plus-aosp
This commit is contained in:
commit
7910e39d19
@ -366,6 +366,16 @@ endif
|
|||||||
ifeq ($(TARGET_ARCH),arm)
|
ifeq ($(TARGET_ARCH),arm)
|
||||||
libc_common_cflags += -fstrict-aliasing
|
libc_common_cflags += -fstrict-aliasing
|
||||||
libc_crt_target_cflags := -mthumb-interwork
|
libc_crt_target_cflags := -mthumb-interwork
|
||||||
|
#
|
||||||
|
# Define HAVE_ARM_TLS_REGISTER macro to indicate to the C library
|
||||||
|
# that it should access the hardware TLS register directly in
|
||||||
|
# private/bionic_tls.h
|
||||||
|
#
|
||||||
|
# The value must match your kernel configuration
|
||||||
|
#
|
||||||
|
ifeq ($(ARCH_ARM_HAVE_TLS_REGISTER),true)
|
||||||
|
libc_common_cflags += -DHAVE_ARM_TLS_REGISTER
|
||||||
|
endif
|
||||||
else # !arm
|
else # !arm
|
||||||
ifeq ($(TARGET_ARCH),x86)
|
ifeq ($(TARGET_ARCH),x86)
|
||||||
libc_crt_target_cflags := -m32
|
libc_crt_target_cflags := -m32
|
||||||
|
@ -87,10 +87,20 @@ extern void __init_tls(void** tls, void* thread_info);
|
|||||||
extern int __set_tls(void *ptr);
|
extern int __set_tls(void *ptr);
|
||||||
|
|
||||||
/* get the TLS */
|
/* get the TLS */
|
||||||
/* Linux kernel helpers for its TLS implementation */
|
|
||||||
#ifdef __arm__
|
#ifdef __arm__
|
||||||
typedef void* (__kernel_get_tls_t)(void);
|
/* Linux kernel helpers for its TLS implementation */
|
||||||
#define __get_tls (*(__kernel_get_tls_t *)0xffff0fe0)
|
/* For performance reasons, avoid calling the kernel helper
|
||||||
|
* Note that HAVE_ARM_TLS_REGISTER is build-specific
|
||||||
|
* (it must match your kernel configuration)
|
||||||
|
*/
|
||||||
|
# ifdef HAVE_ARM_TLS_REGISTER
|
||||||
|
# define __get_tls() \
|
||||||
|
({ register unsigned int __val asm("r0"); \
|
||||||
|
asm ("mrc p15, 0, r0, c13, c0, 3" : "=r"(__val) ); \
|
||||||
|
(volatile void*)__val; })
|
||||||
|
# else /* !HAVE_ARM_TLS_REGISTER */
|
||||||
|
# define __get_tls() ( *((volatile void **) 0xffff0ff0) )
|
||||||
|
# endif
|
||||||
#else
|
#else
|
||||||
extern void* __get_tls( void );
|
extern void* __get_tls( void );
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user