From 8af10b79877ff5dfd5c7b1928d57cf38483e819d Mon Sep 17 00:00:00 2001 From: Michael Hennerich Date: Mon, 21 May 2007 18:09:09 +0800 Subject: Blackfin arch: Add Workaround for ANOMALY 05000257 Signed-off-by: Michael Hennerich Signed-off-by: Bryan Wu Signed-off-by: Linus Torvalds --- arch/blackfin/lib/ins.S | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'arch/blackfin/lib') diff --git a/arch/blackfin/lib/ins.S b/arch/blackfin/lib/ins.S index 730d2b427538..7d5e9846311d 100644 --- a/arch/blackfin/lib/ins.S +++ b/arch/blackfin/lib/ins.S @@ -29,6 +29,7 @@ */ #include +#include .align 2 @@ -39,11 +40,14 @@ ENTRY(_insl) P2 = R2; /* P2 = count */ SSYNC; LSETUP( .Llong_loop_s, .Llong_loop_e) LC0 = P2; -.Llong_loop_s: R0 = [P0]; -.Llong_loop_e: [P1++] = R0; +.Llong_loop_s: R0 = [P0]; + [P1++] = R0; + NOP; +.Llong_loop_e: NOP; sti R3; RTS; + ENTRY(_insw) P0 = R0; /* P0 = port */ cli R3; @@ -51,8 +55,10 @@ ENTRY(_insw) P2 = R2; /* P2 = count */ SSYNC; LSETUP( .Lword_loop_s, .Lword_loop_e) LC0 = P2; -.Lword_loop_s: R0 = W[P0]; -.Lword_loop_e: W[P1++] = R0; +.Lword_loop_s: R0 = W[P0]; + W[P1++] = R0; + NOP; +.Lword_loop_e: NOP; sti R3; RTS; @@ -63,7 +69,9 @@ ENTRY(_insb) P2 = R2; /* P2 = count */ SSYNC; LSETUP( .Lbyte_loop_s, .Lbyte_loop_e) LC0 = P2; -.Lbyte_loop_s: R0 = B[P0]; -.Lbyte_loop_e: B[P1++] = R0; +.Lbyte_loop_s: R0 = B[P0]; + B[P1++] = R0; + NOP; +.Lbyte_loop_e: NOP; sti R3; RTS; -- cgit v1.2.3-59-g8ed1b