Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8af10b79877ff5dfd5c7b1928d57cf38483e819d Commit: 8af10b79877ff5dfd5c7b1928d57cf38483e819d Parent: e8edc6e03a5c8562dc70a6d969f732bdb355a7e7 Author: Michael Hennerich <[EMAIL PROTECTED]> AuthorDate: Mon May 21 18:09:09 2007 +0800 Committer: Linus Torvalds <[EMAIL PROTECTED]> CommitDate: Mon May 21 09:50:21 2007 -0700
Blackfin arch: Add Workaround for ANOMALY 05000257 Signed-off-by: Michael Hennerich <[EMAIL PROTECTED]> Signed-off-by: Bryan Wu <[EMAIL PROTECTED]> Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]> --- 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; - To unsubscribe from this list: send the line "unsubscribe git-commits-head" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html