Skip to content

Commit

Permalink
Blackfin: simplify the do_flush macro
Browse files Browse the repository at this point in the history
Simplify the do_flush macro now that we don't need to take into account
a second instruction being used together.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
  • Loading branch information
Mike Frysinger committed Jun 12, 2009
1 parent f8b5565 commit 78f28a0
Showing 1 changed file with 15 additions and 15 deletions.
30 changes: 15 additions & 15 deletions arch/blackfin/mach-common/cache.S
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,13 @@

.text

/* 05000443 - IFLUSH cannot be last instruction in hardware loop */
#if ANOMALY_05000443
# define BROK_FLUSH_INST "IFLUSH"
#else
# define BROK_FLUSH_INST "no anomaly! yeah!"
#endif

/* Since all L1 caches work the same way, we use the same method for flushing
* them. Only the actual flush instruction differs. We write this in asm as
* GCC can be hard to coax into writing nice hardware loops.
Expand All @@ -23,7 +30,7 @@
* R0 = start address
* R1 = end address
*/
.macro do_flush flushins:req optflushins optnopins label
.macro do_flush flushins:req label

R2 = -L1_CACHE_BYTES;

Expand All @@ -44,22 +51,15 @@
\label :
.endif
P0 = R0;

LSETUP (1f, 2f) LC1 = P1;
1:
.ifnb \optflushins
\optflushins [P0];
.endif
#if ANOMALY_05000443
.ifb \optnopins
2:
.endif
.ifeqs "\flushins", BROK_FLUSH_INST
\flushins [P0++];
.ifnb \optnopins
2: \optnopins;
.endif
#else
2: nop;
.else
2: \flushins [P0++];
#endif
.endif

RTS;
.endm
Expand All @@ -77,7 +77,7 @@ ENTRY(_blackfin_icache_flush_range)
*/
P0 = R0;
IFLUSH[P0];
do_flush IFLUSH, , nop
do_flush IFLUSH
ENDPROC(_blackfin_icache_flush_range)

/* Throw away all D-cached data in specified region without any obligation to
Expand All @@ -91,7 +91,7 @@ ENDPROC(_blackfin_dcache_invalidate_range)

/* Flush all data cache lines assocoiated with this memory area */
ENTRY(_blackfin_dcache_flush_range)
do_flush FLUSH, , , .Ldfr
do_flush FLUSH, .Ldfr
ENDPROC(_blackfin_dcache_flush_range)

/* Our headers convert the page structure to an address, so just need to flush
Expand Down

0 comments on commit 78f28a0

Please sign in to comment.