diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-04-19 05:15:03 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-04-21 03:45:21 -0400 |
commit | 4260415f6a3b92c5c986398d96c314df37a4ccbf (patch) | |
tree | 13db8d997677c70d7b3f880daafab41d0b6711f3 /arch/arm/include/asm/futex.h | |
parent | 05ce7bfe547c9fa967d9cab6c37867a9cb6fb3fa (diff) |
ARM: fix build error in arch/arm/kernel/process.c
/tmp/ccJ3ssZW.s: Assembler messages:
/tmp/ccJ3ssZW.s:1952: Error: can't resolve `.text' {.text section} - `.LFB1077'
This is caused because:
.section .data
.section .text
.section .text
.previous
does not return us to the .text section, but the .data section; this
makes use of .previous dangerous if the ordering of previous sections
is not known.
Fix up the other users of .previous; .pushsection and .popsection are
a safer pairing to use than .section and .previous.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/include/asm/futex.h')
-rw-r--r-- | arch/arm/include/asm/futex.h | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/arch/arm/include/asm/futex.h b/arch/arm/include/asm/futex.h index bfcc15929a7f..540a044153a5 100644 --- a/arch/arm/include/asm/futex.h +++ b/arch/arm/include/asm/futex.h | |||
@@ -21,14 +21,14 @@ | |||
21 | "2: strt %0, [%2]\n" \ | 21 | "2: strt %0, [%2]\n" \ |
22 | " mov %0, #0\n" \ | 22 | " mov %0, #0\n" \ |
23 | "3:\n" \ | 23 | "3:\n" \ |
24 | " .section __ex_table,\"a\"\n" \ | 24 | " .pushsection __ex_table,\"a\"\n" \ |
25 | " .align 3\n" \ | 25 | " .align 3\n" \ |
26 | " .long 1b, 4f, 2b, 4f\n" \ | 26 | " .long 1b, 4f, 2b, 4f\n" \ |
27 | " .previous\n" \ | 27 | " .popsection\n" \ |
28 | " .section .fixup,\"ax\"\n" \ | 28 | " .pushsection .fixup,\"ax\"\n" \ |
29 | "4: mov %0, %4\n" \ | 29 | "4: mov %0, %4\n" \ |
30 | " b 3b\n" \ | 30 | " b 3b\n" \ |
31 | " .previous" \ | 31 | " .popsection" \ |
32 | : "=&r" (ret), "=&r" (oldval) \ | 32 | : "=&r" (ret), "=&r" (oldval) \ |
33 | : "r" (uaddr), "r" (oparg), "Ir" (-EFAULT) \ | 33 | : "r" (uaddr), "r" (oparg), "Ir" (-EFAULT) \ |
34 | : "cc", "memory") | 34 | : "cc", "memory") |
@@ -102,14 +102,14 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval) | |||
102 | " it eq @ explicit IT needed for the 2b label\n" | 102 | " it eq @ explicit IT needed for the 2b label\n" |
103 | "2: streqt %2, [%3]\n" | 103 | "2: streqt %2, [%3]\n" |
104 | "3:\n" | 104 | "3:\n" |
105 | " .section __ex_table,\"a\"\n" | 105 | " .pushsection __ex_table,\"a\"\n" |
106 | " .align 3\n" | 106 | " .align 3\n" |
107 | " .long 1b, 4f, 2b, 4f\n" | 107 | " .long 1b, 4f, 2b, 4f\n" |
108 | " .previous\n" | 108 | " .popsection\n" |
109 | " .section .fixup,\"ax\"\n" | 109 | " .pushsection .fixup,\"ax\"\n" |
110 | "4: mov %0, %4\n" | 110 | "4: mov %0, %4\n" |
111 | " b 3b\n" | 111 | " b 3b\n" |
112 | " .previous" | 112 | " .popsection" |
113 | : "=&r" (val) | 113 | : "=&r" (val) |
114 | : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT) | 114 | : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT) |
115 | : "cc", "memory"); | 115 | : "cc", "memory"); |