diff options
author | Marcin Bukat <marcin.bukat@gmail.com> | 2013-01-12 21:57:37 +0100 |
---|---|---|
committer | Marcin Bukat <marcin.bukat@gmail.com> | 2013-01-12 21:57:37 +0100 |
commit | 29e51a17775df5040b12d93834c45b3f1171ed9d (patch) | |
tree | ed8acf1ed71979be83f0717589e88314efc4d27b /firmware | |
parent | e2be0e75ab91ff9a29496a375386297bdb184716 (diff) | |
download | rockbox-29e51a17775df5040b12d93834c45b3f1171ed9d.tar.gz rockbox-29e51a17775df5040b12d93834c45b3f1171ed9d.zip |
rk27xx: slightly optimize commit_discard_dcache_range()
Change-Id: I13ce643d4ba26db5de9ffa083070d7f40b0e7b1f
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/target/arm/rk27xx/system-rk27xx.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/firmware/target/arm/rk27xx/system-rk27xx.c b/firmware/target/arm/rk27xx/system-rk27xx.c index 20d0226892..712c7d6549 100644 --- a/firmware/target/arm/rk27xx/system-rk27xx.c +++ b/firmware/target/arm/rk27xx/system-rk27xx.c | |||
@@ -218,18 +218,17 @@ void commit_discard_dcache (void) __attribute__((alias("commit_discard_idcache") | |||
218 | 218 | ||
219 | void commit_discard_dcache_range (const void *base, unsigned int size) | 219 | void commit_discard_dcache_range (const void *base, unsigned int size) |
220 | { | 220 | { |
221 | int cnt = size + ((unsigned long)base & 0x1f); | 221 | /* 0x01 is opcode for cache line commit discard */ |
222 | unsigned long opcode = ((unsigned long)base & 0xffffffe0) | 0x01; | 222 | uint32_t end_opcode = (uint32_t)((uintptr_t)base + size) | 0x01; |
223 | uint32_t opcode = (uint32_t)((uintptr_t)base & 0xffffffe0) | 0x01; | ||
223 | 224 | ||
224 | int old_irq = disable_irq_save(); | 225 | int old_irq = disable_irq_save(); |
225 | 226 | ||
226 | while (cnt > 0) | 227 | while (opcode <= end_opcode) |
227 | { | 228 | { |
228 | CACHEOP = opcode; | ||
229 | |||
230 | while (CACHEOP & 0x03); | 229 | while (CACHEOP & 0x03); |
231 | 230 | ||
232 | cnt -= 32; | 231 | CACHEOP = opcode; |
233 | opcode += 32; | 232 | opcode += 32; |
234 | } | 233 | } |
235 | 234 | ||