diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-09-14 08:01:25 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-09-14 08:01:25 -0400 |
commit | d7f6884ae0ae6e406ec3500fcde16e8f51642460 (patch) | |
tree | efceb246a4fa12921b7dbd3946a88fa257684405 /arch/arm/mm | |
parent | cd28ab6a4e50a7601d22752aa7ce0c8197b10bdf (diff) | |
parent | 2f4ba45a75d6383b4a1201169a808ffea416ffa0 (diff) |
Merge /spare/repo/linux-2.6/
Diffstat (limited to 'arch/arm/mm')
-rw-r--r-- | arch/arm/mm/Kconfig | 2 | ||||
-rw-r--r-- | arch/arm/mm/alignment.c | 70 | ||||
-rw-r--r-- | arch/arm/mm/copypage-v3.S | 2 | ||||
-rw-r--r-- | arch/arm/mm/copypage-v4wb.S | 2 | ||||
-rw-r--r-- | arch/arm/mm/copypage-v4wt.S | 2 | ||||
-rw-r--r-- | arch/arm/mm/flush.c | 52 | ||||
-rw-r--r-- | arch/arm/mm/mm-armv.c | 30 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm1020.S | 2 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm1020e.S | 2 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm1022.S | 2 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm1026.S | 2 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm6_7.S | 10 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm720.S | 2 | ||||
-rw-r--r-- | arch/arm/mm/proc-macros.S | 2 | ||||
-rw-r--r-- | arch/arm/mm/proc-sa110.S | 2 | ||||
-rw-r--r-- | arch/arm/mm/proc-sa1100.S | 2 | ||||
-rw-r--r-- | arch/arm/mm/proc-v6.S | 4 | ||||
-rw-r--r-- | arch/arm/mm/tlb-v3.S | 2 | ||||
-rw-r--r-- | arch/arm/mm/tlb-v4.S | 2 | ||||
-rw-r--r-- | arch/arm/mm/tlb-v4wb.S | 2 | ||||
-rw-r--r-- | arch/arm/mm/tlb-v4wbi.S | 2 | ||||
-rw-r--r-- | arch/arm/mm/tlb-v6.S | 2 |
22 files changed, 144 insertions, 56 deletions
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index afbbeb6f4658..db5e47dfc303 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
@@ -384,7 +384,7 @@ config CPU_DCACHE_DISABLE | |||
384 | 384 | ||
385 | config CPU_DCACHE_WRITETHROUGH | 385 | config CPU_DCACHE_WRITETHROUGH |
386 | bool "Force write through D-cache" | 386 | bool "Force write through D-cache" |
387 | depends on (CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM1020) && !CPU_DISABLE_DCACHE | 387 | depends on (CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM1020) && !CPU_DCACHE_DISABLE |
388 | default y if CPU_ARM925T | 388 | default y if CPU_ARM925T |
389 | help | 389 | help |
390 | Say Y here to use the data cache in writethrough mode. Unless you | 390 | Say Y here to use the data cache in writethrough mode. Unless you |
diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c index 81f4a8a2d34b..4b39d867ac14 100644 --- a/arch/arm/mm/alignment.c +++ b/arch/arm/mm/alignment.c | |||
@@ -45,7 +45,7 @@ | |||
45 | 45 | ||
46 | #define LDST_P_EQ_U(i) ((((i) ^ ((i) >> 1)) & (1 << 23)) == 0) | 46 | #define LDST_P_EQ_U(i) ((((i) ^ ((i) >> 1)) & (1 << 23)) == 0) |
47 | 47 | ||
48 | #define LDSTH_I_BIT(i) (i & (1 << 22)) /* half-word immed */ | 48 | #define LDSTHD_I_BIT(i) (i & (1 << 22)) /* double/half-word immed */ |
49 | #define LDM_S_BIT(i) (i & (1 << 22)) /* write CPSR from SPSR */ | 49 | #define LDM_S_BIT(i) (i & (1 << 22)) /* write CPSR from SPSR */ |
50 | 50 | ||
51 | #define RN_BITS(i) ((i >> 16) & 15) /* Rn */ | 51 | #define RN_BITS(i) ((i >> 16) & 15) /* Rn */ |
@@ -68,6 +68,7 @@ static unsigned long ai_sys; | |||
68 | static unsigned long ai_skipped; | 68 | static unsigned long ai_skipped; |
69 | static unsigned long ai_half; | 69 | static unsigned long ai_half; |
70 | static unsigned long ai_word; | 70 | static unsigned long ai_word; |
71 | static unsigned long ai_dword; | ||
71 | static unsigned long ai_multi; | 72 | static unsigned long ai_multi; |
72 | static int ai_usermode; | 73 | static int ai_usermode; |
73 | 74 | ||
@@ -93,6 +94,8 @@ proc_alignment_read(char *page, char **start, off_t off, int count, int *eof, | |||
93 | p += sprintf(p, "Skipped:\t%lu\n", ai_skipped); | 94 | p += sprintf(p, "Skipped:\t%lu\n", ai_skipped); |
94 | p += sprintf(p, "Half:\t\t%lu\n", ai_half); | 95 | p += sprintf(p, "Half:\t\t%lu\n", ai_half); |
95 | p += sprintf(p, "Word:\t\t%lu\n", ai_word); | 96 | p += sprintf(p, "Word:\t\t%lu\n", ai_word); |
97 | if (cpu_architecture() >= CPU_ARCH_ARMv5TE) | ||
98 | p += sprintf(p, "DWord:\t\t%lu\n", ai_dword); | ||
96 | p += sprintf(p, "Multi:\t\t%lu\n", ai_multi); | 99 | p += sprintf(p, "Multi:\t\t%lu\n", ai_multi); |
97 | p += sprintf(p, "User faults:\t%i (%s)\n", ai_usermode, | 100 | p += sprintf(p, "User faults:\t%i (%s)\n", ai_usermode, |
98 | usermode_action[ai_usermode]); | 101 | usermode_action[ai_usermode]); |
@@ -283,12 +286,6 @@ do_alignment_ldrhstrh(unsigned long addr, unsigned long instr, struct pt_regs *r | |||
283 | { | 286 | { |
284 | unsigned int rd = RD_BITS(instr); | 287 | unsigned int rd = RD_BITS(instr); |
285 | 288 | ||
286 | if ((instr & 0x01f00ff0) == 0x01000090) | ||
287 | goto swp; | ||
288 | |||
289 | if ((instr & 0x90) != 0x90 || (instr & 0x60) == 0) | ||
290 | goto bad; | ||
291 | |||
292 | ai_half += 1; | 289 | ai_half += 1; |
293 | 290 | ||
294 | if (user_mode(regs)) | 291 | if (user_mode(regs)) |
@@ -323,10 +320,47 @@ do_alignment_ldrhstrh(unsigned long addr, unsigned long instr, struct pt_regs *r | |||
323 | 320 | ||
324 | return TYPE_LDST; | 321 | return TYPE_LDST; |
325 | 322 | ||
326 | swp: | 323 | fault: |
327 | printk(KERN_ERR "Alignment trap: not handling swp instruction\n"); | 324 | return TYPE_FAULT; |
328 | bad: | 325 | } |
329 | return TYPE_ERROR; | 326 | |
327 | static int | ||
328 | do_alignment_ldrdstrd(unsigned long addr, unsigned long instr, | ||
329 | struct pt_regs *regs) | ||
330 | { | ||
331 | unsigned int rd = RD_BITS(instr); | ||
332 | |||
333 | ai_dword += 1; | ||
334 | |||
335 | if (user_mode(regs)) | ||
336 | goto user; | ||
337 | |||
338 | if ((instr & 0xf0) == 0xd0) { | ||
339 | unsigned long val; | ||
340 | get32_unaligned_check(val, addr); | ||
341 | regs->uregs[rd] = val; | ||
342 | get32_unaligned_check(val, addr+4); | ||
343 | regs->uregs[rd+1] = val; | ||
344 | } else { | ||
345 | put32_unaligned_check(regs->uregs[rd], addr); | ||
346 | put32_unaligned_check(regs->uregs[rd+1], addr+4); | ||
347 | } | ||
348 | |||
349 | return TYPE_LDST; | ||
350 | |||
351 | user: | ||
352 | if ((instr & 0xf0) == 0xd0) { | ||
353 | unsigned long val; | ||
354 | get32t_unaligned_check(val, addr); | ||
355 | regs->uregs[rd] = val; | ||
356 | get32t_unaligned_check(val, addr+4); | ||
357 | regs->uregs[rd+1] = val; | ||
358 | } else { | ||
359 | put32t_unaligned_check(regs->uregs[rd], addr); | ||
360 | put32t_unaligned_check(regs->uregs[rd+1], addr+4); | ||
361 | } | ||
362 | |||
363 | return TYPE_LDST; | ||
330 | 364 | ||
331 | fault: | 365 | fault: |
332 | return TYPE_FAULT; | 366 | return TYPE_FAULT; |
@@ -617,12 +651,20 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
617 | regs->ARM_pc += thumb_mode(regs) ? 2 : 4; | 651 | regs->ARM_pc += thumb_mode(regs) ? 2 : 4; |
618 | 652 | ||
619 | switch (CODING_BITS(instr)) { | 653 | switch (CODING_BITS(instr)) { |
620 | case 0x00000000: /* ldrh or strh */ | 654 | case 0x00000000: /* 3.13.4 load/store instruction extensions */ |
621 | if (LDSTH_I_BIT(instr)) | 655 | if (LDSTHD_I_BIT(instr)) |
622 | offset.un = (instr & 0xf00) >> 4 | (instr & 15); | 656 | offset.un = (instr & 0xf00) >> 4 | (instr & 15); |
623 | else | 657 | else |
624 | offset.un = regs->uregs[RM_BITS(instr)]; | 658 | offset.un = regs->uregs[RM_BITS(instr)]; |
625 | handler = do_alignment_ldrhstrh; | 659 | |
660 | if ((instr & 0x000000f0) == 0x000000b0 || /* LDRH, STRH */ | ||
661 | (instr & 0x001000f0) == 0x001000f0) /* LDRSH */ | ||
662 | handler = do_alignment_ldrhstrh; | ||
663 | else if ((instr & 0x001000f0) == 0x000000d0 || /* LDRD */ | ||
664 | (instr & 0x001000f0) == 0x000000f0) /* STRD */ | ||
665 | handler = do_alignment_ldrdstrd; | ||
666 | else | ||
667 | goto bad; | ||
626 | break; | 668 | break; |
627 | 669 | ||
628 | case 0x04000000: /* ldr or str immediate */ | 670 | case 0x04000000: /* ldr or str immediate */ |
diff --git a/arch/arm/mm/copypage-v3.S b/arch/arm/mm/copypage-v3.S index 4940f1908316..3c58ebbf0359 100644 --- a/arch/arm/mm/copypage-v3.S +++ b/arch/arm/mm/copypage-v3.S | |||
@@ -12,7 +12,7 @@ | |||
12 | #include <linux/linkage.h> | 12 | #include <linux/linkage.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <asm/assembler.h> | 14 | #include <asm/assembler.h> |
15 | #include <asm/constants.h> | 15 | #include <asm/asm-offsets.h> |
16 | 16 | ||
17 | .text | 17 | .text |
18 | .align 5 | 18 | .align 5 |
diff --git a/arch/arm/mm/copypage-v4wb.S b/arch/arm/mm/copypage-v4wb.S index b94c345ceb94..83117354b1cd 100644 --- a/arch/arm/mm/copypage-v4wb.S +++ b/arch/arm/mm/copypage-v4wb.S | |||
@@ -11,7 +11,7 @@ | |||
11 | */ | 11 | */ |
12 | #include <linux/linkage.h> | 12 | #include <linux/linkage.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <asm/constants.h> | 14 | #include <asm/asm-offsets.h> |
15 | 15 | ||
16 | .text | 16 | .text |
17 | .align 5 | 17 | .align 5 |
diff --git a/arch/arm/mm/copypage-v4wt.S b/arch/arm/mm/copypage-v4wt.S index 976793937a93..e1f2af28d549 100644 --- a/arch/arm/mm/copypage-v4wt.S +++ b/arch/arm/mm/copypage-v4wt.S | |||
@@ -14,7 +14,7 @@ | |||
14 | */ | 14 | */ |
15 | #include <linux/linkage.h> | 15 | #include <linux/linkage.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <asm/constants.h> | 17 | #include <asm/asm-offsets.h> |
18 | 18 | ||
19 | .text | 19 | .text |
20 | .align 5 | 20 | .align 5 |
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c index 191788fb18d1..b0208c992576 100644 --- a/arch/arm/mm/flush.c +++ b/arch/arm/mm/flush.c | |||
@@ -16,6 +16,58 @@ | |||
16 | #include <asm/tlbflush.h> | 16 | #include <asm/tlbflush.h> |
17 | 17 | ||
18 | #ifdef CONFIG_CPU_CACHE_VIPT | 18 | #ifdef CONFIG_CPU_CACHE_VIPT |
19 | |||
20 | void flush_cache_mm(struct mm_struct *mm) | ||
21 | { | ||
22 | if (cache_is_vivt()) { | ||
23 | if (cpu_isset(smp_processor_id(), mm->cpu_vm_mask)) | ||
24 | __cpuc_flush_user_all(); | ||
25 | return; | ||
26 | } | ||
27 | |||
28 | if (cache_is_vipt_aliasing()) { | ||
29 | asm( "mcr p15, 0, %0, c7, c14, 0\n" | ||
30 | " mcr p15, 0, %0, c7, c5, 0\n" | ||
31 | " mcr p15, 0, %0, c7, c10, 4" | ||
32 | : | ||
33 | : "r" (0) | ||
34 | : "cc"); | ||
35 | } | ||
36 | } | ||
37 | |||
38 | void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end) | ||
39 | { | ||
40 | if (cache_is_vivt()) { | ||
41 | if (cpu_isset(smp_processor_id(), vma->vm_mm->cpu_vm_mask)) | ||
42 | __cpuc_flush_user_range(start & PAGE_MASK, PAGE_ALIGN(end), | ||
43 | vma->vm_flags); | ||
44 | return; | ||
45 | } | ||
46 | |||
47 | if (cache_is_vipt_aliasing()) { | ||
48 | asm( "mcr p15, 0, %0, c7, c14, 0\n" | ||
49 | " mcr p15, 0, %0, c7, c5, 0\n" | ||
50 | " mcr p15, 0, %0, c7, c10, 4" | ||
51 | : | ||
52 | : "r" (0) | ||
53 | : "cc"); | ||
54 | } | ||
55 | } | ||
56 | |||
57 | void flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsigned long pfn) | ||
58 | { | ||
59 | if (cache_is_vivt()) { | ||
60 | if (cpu_isset(smp_processor_id(), vma->vm_mm->cpu_vm_mask)) { | ||
61 | unsigned long addr = user_addr & PAGE_MASK; | ||
62 | __cpuc_flush_user_range(addr, addr + PAGE_SIZE, vma->vm_flags); | ||
63 | } | ||
64 | return; | ||
65 | } | ||
66 | |||
67 | if (cache_is_vipt_aliasing()) | ||
68 | flush_pfn_alias(pfn, user_addr); | ||
69 | } | ||
70 | |||
19 | #define ALIAS_FLUSH_START 0xffff4000 | 71 | #define ALIAS_FLUSH_START 0xffff4000 |
20 | 72 | ||
21 | #define TOP_PTE(x) pte_offset_kernel(top_pmd, x) | 73 | #define TOP_PTE(x) pte_offset_kernel(top_pmd, x) |
diff --git a/arch/arm/mm/mm-armv.c b/arch/arm/mm/mm-armv.c index 3c655c54e231..d125a3dc061c 100644 --- a/arch/arm/mm/mm-armv.c +++ b/arch/arm/mm/mm-armv.c | |||
@@ -275,11 +275,9 @@ alloc_init_supersection(unsigned long virt, unsigned long phys, int prot) | |||
275 | int i; | 275 | int i; |
276 | 276 | ||
277 | for (i = 0; i < 16; i += 1) { | 277 | for (i = 0; i < 16; i += 1) { |
278 | alloc_init_section(virt, phys & SUPERSECTION_MASK, | 278 | alloc_init_section(virt, phys, prot | PMD_SECT_SUPER); |
279 | prot | PMD_SECT_SUPER); | ||
280 | 279 | ||
281 | virt += (PGDIR_SIZE / 2); | 280 | virt += (PGDIR_SIZE / 2); |
282 | phys += (PGDIR_SIZE / 2); | ||
283 | } | 281 | } |
284 | } | 282 | } |
285 | 283 | ||
@@ -297,14 +295,10 @@ alloc_init_page(unsigned long virt, unsigned long phys, unsigned int prot_l1, pg | |||
297 | pte_t *ptep; | 295 | pte_t *ptep; |
298 | 296 | ||
299 | if (pmd_none(*pmdp)) { | 297 | if (pmd_none(*pmdp)) { |
300 | unsigned long pmdval; | ||
301 | ptep = alloc_bootmem_low_pages(2 * PTRS_PER_PTE * | 298 | ptep = alloc_bootmem_low_pages(2 * PTRS_PER_PTE * |
302 | sizeof(pte_t)); | 299 | sizeof(pte_t)); |
303 | 300 | ||
304 | pmdval = __pa(ptep) | prot_l1; | 301 | __pmd_populate(pmdp, __pa(ptep) | prot_l1); |
305 | pmdp[0] = __pmd(pmdval); | ||
306 | pmdp[1] = __pmd(pmdval + 256 * sizeof(pte_t)); | ||
307 | flush_pmd_entry(pmdp); | ||
308 | } | 302 | } |
309 | ptep = pte_offset_kernel(pmdp, virt); | 303 | ptep = pte_offset_kernel(pmdp, virt); |
310 | 304 | ||
@@ -459,7 +453,7 @@ static void __init build_mem_type_table(void) | |||
459 | 453 | ||
460 | for (i = 0; i < 16; i++) { | 454 | for (i = 0; i < 16; i++) { |
461 | unsigned long v = pgprot_val(protection_map[i]); | 455 | unsigned long v = pgprot_val(protection_map[i]); |
462 | v &= (~(PTE_BUFFERABLE|PTE_CACHEABLE)) | user_pgprot; | 456 | v = (v & ~(PTE_BUFFERABLE|PTE_CACHEABLE)) | user_pgprot; |
463 | protection_map[i] = __pgprot(v); | 457 | protection_map[i] = __pgprot(v); |
464 | } | 458 | } |
465 | 459 | ||
@@ -583,23 +577,23 @@ static void __init create_mapping(struct map_desc *md) | |||
583 | */ | 577 | */ |
584 | void setup_mm_for_reboot(char mode) | 578 | void setup_mm_for_reboot(char mode) |
585 | { | 579 | { |
586 | unsigned long pmdval; | 580 | unsigned long base_pmdval; |
587 | pgd_t *pgd; | 581 | pgd_t *pgd; |
588 | pmd_t *pmd; | ||
589 | int i; | 582 | int i; |
590 | int cpu_arch = cpu_architecture(); | ||
591 | 583 | ||
592 | if (current->mm && current->mm->pgd) | 584 | if (current->mm && current->mm->pgd) |
593 | pgd = current->mm->pgd; | 585 | pgd = current->mm->pgd; |
594 | else | 586 | else |
595 | pgd = init_mm.pgd; | 587 | pgd = init_mm.pgd; |
596 | 588 | ||
597 | for (i = 0; i < FIRST_USER_PGD_NR + USER_PTRS_PER_PGD; i++) { | 589 | base_pmdval = PMD_SECT_AP_WRITE | PMD_SECT_AP_READ | PMD_TYPE_SECT; |
598 | pmdval = (i << PGDIR_SHIFT) | | 590 | if (cpu_architecture() <= CPU_ARCH_ARMv5TEJ) |
599 | PMD_SECT_AP_WRITE | PMD_SECT_AP_READ | | 591 | base_pmdval |= PMD_BIT4; |
600 | PMD_TYPE_SECT; | 592 | |
601 | if (cpu_arch <= CPU_ARCH_ARMv5TEJ) | 593 | for (i = 0; i < FIRST_USER_PGD_NR + USER_PTRS_PER_PGD; i++, pgd++) { |
602 | pmdval |= PMD_BIT4; | 594 | unsigned long pmdval = (i << PGDIR_SHIFT) | base_pmdval; |
595 | pmd_t *pmd; | ||
596 | |||
603 | pmd = pmd_off(pgd, i << PGDIR_SHIFT); | 597 | pmd = pmd_off(pgd, i << PGDIR_SHIFT); |
604 | pmd[0] = __pmd(pmdval); | 598 | pmd[0] = __pmd(pmdval); |
605 | pmd[1] = __pmd(pmdval + (1 << (PGDIR_SHIFT - 1))); | 599 | pmd[1] = __pmd(pmdval + (1 << (PGDIR_SHIFT - 1))); |
diff --git a/arch/arm/mm/proc-arm1020.S b/arch/arm/mm/proc-arm1020.S index 5c0ae5260d1c..1d739d282a45 100644 --- a/arch/arm/mm/proc-arm1020.S +++ b/arch/arm/mm/proc-arm1020.S | |||
@@ -28,7 +28,7 @@ | |||
28 | #include <linux/config.h> | 28 | #include <linux/config.h> |
29 | #include <linux/init.h> | 29 | #include <linux/init.h> |
30 | #include <asm/assembler.h> | 30 | #include <asm/assembler.h> |
31 | #include <asm/constants.h> | 31 | #include <asm/asm-offsets.h> |
32 | #include <asm/pgtable.h> | 32 | #include <asm/pgtable.h> |
33 | #include <asm/procinfo.h> | 33 | #include <asm/procinfo.h> |
34 | #include <asm/ptrace.h> | 34 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-arm1020e.S b/arch/arm/mm/proc-arm1020e.S index d69389c4d4ba..9b725665b5c7 100644 --- a/arch/arm/mm/proc-arm1020e.S +++ b/arch/arm/mm/proc-arm1020e.S | |||
@@ -28,7 +28,7 @@ | |||
28 | #include <linux/config.h> | 28 | #include <linux/config.h> |
29 | #include <linux/init.h> | 29 | #include <linux/init.h> |
30 | #include <asm/assembler.h> | 30 | #include <asm/assembler.h> |
31 | #include <asm/constants.h> | 31 | #include <asm/asm-offsets.h> |
32 | #include <asm/pgtable.h> | 32 | #include <asm/pgtable.h> |
33 | #include <asm/procinfo.h> | 33 | #include <asm/procinfo.h> |
34 | #include <asm/ptrace.h> | 34 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-arm1022.S b/arch/arm/mm/proc-arm1022.S index 747ed963e1df..37b70fa21c76 100644 --- a/arch/arm/mm/proc-arm1022.S +++ b/arch/arm/mm/proc-arm1022.S | |||
@@ -17,7 +17,7 @@ | |||
17 | #include <linux/config.h> | 17 | #include <linux/config.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <asm/assembler.h> | 19 | #include <asm/assembler.h> |
20 | #include <asm/constants.h> | 20 | #include <asm/asm-offsets.h> |
21 | #include <asm/pgtable.h> | 21 | #include <asm/pgtable.h> |
22 | #include <asm/procinfo.h> | 22 | #include <asm/procinfo.h> |
23 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-arm1026.S b/arch/arm/mm/proc-arm1026.S index 248110c9cf13..931b690d1be2 100644 --- a/arch/arm/mm/proc-arm1026.S +++ b/arch/arm/mm/proc-arm1026.S | |||
@@ -17,7 +17,7 @@ | |||
17 | #include <linux/config.h> | 17 | #include <linux/config.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <asm/assembler.h> | 19 | #include <asm/assembler.h> |
20 | #include <asm/constants.h> | 20 | #include <asm/asm-offsets.h> |
21 | #include <asm/pgtable.h> | 21 | #include <asm/pgtable.h> |
22 | #include <asm/procinfo.h> | 22 | #include <asm/procinfo.h> |
23 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-arm6_7.S b/arch/arm/mm/proc-arm6_7.S index 0ee214b824ff..d0f1bbb48f6c 100644 --- a/arch/arm/mm/proc-arm6_7.S +++ b/arch/arm/mm/proc-arm6_7.S | |||
@@ -13,7 +13,7 @@ | |||
13 | #include <linux/linkage.h> | 13 | #include <linux/linkage.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <asm/assembler.h> | 15 | #include <asm/assembler.h> |
16 | #include <asm/constants.h> | 16 | #include <asm/asm-offsets.h> |
17 | #include <asm/pgtable.h> | 17 | #include <asm/pgtable.h> |
18 | #include <asm/procinfo.h> | 18 | #include <asm/procinfo.h> |
19 | #include <asm/ptrace.h> | 19 | #include <asm/ptrace.h> |
@@ -38,8 +38,8 @@ ENTRY(cpu_arm7_data_abort) | |||
38 | mrc p15, 0, r1, c5, c0, 0 @ get FSR | 38 | mrc p15, 0, r1, c5, c0, 0 @ get FSR |
39 | mrc p15, 0, r0, c6, c0, 0 @ get FAR | 39 | mrc p15, 0, r0, c6, c0, 0 @ get FAR |
40 | ldr r8, [r0] @ read arm instruction | 40 | ldr r8, [r0] @ read arm instruction |
41 | tst r8, #1 << 20 @ L = 1 -> write? | 41 | tst r8, #1 << 20 @ L = 0 -> write? |
42 | orreq r1, r1, #1 << 8 @ yes. | 42 | orreq r1, r1, #1 << 11 @ yes. |
43 | and r7, r8, #15 << 24 | 43 | and r7, r8, #15 << 24 |
44 | add pc, pc, r7, lsr #22 @ Now branch to the relevant processing routine | 44 | add pc, pc, r7, lsr #22 @ Now branch to the relevant processing routine |
45 | nop | 45 | nop |
@@ -71,8 +71,8 @@ ENTRY(cpu_arm6_data_abort) | |||
71 | mrc p15, 0, r1, c5, c0, 0 @ get FSR | 71 | mrc p15, 0, r1, c5, c0, 0 @ get FSR |
72 | mrc p15, 0, r0, c6, c0, 0 @ get FAR | 72 | mrc p15, 0, r0, c6, c0, 0 @ get FAR |
73 | ldr r8, [r2] @ read arm instruction | 73 | ldr r8, [r2] @ read arm instruction |
74 | tst r8, #1 << 20 @ L = 1 -> write? | 74 | tst r8, #1 << 20 @ L = 0 -> write? |
75 | orreq r1, r1, #1 << 8 @ yes. | 75 | orreq r1, r1, #1 << 11 @ yes. |
76 | and r7, r8, #14 << 24 | 76 | and r7, r8, #14 << 24 |
77 | teq r7, #8 << 24 @ was it ldm/stm | 77 | teq r7, #8 << 24 @ was it ldm/stm |
78 | movne pc, lr | 78 | movne pc, lr |
diff --git a/arch/arm/mm/proc-arm720.S b/arch/arm/mm/proc-arm720.S index 57cfa6a2f54f..c69c9de32391 100644 --- a/arch/arm/mm/proc-arm720.S +++ b/arch/arm/mm/proc-arm720.S | |||
@@ -33,7 +33,7 @@ | |||
33 | #include <linux/linkage.h> | 33 | #include <linux/linkage.h> |
34 | #include <linux/init.h> | 34 | #include <linux/init.h> |
35 | #include <asm/assembler.h> | 35 | #include <asm/assembler.h> |
36 | #include <asm/constants.h> | 36 | #include <asm/asm-offsets.h> |
37 | #include <asm/pgtable.h> | 37 | #include <asm/pgtable.h> |
38 | #include <asm/procinfo.h> | 38 | #include <asm/procinfo.h> |
39 | #include <asm/ptrace.h> | 39 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-macros.S b/arch/arm/mm/proc-macros.S index 9137fe563599..7cfc2604a1ee 100644 --- a/arch/arm/mm/proc-macros.S +++ b/arch/arm/mm/proc-macros.S | |||
@@ -4,7 +4,7 @@ | |||
4 | * VMA_VM_FLAGS | 4 | * VMA_VM_FLAGS |
5 | * VM_EXEC | 5 | * VM_EXEC |
6 | */ | 6 | */ |
7 | #include <asm/constants.h> | 7 | #include <asm/asm-offsets.h> |
8 | #include <asm/thread_info.h> | 8 | #include <asm/thread_info.h> |
9 | 9 | ||
10 | /* | 10 | /* |
diff --git a/arch/arm/mm/proc-sa110.S b/arch/arm/mm/proc-sa110.S index 360cae905692..34f7e7d3f419 100644 --- a/arch/arm/mm/proc-sa110.S +++ b/arch/arm/mm/proc-sa110.S | |||
@@ -15,7 +15,7 @@ | |||
15 | #include <linux/linkage.h> | 15 | #include <linux/linkage.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <asm/assembler.h> | 17 | #include <asm/assembler.h> |
18 | #include <asm/constants.h> | 18 | #include <asm/asm-offsets.h> |
19 | #include <asm/procinfo.h> | 19 | #include <asm/procinfo.h> |
20 | #include <asm/hardware.h> | 20 | #include <asm/hardware.h> |
21 | #include <asm/pgtable.h> | 21 | #include <asm/pgtable.h> |
diff --git a/arch/arm/mm/proc-sa1100.S b/arch/arm/mm/proc-sa1100.S index d447cd5f3dd9..ca14f80d5ab4 100644 --- a/arch/arm/mm/proc-sa1100.S +++ b/arch/arm/mm/proc-sa1100.S | |||
@@ -20,7 +20,7 @@ | |||
20 | #include <linux/linkage.h> | 20 | #include <linux/linkage.h> |
21 | #include <linux/init.h> | 21 | #include <linux/init.h> |
22 | #include <asm/assembler.h> | 22 | #include <asm/assembler.h> |
23 | #include <asm/constants.h> | 23 | #include <asm/asm-offsets.h> |
24 | #include <asm/procinfo.h> | 24 | #include <asm/procinfo.h> |
25 | #include <asm/hardware.h> | 25 | #include <asm/hardware.h> |
26 | #include <asm/pgtable.h> | 26 | #include <asm/pgtable.h> |
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S index 3429ddcf65d1..eb34823c9dbf 100644 --- a/arch/arm/mm/proc-v6.S +++ b/arch/arm/mm/proc-v6.S | |||
@@ -11,7 +11,7 @@ | |||
11 | */ | 11 | */ |
12 | #include <linux/linkage.h> | 12 | #include <linux/linkage.h> |
13 | #include <asm/assembler.h> | 13 | #include <asm/assembler.h> |
14 | #include <asm/constants.h> | 14 | #include <asm/asm-offsets.h> |
15 | #include <asm/procinfo.h> | 15 | #include <asm/procinfo.h> |
16 | #include <asm/pgtable.h> | 16 | #include <asm/pgtable.h> |
17 | 17 | ||
@@ -105,7 +105,7 @@ ENTRY(cpu_v6_dcache_clean_area) | |||
105 | ENTRY(cpu_v6_switch_mm) | 105 | ENTRY(cpu_v6_switch_mm) |
106 | mov r2, #0 | 106 | mov r2, #0 |
107 | ldr r1, [r1, #MM_CONTEXT_ID] @ get mm->context.id | 107 | ldr r1, [r1, #MM_CONTEXT_ID] @ get mm->context.id |
108 | mcr p15, 0, r2, c7, c5, 6 @ flush BTAC/BTB | 108 | mcr p15, 0, r2, c7, c5, 6 @ flush BTAC/BTB |
109 | mcr p15, 0, r2, c7, c10, 4 @ drain write buffer | 109 | mcr p15, 0, r2, c7, c10, 4 @ drain write buffer |
110 | mcr p15, 0, r0, c2, c0, 0 @ set TTB 0 | 110 | mcr p15, 0, r0, c2, c0, 0 @ set TTB 0 |
111 | mcr p15, 0, r1, c13, c0, 1 @ set context ID | 111 | mcr p15, 0, r1, c13, c0, 1 @ set context ID |
diff --git a/arch/arm/mm/tlb-v3.S b/arch/arm/mm/tlb-v3.S index 44b0daeaff9b..c10786ec8e0a 100644 --- a/arch/arm/mm/tlb-v3.S +++ b/arch/arm/mm/tlb-v3.S | |||
@@ -13,7 +13,7 @@ | |||
13 | */ | 13 | */ |
14 | #include <linux/linkage.h> | 14 | #include <linux/linkage.h> |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <asm/constants.h> | 16 | #include <asm/asm-offsets.h> |
17 | #include <asm/tlbflush.h> | 17 | #include <asm/tlbflush.h> |
18 | #include "proc-macros.S" | 18 | #include "proc-macros.S" |
19 | 19 | ||
diff --git a/arch/arm/mm/tlb-v4.S b/arch/arm/mm/tlb-v4.S index db82ee468248..d6c94457c2b9 100644 --- a/arch/arm/mm/tlb-v4.S +++ b/arch/arm/mm/tlb-v4.S | |||
@@ -14,7 +14,7 @@ | |||
14 | */ | 14 | */ |
15 | #include <linux/linkage.h> | 15 | #include <linux/linkage.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <asm/constants.h> | 17 | #include <asm/asm-offsets.h> |
18 | #include <asm/tlbflush.h> | 18 | #include <asm/tlbflush.h> |
19 | #include "proc-macros.S" | 19 | #include "proc-macros.S" |
20 | 20 | ||
diff --git a/arch/arm/mm/tlb-v4wb.S b/arch/arm/mm/tlb-v4wb.S index 7908d5f1f130..cb829ca7845d 100644 --- a/arch/arm/mm/tlb-v4wb.S +++ b/arch/arm/mm/tlb-v4wb.S | |||
@@ -14,7 +14,7 @@ | |||
14 | */ | 14 | */ |
15 | #include <linux/linkage.h> | 15 | #include <linux/linkage.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <asm/constants.h> | 17 | #include <asm/asm-offsets.h> |
18 | #include <asm/tlbflush.h> | 18 | #include <asm/tlbflush.h> |
19 | #include "proc-macros.S" | 19 | #include "proc-macros.S" |
20 | 20 | ||
diff --git a/arch/arm/mm/tlb-v4wbi.S b/arch/arm/mm/tlb-v4wbi.S index efbe94bbe1a7..60cfc4a25dd5 100644 --- a/arch/arm/mm/tlb-v4wbi.S +++ b/arch/arm/mm/tlb-v4wbi.S | |||
@@ -14,7 +14,7 @@ | |||
14 | */ | 14 | */ |
15 | #include <linux/linkage.h> | 15 | #include <linux/linkage.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <asm/constants.h> | 17 | #include <asm/asm-offsets.h> |
18 | #include <asm/tlbflush.h> | 18 | #include <asm/tlbflush.h> |
19 | #include "proc-macros.S" | 19 | #include "proc-macros.S" |
20 | 20 | ||
diff --git a/arch/arm/mm/tlb-v6.S b/arch/arm/mm/tlb-v6.S index 99ed26e78adf..6f76b89ef46e 100644 --- a/arch/arm/mm/tlb-v6.S +++ b/arch/arm/mm/tlb-v6.S | |||
@@ -11,7 +11,7 @@ | |||
11 | * These assume a split I/D TLB. | 11 | * These assume a split I/D TLB. |
12 | */ | 12 | */ |
13 | #include <linux/linkage.h> | 13 | #include <linux/linkage.h> |
14 | #include <asm/constants.h> | 14 | #include <asm/asm-offsets.h> |
15 | #include <asm/page.h> | 15 | #include <asm/page.h> |
16 | #include <asm/tlbflush.h> | 16 | #include <asm/tlbflush.h> |
17 | #include "proc-macros.S" | 17 | #include "proc-macros.S" |