diff options
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/entry-armv.S | 2 | ||||
-rw-r--r-- | arch/arm/kernel/io.c | 6 | ||||
-rw-r--r-- | arch/arm/kernel/semaphore.c | 2 | ||||
-rw-r--r-- | arch/arm/kernel/traps.c | 3 | ||||
-rw-r--r-- | arch/arm/kernel/vmlinux.lds.S | 8 |
5 files changed, 12 insertions, 9 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 7152bfbee581..93b5e8e5292e 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -537,7 +537,7 @@ ENTRY(__switch_to) | |||
537 | #ifdef CONFIG_CPU_MPCORE | 537 | #ifdef CONFIG_CPU_MPCORE |
538 | clrex | 538 | clrex |
539 | #else | 539 | #else |
540 | strex r3, r4, [ip] @ Clear exclusive monitor | 540 | strex r5, r4, [ip] @ Clear exclusive monitor |
541 | #endif | 541 | #endif |
542 | #endif | 542 | #endif |
543 | #if defined(CONFIG_CPU_XSCALE) && !defined(CONFIG_IWMMXT) | 543 | #if defined(CONFIG_CPU_XSCALE) && !defined(CONFIG_IWMMXT) |
diff --git a/arch/arm/kernel/io.c b/arch/arm/kernel/io.c index 6c20c1188b60..1f6822dfae74 100644 --- a/arch/arm/kernel/io.c +++ b/arch/arm/kernel/io.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * Copy data from IO memory space to "real" memory space. | 7 | * Copy data from IO memory space to "real" memory space. |
8 | * This needs to be optimized. | 8 | * This needs to be optimized. |
9 | */ | 9 | */ |
10 | void _memcpy_fromio(void *to, void __iomem *from, size_t count) | 10 | void _memcpy_fromio(void *to, const volatile void __iomem *from, size_t count) |
11 | { | 11 | { |
12 | unsigned char *t = to; | 12 | unsigned char *t = to; |
13 | while (count) { | 13 | while (count) { |
@@ -22,7 +22,7 @@ void _memcpy_fromio(void *to, void __iomem *from, size_t count) | |||
22 | * Copy data from "real" memory space to IO memory space. | 22 | * Copy data from "real" memory space to IO memory space. |
23 | * This needs to be optimized. | 23 | * This needs to be optimized. |
24 | */ | 24 | */ |
25 | void _memcpy_toio(void __iomem *to, const void *from, size_t count) | 25 | void _memcpy_toio(volatile void __iomem *to, const void *from, size_t count) |
26 | { | 26 | { |
27 | const unsigned char *f = from; | 27 | const unsigned char *f = from; |
28 | while (count) { | 28 | while (count) { |
@@ -37,7 +37,7 @@ void _memcpy_toio(void __iomem *to, const void *from, size_t count) | |||
37 | * "memset" on IO memory space. | 37 | * "memset" on IO memory space. |
38 | * This needs to be optimized. | 38 | * This needs to be optimized. |
39 | */ | 39 | */ |
40 | void _memset_io(void __iomem *dst, int c, size_t count) | 40 | void _memset_io(volatile void __iomem *dst, int c, size_t count) |
41 | { | 41 | { |
42 | while (count) { | 42 | while (count) { |
43 | count--; | 43 | count--; |
diff --git a/arch/arm/kernel/semaphore.c b/arch/arm/kernel/semaphore.c index ac423e3e224b..4c31f2923055 100644 --- a/arch/arm/kernel/semaphore.c +++ b/arch/arm/kernel/semaphore.c | |||
@@ -178,7 +178,7 @@ int __down_trylock(struct semaphore * sem) | |||
178 | * registers (r0 to r3 and lr), but not ip, as we use it as a return | 178 | * registers (r0 to r3 and lr), but not ip, as we use it as a return |
179 | * value in some cases.. | 179 | * value in some cases.. |
180 | */ | 180 | */ |
181 | asm(" .section .sched.text,\"ax\" \n\ | 181 | asm(" .section .sched.text,\"ax\",%progbits \n\ |
182 | .align 5 \n\ | 182 | .align 5 \n\ |
183 | .globl __down_failed \n\ | 183 | .globl __down_failed \n\ |
184 | __down_failed: \n\ | 184 | __down_failed: \n\ |
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 4554c961251c..e7d22dbcb691 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c | |||
@@ -624,6 +624,9 @@ void __attribute__((noreturn)) __bug(const char *file, int line, void *data) | |||
624 | printk(" - extra data = %p", data); | 624 | printk(" - extra data = %p", data); |
625 | printk("\n"); | 625 | printk("\n"); |
626 | *(int *)0 = 0; | 626 | *(int *)0 = 0; |
627 | |||
628 | /* Avoid "noreturn function does return" */ | ||
629 | for (;;); | ||
627 | } | 630 | } |
628 | EXPORT_SYMBOL(__bug); | 631 | EXPORT_SYMBOL(__bug); |
629 | 632 | ||
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index ad2d66c93a5c..08e58ecd44be 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S | |||
@@ -23,20 +23,20 @@ SECTIONS | |||
23 | *(.init.text) | 23 | *(.init.text) |
24 | _einittext = .; | 24 | _einittext = .; |
25 | __proc_info_begin = .; | 25 | __proc_info_begin = .; |
26 | *(.proc.info) | 26 | *(.proc.info.init) |
27 | __proc_info_end = .; | 27 | __proc_info_end = .; |
28 | __arch_info_begin = .; | 28 | __arch_info_begin = .; |
29 | *(.arch.info) | 29 | *(.arch.info.init) |
30 | __arch_info_end = .; | 30 | __arch_info_end = .; |
31 | __tagtable_begin = .; | 31 | __tagtable_begin = .; |
32 | *(.taglist) | 32 | *(.taglist.init) |
33 | __tagtable_end = .; | 33 | __tagtable_end = .; |
34 | . = ALIGN(16); | 34 | . = ALIGN(16); |
35 | __setup_start = .; | 35 | __setup_start = .; |
36 | *(.init.setup) | 36 | *(.init.setup) |
37 | __setup_end = .; | 37 | __setup_end = .; |
38 | __early_begin = .; | 38 | __early_begin = .; |
39 | *(__early_param) | 39 | *(.early_param.init) |
40 | __early_end = .; | 40 | __early_end = .; |
41 | __initcall_start = .; | 41 | __initcall_start = .; |
42 | *(.initcall1.init) | 42 | *(.initcall1.init) |