diff options
Diffstat (limited to 'arch/arm/mm/proc-sa110.S')
| -rw-r--r-- | arch/arm/mm/proc-sa110.S | 25 |
1 files changed, 4 insertions, 21 deletions
diff --git a/arch/arm/mm/proc-sa110.S b/arch/arm/mm/proc-sa110.S index c916a6cae404..a2dd5ae1077d 100644 --- a/arch/arm/mm/proc-sa110.S +++ b/arch/arm/mm/proc-sa110.S | |||
| @@ -26,22 +26,7 @@ | |||
| 26 | * the cache line size of the I and D cache | 26 | * the cache line size of the I and D cache |
| 27 | */ | 27 | */ |
| 28 | #define DCACHELINESIZE 32 | 28 | #define DCACHELINESIZE 32 |
| 29 | #define FLUSH_OFFSET 32768 | ||
| 30 | 29 | ||
| 31 | .macro flush_110_dcache rd, ra, re | ||
| 32 | ldr \rd, =flush_base | ||
| 33 | ldr \ra, [\rd] | ||
| 34 | eor \ra, \ra, #FLUSH_OFFSET | ||
| 35 | str \ra, [\rd] | ||
| 36 | add \re, \ra, #16384 @ only necessary for 16k | ||
| 37 | 1001: ldr \rd, [\ra], #DCACHELINESIZE | ||
| 38 | teq \re, \ra | ||
| 39 | bne 1001b | ||
| 40 | .endm | ||
| 41 | |||
| 42 | .data | ||
| 43 | flush_base: | ||
| 44 | .long FLUSH_BASE | ||
| 45 | .text | 30 | .text |
| 46 | 31 | ||
| 47 | /* | 32 | /* |
| @@ -145,13 +130,11 @@ ENTRY(cpu_sa110_dcache_clean_area) | |||
| 145 | */ | 130 | */ |
| 146 | .align 5 | 131 | .align 5 |
| 147 | ENTRY(cpu_sa110_switch_mm) | 132 | ENTRY(cpu_sa110_switch_mm) |
| 148 | flush_110_dcache r3, ip, r1 | 133 | str lr, [sp, #-4]! |
| 149 | mov r1, #0 | 134 | bl v4wb_flush_kern_cache_all @ clears IP |
| 150 | mcr p15, 0, r1, c7, c5, 0 @ invalidate I cache | ||
| 151 | mcr p15, 0, r1, c7, c10, 4 @ drain WB | ||
| 152 | mcr p15, 0, r0, c2, c0, 0 @ load page table pointer | 135 | mcr p15, 0, r0, c2, c0, 0 @ load page table pointer |
| 153 | mcr p15, 0, r1, c8, c7, 0 @ invalidate I & D TLBs | 136 | mcr p15, 0, ip, c8, c7, 0 @ invalidate I & D TLBs |
| 154 | mov pc, lr | 137 | ldr pc, [sp], #4 |
| 155 | 138 | ||
| 156 | /* | 139 | /* |
| 157 | * cpu_sa110_set_pte(ptep, pte) | 140 | * cpu_sa110_set_pte(ptep, pte) |
