|
@@ -69,7 +69,7 @@ ENTRY(cpu_feroceon_proc_init)
|
|
|
movne r2, r2, lsr #2 @ turned into # of sets
|
|
|
sub r2, r2, #(1 << 5)
|
|
|
stmia r1, {r2, r3}
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
|
|
|
/*
|
|
|
* cpu_feroceon_proc_fin()
|
|
@@ -86,7 +86,7 @@ ENTRY(cpu_feroceon_proc_fin)
|
|
|
bic r0, r0, #0x1000 @ ...i............
|
|
|
bic r0, r0, #0x000e @ ............wca.
|
|
|
mcr p15, 0, r0, c1, c0, 0 @ disable caches
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
|
|
|
/*
|
|
|
* cpu_feroceon_reset(loc)
|
|
@@ -110,7 +110,7 @@ ENTRY(cpu_feroceon_reset)
|
|
|
bic ip, ip, #0x000f @ ............wcam
|
|
|
bic ip, ip, #0x1100 @ ...i...s........
|
|
|
mcr p15, 0, ip, c1, c0, 0 @ ctrl register
|
|
|
- mov pc, r0
|
|
|
+ ret r0
|
|
|
ENDPROC(cpu_feroceon_reset)
|
|
|
.popsection
|
|
|
|
|
@@ -124,7 +124,7 @@ ENTRY(cpu_feroceon_do_idle)
|
|
|
mov r0, #0
|
|
|
mcr p15, 0, r0, c7, c10, 4 @ Drain write buffer
|
|
|
mcr p15, 0, r0, c7, c0, 4 @ Wait for interrupt
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
|
|
|
/*
|
|
|
* flush_icache_all()
|
|
@@ -134,7 +134,7 @@ ENTRY(cpu_feroceon_do_idle)
|
|
|
ENTRY(feroceon_flush_icache_all)
|
|
|
mov r0, #0
|
|
|
mcr p15, 0, r0, c7, c5, 0 @ invalidate I cache
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
ENDPROC(feroceon_flush_icache_all)
|
|
|
|
|
|
/*
|
|
@@ -169,7 +169,7 @@ __flush_whole_cache:
|
|
|
mov ip, #0
|
|
|
mcrne p15, 0, ip, c7, c5, 0 @ invalidate I cache
|
|
|
mcrne p15, 0, ip, c7, c10, 4 @ drain WB
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
|
|
|
/*
|
|
|
* flush_user_cache_range(start, end, flags)
|
|
@@ -198,7 +198,7 @@ ENTRY(feroceon_flush_user_cache_range)
|
|
|
tst r2, #VM_EXEC
|
|
|
mov ip, #0
|
|
|
mcrne p15, 0, ip, c7, c10, 4 @ drain WB
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
|
|
|
/*
|
|
|
* coherent_kern_range(start, end)
|
|
@@ -233,7 +233,7 @@ ENTRY(feroceon_coherent_user_range)
|
|
|
blo 1b
|
|
|
mcr p15, 0, r0, c7, c10, 4 @ drain WB
|
|
|
mov r0, #0
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
|
|
|
/*
|
|
|
* flush_kern_dcache_area(void *addr, size_t size)
|
|
@@ -254,7 +254,7 @@ ENTRY(feroceon_flush_kern_dcache_area)
|
|
|
mov r0, #0
|
|
|
mcr p15, 0, r0, c7, c5, 0 @ invalidate I cache
|
|
|
mcr p15, 0, r0, c7, c10, 4 @ drain WB
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
|
|
|
.align 5
|
|
|
ENTRY(feroceon_range_flush_kern_dcache_area)
|
|
@@ -268,7 +268,7 @@ ENTRY(feroceon_range_flush_kern_dcache_area)
|
|
|
mov r0, #0
|
|
|
mcr p15, 0, r0, c7, c5, 0 @ invalidate I cache
|
|
|
mcr p15, 0, r0, c7, c10, 4 @ drain WB
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
|
|
|
/*
|
|
|
* dma_inv_range(start, end)
|
|
@@ -295,7 +295,7 @@ feroceon_dma_inv_range:
|
|
|
cmp r0, r1
|
|
|
blo 1b
|
|
|
mcr p15, 0, r0, c7, c10, 4 @ drain WB
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
|
|
|
.align 5
|
|
|
feroceon_range_dma_inv_range:
|
|
@@ -311,7 +311,7 @@ feroceon_range_dma_inv_range:
|
|
|
mcr p15, 5, r0, c15, c14, 0 @ D inv range start
|
|
|
mcr p15, 5, r1, c15, c14, 1 @ D inv range top
|
|
|
msr cpsr_c, r2 @ restore interrupts
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
|
|
|
/*
|
|
|
* dma_clean_range(start, end)
|
|
@@ -331,7 +331,7 @@ feroceon_dma_clean_range:
|
|
|
cmp r0, r1
|
|
|
blo 1b
|
|
|
mcr p15, 0, r0, c7, c10, 4 @ drain WB
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
|
|
|
.align 5
|
|
|
feroceon_range_dma_clean_range:
|
|
@@ -344,7 +344,7 @@ feroceon_range_dma_clean_range:
|
|
|
mcr p15, 5, r1, c15, c13, 1 @ D clean range top
|
|
|
msr cpsr_c, r2 @ restore interrupts
|
|
|
mcr p15, 0, r0, c7, c10, 4 @ drain WB
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
|
|
|
/*
|
|
|
* dma_flush_range(start, end)
|
|
@@ -362,7 +362,7 @@ ENTRY(feroceon_dma_flush_range)
|
|
|
cmp r0, r1
|
|
|
blo 1b
|
|
|
mcr p15, 0, r0, c7, c10, 4 @ drain WB
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
|
|
|
.align 5
|
|
|
ENTRY(feroceon_range_dma_flush_range)
|
|
@@ -375,7 +375,7 @@ ENTRY(feroceon_range_dma_flush_range)
|
|
|
mcr p15, 5, r1, c15, c15, 1 @ D clean/inv range top
|
|
|
msr cpsr_c, r2 @ restore interrupts
|
|
|
mcr p15, 0, r0, c7, c10, 4 @ drain WB
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
|
|
|
/*
|
|
|
* dma_map_area(start, size, dir)
|
|
@@ -412,7 +412,7 @@ ENDPROC(feroceon_range_dma_map_area)
|
|
|
* - dir - DMA direction
|
|
|
*/
|
|
|
ENTRY(feroceon_dma_unmap_area)
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
ENDPROC(feroceon_dma_unmap_area)
|
|
|
|
|
|
.globl feroceon_flush_kern_cache_louis
|
|
@@ -461,7 +461,7 @@ ENTRY(cpu_feroceon_dcache_clean_area)
|
|
|
bhi 1b
|
|
|
#endif
|
|
|
mcr p15, 0, r0, c7, c10, 4 @ drain WB
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
|
|
|
/* =============================== PageTable ============================== */
|
|
|
|
|
@@ -490,9 +490,9 @@ ENTRY(cpu_feroceon_switch_mm)
|
|
|
|
|
|
mcr p15, 0, r0, c2, c0, 0 @ load page table pointer
|
|
|
mcr p15, 0, ip, c8, c7, 0 @ invalidate I & D TLBs
|
|
|
- mov pc, r2
|
|
|
+ ret r2
|
|
|
#else
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
@@ -512,7 +512,7 @@ ENTRY(cpu_feroceon_set_pte_ext)
|
|
|
#endif
|
|
|
mcr p15, 0, r0, c7, c10, 4 @ drain WB
|
|
|
#endif
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
|
|
|
/* Suspend/resume support: taken from arch/arm/mm/proc-arm926.S */
|
|
|
.globl cpu_feroceon_suspend_size
|
|
@@ -554,7 +554,7 @@ __feroceon_setup:
|
|
|
mrc p15, 0, r0, c1, c0 @ get control register v4
|
|
|
bic r0, r0, r5
|
|
|
orr r0, r0, r6
|
|
|
- mov pc, lr
|
|
|
+ ret lr
|
|
|
.size __feroceon_setup, . - __feroceon_setup
|
|
|
|
|
|
/*
|