Commit 0d670b24 authored by Michal Simek's avatar Michal Simek

microblaze: Fix cache loop function for cache range

I create wrong asm code but none test shows that this part of code is wrong.
I am not convinces that were good idea to create asm optimized macros
for caches. The reason is that there is not optimization with previous code
that's why make sense to add old code and do some benchmarking which
functions are faster.
Signed-off-by: default avatarMichal Simek <monstr@monstr.eu>
parent 75ef7cdd
...@@ -172,16 +172,15 @@ do { \ ...@@ -172,16 +172,15 @@ do { \
/* It is used only first parameter for OP - for wic, wdc */ /* It is used only first parameter for OP - for wic, wdc */
#define CACHE_RANGE_LOOP_1(start, end, line_length, op) \ #define CACHE_RANGE_LOOP_1(start, end, line_length, op) \
do { \ do { \
int step = -line_length; \ int volatile temp; \
int count = end - start; \ BUG_ON(end - start <= 0); \
BUG_ON(count <= 0); \
\ \
__asm__ __volatile__ (" 1: addk %0, %0, %1; \ __asm__ __volatile__ (" 1: " #op " %1, r0; \
" #op " %0, r0; \ cmpu %0, %1, %2; \
bgtid %1, 1b; \ bgtid %0, 1b; \
addk %1, %1, %2; \ addk %1, %1, %3; \
" : : "r" (start), "r" (count), \ " : : "r" (temp), "r" (start), "r" (end),\
"r" (step) : "memory"); \ "r" (line_length) : "memory"); \
} while (0); } while (0);
static void __flush_icache_range_msr_irq(unsigned long start, unsigned long end) static void __flush_icache_range_msr_irq(unsigned long start, unsigned long end)
...@@ -313,16 +312,6 @@ static void __invalidate_dcache_all_wb(void) ...@@ -313,16 +312,6 @@ static void __invalidate_dcache_all_wb(void)
pr_debug("%s\n", __func__); pr_debug("%s\n", __func__);
CACHE_ALL_LOOP2(cpuinfo.dcache_size, cpuinfo.dcache_line_length, CACHE_ALL_LOOP2(cpuinfo.dcache_size, cpuinfo.dcache_line_length,
wdc.clear) wdc.clear)
#if 0
unsigned int i;
pr_debug("%s\n", __func__);
/* Just loop through cache size and invalidate it */
for (i = 0; i < cpuinfo.dcache_size; i += cpuinfo.dcache_line_length)
__invalidate_dcache(0, i);
#endif
} }
static void __invalidate_dcache_range_wb(unsigned long start, static void __invalidate_dcache_range_wb(unsigned long start,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment