summaryrefslogtreecommitdiff
path: root/firmware/target/arm/mmu-arm.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/mmu-arm.c')
-rw-r--r--firmware/target/arm/mmu-arm.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/firmware/target/arm/mmu-arm.c b/firmware/target/arm/mmu-arm.c
index 5fa05d1dc6..ffca7a43ee 100644
--- a/firmware/target/arm/mmu-arm.c
+++ b/firmware/target/arm/mmu-arm.c
@@ -90,9 +90,11 @@ void enable_mmu(void) {
90void __attribute__((naked)) invalidate_dcache_range(const void *base, unsigned int size) 90void __attribute__((naked)) invalidate_dcache_range(const void *base, unsigned int size)
91{ 91{
92 asm volatile( 92 asm volatile(
93 "add r1, r1, r0 \n" 93 "add r1, r1, r0 \n"
94 "mcrr p15, 0, r1, r0, c14 \n" 94 "mov r2, #0 \n"
95 "bx lr \n" 95 "mcrr p15, 0, r1, r0, c14 \n" /* Clean and invalidate dcache range */
96 "mcr p15, 0, r2, c7, c10, 4 \n" /* Data synchronization barrier */
97 "bx lr \n"
96 ); 98 );
97 (void)base; (void)size; 99 (void)base; (void)size;
98} 100}
@@ -140,9 +142,11 @@ void invalidate_dcache_range(const void *base, unsigned int size) {
140void __attribute__((naked)) clean_dcache_range(const void *base, unsigned int size) 142void __attribute__((naked)) clean_dcache_range(const void *base, unsigned int size)
141{ 143{
142 asm volatile( 144 asm volatile(
143 "add r1, r1, r0 \n" 145 "add r1, r1, r0 \n"
144 "mcrr p15, 0, r1, r0, c12 \n" 146 "mov r2, #0 \n"
145 "bx lr \n" 147 "mcrr p15, 0, r1, r0, c12 \n" /* Clean dcache range */
148 "mcr p15, 0, r2, c7, c10, 4 \n" /* Data synchronization barrier */
149 "bx lr \n"
146 ); 150 );
147 (void)base; (void)size; 151 (void)base; (void)size;
148} 152}