diff options
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-mvebu/coherency_ll.S | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/arm/mach-mvebu/coherency_ll.S b/arch/arm/mach-mvebu/coherency_ll.S index f2e2e8677c4b..6828f9f157b0 100644 --- a/arch/arm/mach-mvebu/coherency_ll.S +++ b/arch/arm/mach-mvebu/coherency_ll.S | |||
@@ -102,6 +102,26 @@ ENTRY(ll_enable_coherency) | |||
102 | mov pc, lr | 102 | mov pc, lr |
103 | ENDPROC(ll_enable_coherency) | 103 | ENDPROC(ll_enable_coherency) |
104 | 104 | ||
105 | ENTRY(ll_disable_coherency) | ||
106 | /* | ||
107 | * r0 being untouched in ll_get_coherency_base and | ||
108 | * ll_get_cpuid, we can use it to save lr modifing it with the | ||
109 | * following bl | ||
110 | */ | ||
111 | mov r0, lr | ||
112 | bl ll_get_coherency_base | ||
113 | bl ll_get_cpuid | ||
114 | mov lr, r0 | ||
115 | add r0, r1, #ARMADA_XP_CFB_CTL_REG_OFFSET | ||
116 | 1: | ||
117 | ldrex r2, [r0] | ||
118 | bic r2, r2, r3 | ||
119 | strex r1, r2, [r0] | ||
120 | cmp r1, #0 | ||
121 | bne 1b | ||
122 | dsb | ||
123 | mov pc, lr | ||
124 | ENDPROC(ll_disable_coherency) | ||
105 | 125 | ||
106 | .align 2 | 126 | .align 2 |
107 | 3: | 127 | 3: |