diff options
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/Kconfig | 2 | ||||
-rw-r--r-- | arch/arm/include/asm/bitops.h | 2 | ||||
-rw-r--r-- | arch/arm/include/asm/sched_clock.h | 2 | ||||
-rw-r--r-- | arch/arm/kernel/head-common.S | 2 | ||||
-rw-r--r-- | arch/arm/kernel/process.c | 2 | ||||
-rw-r--r-- | arch/arm/kernel/sched_clock.c | 9 | ||||
-rw-r--r-- | arch/arm/kernel/setup.c | 22 | ||||
-rw-r--r-- | arch/arm/kernel/smp_twd.c | 2 | ||||
-rw-r--r-- | arch/arm/kernel/stacktrace.c | 9 | ||||
-rw-r--r-- | arch/arm/kernel/time.c | 4 | ||||
-rw-r--r-- | arch/arm/lib/delay.S | 4 | ||||
-rw-r--r-- | arch/arm/mach-h720x/h7201-eval.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-h720x/h7202-eval.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-integrator/cpu.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-pxa/generic.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-s5pv310/hotplug.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-sa1100/generic.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-tegra/hotplug.c | 4 | ||||
-rw-r--r-- | arch/arm/mm/dma-mapping.c | 2 | ||||
-rw-r--r-- | arch/arm/mm/proc-v7.S | 4 |
20 files changed, 49 insertions, 31 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index e2f801167593..629ff8261fc1 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -1281,7 +1281,7 @@ config SMP | |||
1281 | config SMP_ON_UP | 1281 | config SMP_ON_UP |
1282 | bool "Allow booting SMP kernel on uniprocessor systems (EXPERIMENTAL)" | 1282 | bool "Allow booting SMP kernel on uniprocessor systems (EXPERIMENTAL)" |
1283 | depends on EXPERIMENTAL | 1283 | depends on EXPERIMENTAL |
1284 | depends on SMP && !XIP | 1284 | depends on SMP && !XIP_KERNEL |
1285 | default y | 1285 | default y |
1286 | help | 1286 | help |
1287 | SMP kernels contain instructions which fail on non-SMP processors. | 1287 | SMP kernels contain instructions which fail on non-SMP processors. |
diff --git a/arch/arm/include/asm/bitops.h b/arch/arm/include/asm/bitops.h index 338ff19ae447..7b1bb2bbaf88 100644 --- a/arch/arm/include/asm/bitops.h +++ b/arch/arm/include/asm/bitops.h | |||
@@ -285,7 +285,7 @@ static inline int fls(int x) | |||
285 | if (__builtin_constant_p(x)) | 285 | if (__builtin_constant_p(x)) |
286 | return constant_fls(x); | 286 | return constant_fls(x); |
287 | 287 | ||
288 | asm("clz\t%0, %1" : "=r" (ret) : "r" (x) : "cc"); | 288 | asm("clz\t%0, %1" : "=r" (ret) : "r" (x)); |
289 | ret = 32 - ret; | 289 | ret = 32 - ret; |
290 | return ret; | 290 | return ret; |
291 | } | 291 | } |
diff --git a/arch/arm/include/asm/sched_clock.h b/arch/arm/include/asm/sched_clock.h index a84628be1a7b..c8e6ddf3e860 100644 --- a/arch/arm/include/asm/sched_clock.h +++ b/arch/arm/include/asm/sched_clock.h | |||
@@ -115,4 +115,6 @@ static inline void init_fixed_sched_clock(struct clock_data *cd, | |||
115 | } | 115 | } |
116 | } | 116 | } |
117 | 117 | ||
118 | extern void sched_clock_postinit(void); | ||
119 | |||
118 | #endif | 120 | #endif |
diff --git a/arch/arm/kernel/head-common.S b/arch/arm/kernel/head-common.S index bbecaac1e013..8f57515bbdb0 100644 --- a/arch/arm/kernel/head-common.S +++ b/arch/arm/kernel/head-common.S | |||
@@ -60,6 +60,8 @@ str_a1: .asciz "\nError: unrecognized/unsupported machine ID (r1 = 0x" | |||
60 | str_a2: .asciz ").\n\nAvailable machine support:\n\nID (hex)\tNAME\n" | 60 | str_a2: .asciz ").\n\nAvailable machine support:\n\nID (hex)\tNAME\n" |
61 | str_a3: .asciz "\nPlease check your kernel config and/or bootloader.\n" | 61 | str_a3: .asciz "\nPlease check your kernel config and/or bootloader.\n" |
62 | .align | 62 | .align |
63 | #else | ||
64 | b __error | ||
63 | #endif | 65 | #endif |
64 | 66 | ||
65 | /* | 67 | /* |
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index e76fcaadce03..94bbedbed639 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -483,6 +483,7 @@ unsigned long arch_randomize_brk(struct mm_struct *mm) | |||
483 | return randomize_range(mm->brk, range_end, 0) ? : mm->brk; | 483 | return randomize_range(mm->brk, range_end, 0) ? : mm->brk; |
484 | } | 484 | } |
485 | 485 | ||
486 | #ifdef CONFIG_MMU | ||
486 | /* | 487 | /* |
487 | * The vectors page is always readable from user space for the | 488 | * The vectors page is always readable from user space for the |
488 | * atomic helpers and the signal restart code. Let's declare a mapping | 489 | * atomic helpers and the signal restart code. Let's declare a mapping |
@@ -503,3 +504,4 @@ const char *arch_vma_name(struct vm_area_struct *vma) | |||
503 | { | 504 | { |
504 | return (vma->vm_start == 0xffff0000) ? "[vectors]" : NULL; | 505 | return (vma->vm_start == 0xffff0000) ? "[vectors]" : NULL; |
505 | } | 506 | } |
507 | #endif | ||
diff --git a/arch/arm/kernel/sched_clock.c b/arch/arm/kernel/sched_clock.c index 2cdcc9287c74..9a46370fe9da 100644 --- a/arch/arm/kernel/sched_clock.c +++ b/arch/arm/kernel/sched_clock.c | |||
@@ -34,7 +34,7 @@ void __init init_sched_clock(struct clock_data *cd, void (*update)(void), | |||
34 | sched_clock_update_fn = update; | 34 | sched_clock_update_fn = update; |
35 | 35 | ||
36 | /* calculate the mult/shift to convert counter ticks to ns. */ | 36 | /* calculate the mult/shift to convert counter ticks to ns. */ |
37 | clocks_calc_mult_shift(&cd->mult, &cd->shift, rate, NSEC_PER_SEC, 60); | 37 | clocks_calc_mult_shift(&cd->mult, &cd->shift, rate, NSEC_PER_SEC, 0); |
38 | 38 | ||
39 | r = rate; | 39 | r = rate; |
40 | if (r >= 4000000) { | 40 | if (r >= 4000000) { |
@@ -60,10 +60,15 @@ void __init init_sched_clock(struct clock_data *cd, void (*update)(void), | |||
60 | * sets the initial epoch. | 60 | * sets the initial epoch. |
61 | */ | 61 | */ |
62 | sched_clock_timer.data = msecs_to_jiffies(w - (w / 10)); | 62 | sched_clock_timer.data = msecs_to_jiffies(w - (w / 10)); |
63 | sched_clock_poll(sched_clock_timer.data); | 63 | update(); |
64 | 64 | ||
65 | /* | 65 | /* |
66 | * Ensure that sched_clock() starts off at 0ns | 66 | * Ensure that sched_clock() starts off at 0ns |
67 | */ | 67 | */ |
68 | cd->epoch_ns = 0; | 68 | cd->epoch_ns = 0; |
69 | } | 69 | } |
70 | |||
71 | void __init sched_clock_postinit(void) | ||
72 | { | ||
73 | sched_clock_poll(sched_clock_timer.data); | ||
74 | } | ||
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 3455ad33de4c..420b8d6485d6 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
@@ -518,25 +518,21 @@ setup_ramdisk(int doload, int prompt, int image_start, unsigned int rd_sz) | |||
518 | #endif | 518 | #endif |
519 | } | 519 | } |
520 | 520 | ||
521 | static void __init | 521 | static void __init request_standard_resources(struct machine_desc *mdesc) |
522 | request_standard_resources(struct meminfo *mi, struct machine_desc *mdesc) | ||
523 | { | 522 | { |
523 | struct memblock_region *region; | ||
524 | struct resource *res; | 524 | struct resource *res; |
525 | int i; | ||
526 | 525 | ||
527 | kernel_code.start = virt_to_phys(_text); | 526 | kernel_code.start = virt_to_phys(_text); |
528 | kernel_code.end = virt_to_phys(_etext - 1); | 527 | kernel_code.end = virt_to_phys(_etext - 1); |
529 | kernel_data.start = virt_to_phys(_sdata); | 528 | kernel_data.start = virt_to_phys(_sdata); |
530 | kernel_data.end = virt_to_phys(_end - 1); | 529 | kernel_data.end = virt_to_phys(_end - 1); |
531 | 530 | ||
532 | for (i = 0; i < mi->nr_banks; i++) { | 531 | for_each_memblock(memory, region) { |
533 | if (mi->bank[i].size == 0) | ||
534 | continue; | ||
535 | |||
536 | res = alloc_bootmem_low(sizeof(*res)); | 532 | res = alloc_bootmem_low(sizeof(*res)); |
537 | res->name = "System RAM"; | 533 | res->name = "System RAM"; |
538 | res->start = mi->bank[i].start; | 534 | res->start = __pfn_to_phys(memblock_region_memory_base_pfn(region)); |
539 | res->end = mi->bank[i].start + mi->bank[i].size - 1; | 535 | res->end = __pfn_to_phys(memblock_region_memory_end_pfn(region)) - 1; |
540 | res->flags = IORESOURCE_MEM | IORESOURCE_BUSY; | 536 | res->flags = IORESOURCE_MEM | IORESOURCE_BUSY; |
541 | 537 | ||
542 | request_resource(&iomem_resource, res); | 538 | request_resource(&iomem_resource, res); |
@@ -650,15 +646,17 @@ static int __init parse_tag_revision(const struct tag *tag) | |||
650 | 646 | ||
651 | __tagtable(ATAG_REVISION, parse_tag_revision); | 647 | __tagtable(ATAG_REVISION, parse_tag_revision); |
652 | 648 | ||
653 | #ifndef CONFIG_CMDLINE_FORCE | ||
654 | static int __init parse_tag_cmdline(const struct tag *tag) | 649 | static int __init parse_tag_cmdline(const struct tag *tag) |
655 | { | 650 | { |
651 | #ifndef CONFIG_CMDLINE_FORCE | ||
656 | strlcpy(default_command_line, tag->u.cmdline.cmdline, COMMAND_LINE_SIZE); | 652 | strlcpy(default_command_line, tag->u.cmdline.cmdline, COMMAND_LINE_SIZE); |
653 | #else | ||
654 | pr_warning("Ignoring tag cmdline (using the default kernel command line)\n"); | ||
655 | #endif /* CONFIG_CMDLINE_FORCE */ | ||
657 | return 0; | 656 | return 0; |
658 | } | 657 | } |
659 | 658 | ||
660 | __tagtable(ATAG_CMDLINE, parse_tag_cmdline); | 659 | __tagtable(ATAG_CMDLINE, parse_tag_cmdline); |
661 | #endif /* CONFIG_CMDLINE_FORCE */ | ||
662 | 660 | ||
663 | /* | 661 | /* |
664 | * Scan the tag table for this tag, and call its parse function. | 662 | * Scan the tag table for this tag, and call its parse function. |
@@ -857,7 +855,7 @@ void __init setup_arch(char **cmdline_p) | |||
857 | arm_memblock_init(&meminfo, mdesc); | 855 | arm_memblock_init(&meminfo, mdesc); |
858 | 856 | ||
859 | paging_init(mdesc); | 857 | paging_init(mdesc); |
860 | request_standard_resources(&meminfo, mdesc); | 858 | request_standard_resources(mdesc); |
861 | 859 | ||
862 | #ifdef CONFIG_SMP | 860 | #ifdef CONFIG_SMP |
863 | if (is_smp()) | 861 | if (is_smp()) |
diff --git a/arch/arm/kernel/smp_twd.c b/arch/arm/kernel/smp_twd.c index dd790745b3ef..fd9156698ab9 100644 --- a/arch/arm/kernel/smp_twd.c +++ b/arch/arm/kernel/smp_twd.c | |||
@@ -114,7 +114,7 @@ static void __cpuinit twd_calibrate_rate(void) | |||
114 | twd_timer_rate = (0xFFFFFFFFU - count) * (HZ / 5); | 114 | twd_timer_rate = (0xFFFFFFFFU - count) * (HZ / 5); |
115 | 115 | ||
116 | printk("%lu.%02luMHz.\n", twd_timer_rate / 1000000, | 116 | printk("%lu.%02luMHz.\n", twd_timer_rate / 1000000, |
117 | (twd_timer_rate / 100000) % 100); | 117 | (twd_timer_rate / 1000000) % 100); |
118 | } | 118 | } |
119 | 119 | ||
120 | load = twd_timer_rate / HZ; | 120 | load = twd_timer_rate / HZ; |
diff --git a/arch/arm/kernel/stacktrace.c b/arch/arm/kernel/stacktrace.c index c2e112e1a05f..381d23a497c1 100644 --- a/arch/arm/kernel/stacktrace.c +++ b/arch/arm/kernel/stacktrace.c | |||
@@ -94,10 +94,13 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) | |||
94 | if (tsk != current) { | 94 | if (tsk != current) { |
95 | #ifdef CONFIG_SMP | 95 | #ifdef CONFIG_SMP |
96 | /* | 96 | /* |
97 | * What guarantees do we have here that 'tsk' | 97 | * What guarantees do we have here that 'tsk' is not |
98 | * is not running on another CPU? | 98 | * running on another CPU? For now, ignore it as we |
99 | * can't guarantee we won't explode. | ||
99 | */ | 100 | */ |
100 | BUG(); | 101 | if (trace->nr_entries < trace->max_entries) |
102 | trace->entries[trace->nr_entries++] = ULONG_MAX; | ||
103 | return; | ||
101 | #else | 104 | #else |
102 | data.no_sched_functions = 1; | 105 | data.no_sched_functions = 1; |
103 | frame.fp = thread_saved_fp(tsk); | 106 | frame.fp = thread_saved_fp(tsk); |
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index f1e2eb19a67d..3d76bf233734 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c | |||
@@ -29,6 +29,7 @@ | |||
29 | 29 | ||
30 | #include <asm/leds.h> | 30 | #include <asm/leds.h> |
31 | #include <asm/thread_info.h> | 31 | #include <asm/thread_info.h> |
32 | #include <asm/sched_clock.h> | ||
32 | #include <asm/stacktrace.h> | 33 | #include <asm/stacktrace.h> |
33 | #include <asm/mach/arch.h> | 34 | #include <asm/mach/arch.h> |
34 | #include <asm/mach/time.h> | 35 | #include <asm/mach/time.h> |
@@ -163,5 +164,8 @@ void __init time_init(void) | |||
163 | { | 164 | { |
164 | system_timer = machine_desc->timer; | 165 | system_timer = machine_desc->timer; |
165 | system_timer->init(); | 166 | system_timer->init(); |
167 | #ifdef CONFIG_HAVE_SCHED_CLOCK | ||
168 | sched_clock_postinit(); | ||
169 | #endif | ||
166 | } | 170 | } |
167 | 171 | ||
diff --git a/arch/arm/lib/delay.S b/arch/arm/lib/delay.S index 8d6a8762ab88..3c9a05c8d20b 100644 --- a/arch/arm/lib/delay.S +++ b/arch/arm/lib/delay.S | |||
@@ -25,11 +25,15 @@ ENTRY(__udelay) | |||
25 | ldr r2, .LC1 | 25 | ldr r2, .LC1 |
26 | mul r0, r2, r0 | 26 | mul r0, r2, r0 |
27 | ENTRY(__const_udelay) @ 0 <= r0 <= 0x7fffff06 | 27 | ENTRY(__const_udelay) @ 0 <= r0 <= 0x7fffff06 |
28 | mov r1, #-1 | ||
28 | ldr r2, .LC0 | 29 | ldr r2, .LC0 |
29 | ldr r2, [r2] @ max = 0x01ffffff | 30 | ldr r2, [r2] @ max = 0x01ffffff |
31 | add r0, r0, r1, lsr #32-14 | ||
30 | mov r0, r0, lsr #14 @ max = 0x0001ffff | 32 | mov r0, r0, lsr #14 @ max = 0x0001ffff |
33 | add r2, r2, r1, lsr #32-10 | ||
31 | mov r2, r2, lsr #10 @ max = 0x00007fff | 34 | mov r2, r2, lsr #10 @ max = 0x00007fff |
32 | mul r0, r2, r0 @ max = 2^32-1 | 35 | mul r0, r2, r0 @ max = 2^32-1 |
36 | add r0, r0, r1, lsr #32-6 | ||
33 | movs r0, r0, lsr #6 | 37 | movs r0, r0, lsr #6 |
34 | moveq pc, lr | 38 | moveq pc, lr |
35 | 39 | ||
diff --git a/arch/arm/mach-h720x/h7201-eval.c b/arch/arm/mach-h720x/h7201-eval.c index 79f0b896e446..629454d71c8d 100644 --- a/arch/arm/mach-h720x/h7201-eval.c +++ b/arch/arm/mach-h720x/h7201-eval.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <asm/types.h> | 23 | #include <asm/types.h> |
24 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
25 | #include <asm/page.h> | 25 | #include <asm/page.h> |
26 | #include <asm/pgtable.h> | ||
27 | #include <asm/mach/arch.h> | 26 | #include <asm/mach/arch.h> |
28 | #include <mach/hardware.h> | 27 | #include <mach/hardware.h> |
29 | #include "common.h" | 28 | #include "common.h" |
diff --git a/arch/arm/mach-h720x/h7202-eval.c b/arch/arm/mach-h720x/h7202-eval.c index cc28b1efe047..e9f46b696354 100644 --- a/arch/arm/mach-h720x/h7202-eval.c +++ b/arch/arm/mach-h720x/h7202-eval.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <asm/types.h> | 23 | #include <asm/types.h> |
24 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
25 | #include <asm/page.h> | 25 | #include <asm/page.h> |
26 | #include <asm/pgtable.h> | ||
27 | #include <asm/mach/arch.h> | 26 | #include <asm/mach/arch.h> |
28 | #include <mach/irqs.h> | 27 | #include <mach/irqs.h> |
29 | #include <mach/hardware.h> | 28 | #include <mach/hardware.h> |
diff --git a/arch/arm/mach-integrator/cpu.c b/arch/arm/mach-integrator/cpu.c index a3fbcb3adc29..fbb457779895 100644 --- a/arch/arm/mach-integrator/cpu.c +++ b/arch/arm/mach-integrator/cpu.c | |||
@@ -173,7 +173,7 @@ static unsigned int integrator_get(unsigned int cpu) | |||
173 | 173 | ||
174 | if (machine_is_integrator()) { | 174 | if (machine_is_integrator()) { |
175 | vco.s = (cm_osc >> 8) & 7; | 175 | vco.s = (cm_osc >> 8) & 7; |
176 | } else if (machine_is_cintegrator()) { | 176 | } else { |
177 | vco.s = 1; | 177 | vco.s = 1; |
178 | } | 178 | } |
179 | vco.v = cm_osc & 255; | 179 | vco.v = cm_osc & 255; |
diff --git a/arch/arm/mach-pxa/generic.c b/arch/arm/mach-pxa/generic.c index d6e15f71fc09..f5d91efc2965 100644 --- a/arch/arm/mach-pxa/generic.c +++ b/arch/arm/mach-pxa/generic.c | |||
@@ -22,7 +22,6 @@ | |||
22 | 22 | ||
23 | #include <mach/hardware.h> | 23 | #include <mach/hardware.h> |
24 | #include <asm/system.h> | 24 | #include <asm/system.h> |
25 | #include <asm/pgtable.h> | ||
26 | #include <asm/mach/map.h> | 25 | #include <asm/mach/map.h> |
27 | #include <asm/mach-types.h> | 26 | #include <asm/mach-types.h> |
28 | 27 | ||
diff --git a/arch/arm/mach-s5pv310/hotplug.c b/arch/arm/mach-s5pv310/hotplug.c index afa5392d9fc0..c24235c89eed 100644 --- a/arch/arm/mach-s5pv310/hotplug.c +++ b/arch/arm/mach-s5pv310/hotplug.c | |||
@@ -30,10 +30,10 @@ static inline void cpu_enter_lowpower(void) | |||
30 | * Turn off coherency | 30 | * Turn off coherency |
31 | */ | 31 | */ |
32 | " mrc p15, 0, %0, c1, c0, 1\n" | 32 | " mrc p15, 0, %0, c1, c0, 1\n" |
33 | " bic %0, %0, %2\n" | 33 | " bic %0, %0, #0x20\n" |
34 | " mcr p15, 0, %0, c1, c0, 1\n" | 34 | " mcr p15, 0, %0, c1, c0, 1\n" |
35 | " mrc p15, 0, %0, c1, c0, 0\n" | 35 | " mrc p15, 0, %0, c1, c0, 0\n" |
36 | " bic %0, %0, #0x04\n" | 36 | " bic %0, %0, %2\n" |
37 | " mcr p15, 0, %0, c1, c0, 0\n" | 37 | " mcr p15, 0, %0, c1, c0, 0\n" |
38 | : "=&r" (v) | 38 | : "=&r" (v) |
39 | : "r" (0), "Ir" (CR_C) | 39 | : "r" (0), "Ir" (CR_C) |
diff --git a/arch/arm/mach-sa1100/generic.c b/arch/arm/mach-sa1100/generic.c index 59d14f0fdcf8..e21f3470eece 100644 --- a/arch/arm/mach-sa1100/generic.c +++ b/arch/arm/mach-sa1100/generic.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <asm/div64.h> | 21 | #include <asm/div64.h> |
22 | #include <mach/hardware.h> | 22 | #include <mach/hardware.h> |
23 | #include <asm/system.h> | 23 | #include <asm/system.h> |
24 | #include <asm/pgtable.h> | ||
25 | #include <asm/mach/map.h> | 24 | #include <asm/mach/map.h> |
26 | #include <asm/mach/flash.h> | 25 | #include <asm/mach/flash.h> |
27 | #include <asm/irq.h> | 26 | #include <asm/irq.h> |
diff --git a/arch/arm/mach-tegra/hotplug.c b/arch/arm/mach-tegra/hotplug.c index a5cb1ce76ff2..f3294040d357 100644 --- a/arch/arm/mach-tegra/hotplug.c +++ b/arch/arm/mach-tegra/hotplug.c | |||
@@ -26,10 +26,10 @@ static inline void cpu_enter_lowpower(void) | |||
26 | * Turn off coherency | 26 | * Turn off coherency |
27 | */ | 27 | */ |
28 | " mrc p15, 0, %0, c1, c0, 1\n" | 28 | " mrc p15, 0, %0, c1, c0, 1\n" |
29 | " bic %0, %0, %2\n" | 29 | " bic %0, %0, #0x20\n" |
30 | " mcr p15, 0, %0, c1, c0, 1\n" | 30 | " mcr p15, 0, %0, c1, c0, 1\n" |
31 | " mrc p15, 0, %0, c1, c0, 0\n" | 31 | " mrc p15, 0, %0, c1, c0, 0\n" |
32 | " bic %0, %0, #0x04\n" | 32 | " bic %0, %0, %2\n" |
33 | " mcr p15, 0, %0, c1, c0, 0\n" | 33 | " mcr p15, 0, %0, c1, c0, 0\n" |
34 | : "=&r" (v) | 34 | : "=&r" (v) |
35 | : "r" (0), "Ir" (CR_C) | 35 | : "r" (0), "Ir" (CR_C) |
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index 6b48e0a3d7aa..4771dba61448 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c | |||
@@ -577,7 +577,7 @@ EXPORT_SYMBOL(dma_map_sg); | |||
577 | * dma_unmap_sg - unmap a set of SG buffers mapped by dma_map_sg | 577 | * dma_unmap_sg - unmap a set of SG buffers mapped by dma_map_sg |
578 | * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices | 578 | * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices |
579 | * @sg: list of buffers | 579 | * @sg: list of buffers |
580 | * @nents: number of buffers to unmap (returned from dma_map_sg) | 580 | * @nents: number of buffers to unmap (same as was passed to dma_map_sg) |
581 | * @dir: DMA transfer direction (same as was passed to dma_map_sg) | 581 | * @dir: DMA transfer direction (same as was passed to dma_map_sg) |
582 | * | 582 | * |
583 | * Unmap a set of streaming mode DMA translations. Again, CPU access | 583 | * Unmap a set of streaming mode DMA translations. Again, CPU access |
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index b49fab21517c..0c1172b56b4e 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S | |||
@@ -159,7 +159,9 @@ ENTRY(cpu_v7_set_pte_ext) | |||
159 | tstne r1, #L_PTE_PRESENT | 159 | tstne r1, #L_PTE_PRESENT |
160 | moveq r3, #0 | 160 | moveq r3, #0 |
161 | 161 | ||
162 | str r3, [r0, #2048]! | 162 | ARM( str r3, [r0, #2048]! ) |
163 | THUMB( add r0, r0, #2048 ) | ||
164 | THUMB( str r3, [r0] ) | ||
163 | mcr p15, 0, r0, c7, c10, 1 @ flush_pte | 165 | mcr p15, 0, r0, c7, c10, 1 @ flush_pte |
164 | #endif | 166 | #endif |
165 | mov pc, lr | 167 | mov pc, lr |