diff options
author | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2015-03-24 05:41:09 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2015-03-29 18:11:56 -0400 |
commit | c4a84ae39b4a5bdf609c0001e14207aa731aab30 (patch) | |
tree | 3f8414f31e535f2bca3c58e27e3ab01131177caf /arch/arm/include | |
parent | 779c88c94c34bd3b521da97b456a1aa51d870dec (diff) |
ARM: 8322/1: keep .text and .fixup regions closer together
This moves all fixup snippets to the .text.fixup section, which is
a special section that gets emitted along with the .text section
for each input object file, i.e., the snippets are kept much closer
to the code they refer to, which helps prevent linker failure on
large kernels.
Acked-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/include')
-rw-r--r-- | arch/arm/include/asm/futex.h | 2 | ||||
-rw-r--r-- | arch/arm/include/asm/uaccess.h | 10 | ||||
-rw-r--r-- | arch/arm/include/asm/word-at-a-time.h | 2 |
3 files changed, 7 insertions, 7 deletions
diff --git a/arch/arm/include/asm/futex.h b/arch/arm/include/asm/futex.h index 53e69dae796f..4e78065a16aa 100644 --- a/arch/arm/include/asm/futex.h +++ b/arch/arm/include/asm/futex.h | |||
@@ -13,7 +13,7 @@ | |||
13 | " .align 3\n" \ | 13 | " .align 3\n" \ |
14 | " .long 1b, 4f, 2b, 4f\n" \ | 14 | " .long 1b, 4f, 2b, 4f\n" \ |
15 | " .popsection\n" \ | 15 | " .popsection\n" \ |
16 | " .pushsection .fixup,\"ax\"\n" \ | 16 | " .pushsection .text.fixup,\"ax\"\n" \ |
17 | " .align 2\n" \ | 17 | " .align 2\n" \ |
18 | "4: mov %0, " err_reg "\n" \ | 18 | "4: mov %0, " err_reg "\n" \ |
19 | " b 3b\n" \ | 19 | " b 3b\n" \ |
diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h index ce0786efd26c..74b17d09ef7a 100644 --- a/arch/arm/include/asm/uaccess.h +++ b/arch/arm/include/asm/uaccess.h | |||
@@ -315,7 +315,7 @@ do { \ | |||
315 | __asm__ __volatile__( \ | 315 | __asm__ __volatile__( \ |
316 | "1: " TUSER(ldrb) " %1,[%2],#0\n" \ | 316 | "1: " TUSER(ldrb) " %1,[%2],#0\n" \ |
317 | "2:\n" \ | 317 | "2:\n" \ |
318 | " .pushsection .fixup,\"ax\"\n" \ | 318 | " .pushsection .text.fixup,\"ax\"\n" \ |
319 | " .align 2\n" \ | 319 | " .align 2\n" \ |
320 | "3: mov %0, %3\n" \ | 320 | "3: mov %0, %3\n" \ |
321 | " mov %1, #0\n" \ | 321 | " mov %1, #0\n" \ |
@@ -351,7 +351,7 @@ do { \ | |||
351 | __asm__ __volatile__( \ | 351 | __asm__ __volatile__( \ |
352 | "1: " TUSER(ldr) " %1,[%2],#0\n" \ | 352 | "1: " TUSER(ldr) " %1,[%2],#0\n" \ |
353 | "2:\n" \ | 353 | "2:\n" \ |
354 | " .pushsection .fixup,\"ax\"\n" \ | 354 | " .pushsection .text.fixup,\"ax\"\n" \ |
355 | " .align 2\n" \ | 355 | " .align 2\n" \ |
356 | "3: mov %0, %3\n" \ | 356 | "3: mov %0, %3\n" \ |
357 | " mov %1, #0\n" \ | 357 | " mov %1, #0\n" \ |
@@ -397,7 +397,7 @@ do { \ | |||
397 | __asm__ __volatile__( \ | 397 | __asm__ __volatile__( \ |
398 | "1: " TUSER(strb) " %1,[%2],#0\n" \ | 398 | "1: " TUSER(strb) " %1,[%2],#0\n" \ |
399 | "2:\n" \ | 399 | "2:\n" \ |
400 | " .pushsection .fixup,\"ax\"\n" \ | 400 | " .pushsection .text.fixup,\"ax\"\n" \ |
401 | " .align 2\n" \ | 401 | " .align 2\n" \ |
402 | "3: mov %0, %3\n" \ | 402 | "3: mov %0, %3\n" \ |
403 | " b 2b\n" \ | 403 | " b 2b\n" \ |
@@ -430,7 +430,7 @@ do { \ | |||
430 | __asm__ __volatile__( \ | 430 | __asm__ __volatile__( \ |
431 | "1: " TUSER(str) " %1,[%2],#0\n" \ | 431 | "1: " TUSER(str) " %1,[%2],#0\n" \ |
432 | "2:\n" \ | 432 | "2:\n" \ |
433 | " .pushsection .fixup,\"ax\"\n" \ | 433 | " .pushsection .text.fixup,\"ax\"\n" \ |
434 | " .align 2\n" \ | 434 | " .align 2\n" \ |
435 | "3: mov %0, %3\n" \ | 435 | "3: mov %0, %3\n" \ |
436 | " b 2b\n" \ | 436 | " b 2b\n" \ |
@@ -458,7 +458,7 @@ do { \ | |||
458 | THUMB( "1: " TUSER(str) " " __reg_oper1 ", [%1]\n" ) \ | 458 | THUMB( "1: " TUSER(str) " " __reg_oper1 ", [%1]\n" ) \ |
459 | THUMB( "2: " TUSER(str) " " __reg_oper0 ", [%1, #4]\n" ) \ | 459 | THUMB( "2: " TUSER(str) " " __reg_oper0 ", [%1, #4]\n" ) \ |
460 | "3:\n" \ | 460 | "3:\n" \ |
461 | " .pushsection .fixup,\"ax\"\n" \ | 461 | " .pushsection .text.fixup,\"ax\"\n" \ |
462 | " .align 2\n" \ | 462 | " .align 2\n" \ |
463 | "4: mov %0, %3\n" \ | 463 | "4: mov %0, %3\n" \ |
464 | " b 3b\n" \ | 464 | " b 3b\n" \ |
diff --git a/arch/arm/include/asm/word-at-a-time.h b/arch/arm/include/asm/word-at-a-time.h index a6d0a29861e7..5831dce4b51c 100644 --- a/arch/arm/include/asm/word-at-a-time.h +++ b/arch/arm/include/asm/word-at-a-time.h | |||
@@ -71,7 +71,7 @@ static inline unsigned long load_unaligned_zeropad(const void *addr) | |||
71 | asm( | 71 | asm( |
72 | "1: ldr %0, [%2]\n" | 72 | "1: ldr %0, [%2]\n" |
73 | "2:\n" | 73 | "2:\n" |
74 | " .pushsection .fixup,\"ax\"\n" | 74 | " .pushsection .text.fixup,\"ax\"\n" |
75 | " .align 2\n" | 75 | " .align 2\n" |
76 | "3: and %1, %2, #0x3\n" | 76 | "3: and %1, %2, #0x3\n" |
77 | " bic %2, %2, #0x3\n" | 77 | " bic %2, %2, #0x3\n" |