diff options
Diffstat (limited to 'arch/tile')
-rw-r--r-- | arch/tile/Kconfig | 1 | ||||
-rw-r--r-- | arch/tile/lib/Makefile | 14 | ||||
-rw-r--r-- | arch/tile/lib/cacheflush.c | 3 | ||||
-rw-r--r-- | arch/tile/lib/memcpy_64.c | 3 |
4 files changed, 12 insertions, 9 deletions
diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig index de599c14c4f2..b2be42524483 100644 --- a/arch/tile/Kconfig +++ b/arch/tile/Kconfig | |||
@@ -26,6 +26,7 @@ config TILE | |||
26 | select HAVE_SYSCALL_TRACEPOINTS | 26 | select HAVE_SYSCALL_TRACEPOINTS |
27 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE | 27 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE |
28 | select HAVE_DEBUG_STACKOVERFLOW | 28 | select HAVE_DEBUG_STACKOVERFLOW |
29 | select ARCH_WANT_FRAME_POINTERS | ||
29 | 30 | ||
30 | # FIXME: investigate whether we need/want these options. | 31 | # FIXME: investigate whether we need/want these options. |
31 | # select HAVE_IOREMAP_PROT | 32 | # select HAVE_IOREMAP_PROT |
diff --git a/arch/tile/lib/Makefile b/arch/tile/lib/Makefile index 5d844374b2b1..9adfd76fbdd8 100644 --- a/arch/tile/lib/Makefile +++ b/arch/tile/lib/Makefile | |||
@@ -6,13 +6,13 @@ lib-y = cacheflush.o checksum.o cpumask.o delay.o uaccess.o \ | |||
6 | memmove.o memcpy_$(BITS).o memchr_$(BITS).o memset_$(BITS).o \ | 6 | memmove.o memcpy_$(BITS).o memchr_$(BITS).o memset_$(BITS).o \ |
7 | strchr_$(BITS).o strlen_$(BITS).o strnlen_$(BITS).o | 7 | strchr_$(BITS).o strlen_$(BITS).o strnlen_$(BITS).o |
8 | 8 | ||
9 | ifeq ($(CONFIG_TILEGX),y) | 9 | lib-$(CONFIG_TILEGX) += memcpy_user_64.o |
10 | CFLAGS_REMOVE_memcpy_user_64.o = -fno-omit-frame-pointer | 10 | lib-$(CONFIG_TILEPRO) += atomic_32.o atomic_asm_32.o memcpy_tile64.o |
11 | lib-y += memcpy_user_64.o | ||
12 | else | ||
13 | lib-y += atomic_32.o atomic_asm_32.o memcpy_tile64.o | ||
14 | endif | ||
15 | |||
16 | lib-$(CONFIG_SMP) += spinlock_$(BITS).o usercopy_$(BITS).o | 11 | lib-$(CONFIG_SMP) += spinlock_$(BITS).o usercopy_$(BITS).o |
17 | 12 | ||
18 | obj-$(CONFIG_MODULES) += exports.o | 13 | obj-$(CONFIG_MODULES) += exports.o |
14 | |||
15 | # The finv_buffer_remote() and copy_{to,from}_user() routines can't | ||
16 | # have -pg added, since they both rely on being leaf functions. | ||
17 | CFLAGS_REMOVE_cacheflush.o = -pg | ||
18 | CFLAGS_REMOVE_memcpy_user_64.o = -pg | ||
diff --git a/arch/tile/lib/cacheflush.c b/arch/tile/lib/cacheflush.c index 2238b40abf3c..9c0ec22009a5 100644 --- a/arch/tile/lib/cacheflush.c +++ b/arch/tile/lib/cacheflush.c | |||
@@ -36,7 +36,8 @@ static inline void force_load(char *p) | |||
36 | * core (if "!hfh") or homed via hash-for-home (if "hfh"), waiting | 36 | * core (if "!hfh") or homed via hash-for-home (if "hfh"), waiting |
37 | * until the memory controller holds the flushed values. | 37 | * until the memory controller holds the flushed values. |
38 | */ | 38 | */ |
39 | void finv_buffer_remote(void *buffer, size_t size, int hfh) | 39 | void __attribute__((optimize("omit-frame-pointer"))) |
40 | finv_buffer_remote(void *buffer, size_t size, int hfh) | ||
40 | { | 41 | { |
41 | char *p, *base; | 42 | char *p, *base; |
42 | size_t step_size, load_count; | 43 | size_t step_size, load_count; |
diff --git a/arch/tile/lib/memcpy_64.c b/arch/tile/lib/memcpy_64.c index 46fc1600c17d..4815354b8cd2 100644 --- a/arch/tile/lib/memcpy_64.c +++ b/arch/tile/lib/memcpy_64.c | |||
@@ -54,7 +54,8 @@ void *memcpy(void *__restrict dstv, const void *__restrict srcv, size_t n) | |||
54 | * macros to return a count of uncopied bytes due to mm fault. | 54 | * macros to return a count of uncopied bytes due to mm fault. |
55 | */ | 55 | */ |
56 | #define RETVAL 0 | 56 | #define RETVAL 0 |
57 | int USERCOPY_FUNC(void *__restrict dstv, const void *__restrict srcv, size_t n) | 57 | int __attribute__((optimize("omit-frame-pointer"))) |
58 | USERCOPY_FUNC(void *__restrict dstv, const void *__restrict srcv, size_t n) | ||
58 | #endif | 59 | #endif |
59 | { | 60 | { |
60 | char *__restrict dst1 = (char *)dstv; | 61 | char *__restrict dst1 = (char *)dstv; |