diff options
| -rw-r--r-- | arch/arm/mach-mvebu/coherency_ll.S | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/arch/arm/mach-mvebu/coherency_ll.S b/arch/arm/mach-mvebu/coherency_ll.S index 53e8391192cd..5476669ba905 100644 --- a/arch/arm/mach-mvebu/coherency_ll.S +++ b/arch/arm/mach-mvebu/coherency_ll.S | |||
| @@ -32,15 +32,21 @@ ENTRY(ll_set_cpu_coherent) | |||
| 32 | 32 | ||
| 33 | /* Add CPU to SMP group - Atomic */ | 33 | /* Add CPU to SMP group - Atomic */ |
| 34 | add r3, r0, #ARMADA_XP_CFB_CTL_REG_OFFSET | 34 | add r3, r0, #ARMADA_XP_CFB_CTL_REG_OFFSET |
| 35 | ldr r2, [r3] | 35 | 1: |
| 36 | ldrex r2, [r3] | ||
| 36 | orr r2, r2, r1 | 37 | orr r2, r2, r1 |
| 37 | str r2, [r3] | 38 | strex r0, r2, [r3] |
| 39 | cmp r0, #0 | ||
| 40 | bne 1b | ||
| 38 | 41 | ||
| 39 | /* Enable coherency on CPU - Atomic */ | 42 | /* Enable coherency on CPU - Atomic */ |
| 40 | add r3, r0, #ARMADA_XP_CFB_CFG_REG_OFFSET | 43 | add r3, r3, #ARMADA_XP_CFB_CFG_REG_OFFSET |
| 41 | ldr r2, [r3] | 44 | 1: |
| 45 | ldrex r2, [r3] | ||
| 42 | orr r2, r2, r1 | 46 | orr r2, r2, r1 |
| 43 | str r2, [r3] | 47 | strex r0, r2, [r3] |
| 48 | cmp r0, #0 | ||
| 49 | bne 1b | ||
| 44 | 50 | ||
| 45 | dsb | 51 | dsb |
| 46 | 52 | ||
