[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <11797421812662-git-send-email-bryan.wu@analog.com>
Date: Mon, 21 May 2007 18:09:09 +0800
From: Bryan Wu <bryan.wu@...log.com>
To: torvalds@...ux-foundation.org, akpm@...ux-foundation.org,
linux-kernel@...r.kernel.org
Cc: Michael Hennerich <michael.hennerich@...log.com>,
Bryan Wu <bryan.wu@...log.com>
Subject: [PATCH 01/32] Blackfin arch: Add Workaround for ANOMALY 05000257
From: Michael Hennerich <michael.hennerich@...log.com>
Signed-off-by: Michael Hennerich <michael.hennerich@...log.com>
Signed-off-by: Bryan Wu <bryan.wu@...log.com>
---
arch/blackfin/lib/ins.S | 20 ++++++++++++++------
arch/blackfin/mach-common/entry.S | 6 ++++++
2 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/arch/blackfin/lib/ins.S b/arch/blackfin/lib/ins.S
index 730d2b4..7d5e984 100644
--- a/arch/blackfin/lib/ins.S
+++ b/arch/blackfin/lib/ins.S
@@ -29,6 +29,7 @@
*/
#include <linux/linkage.h>
+#include <asm/blackfin.h>
.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;
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S
index 8eb0a90..e463733 100644
--- a/arch/blackfin/mach-common/entry.S
+++ b/arch/blackfin/mach-common/entry.S
@@ -181,6 +181,12 @@ ENTRY(_ex_single_step)
_return_from_exception:
DEBUG_START_HWTRACE
+#ifdef ANOMALY_05000257
+ R7=LC0;
+ LC0=R7;
+ R7=LC1;
+ LC1=R7;
+#endif
(R7:6,P5:4) = [sp++];
ASTAT = [sp++];
sp = retn;
--
1.5.1.2
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists