summaryrefslogtreecommitdiff
path: root/c/src/lib/libcpu/sparc/access/access.S
diff options
context:
space:
mode:
authorDaniel Cederman <cederman@gaisler.com>2016-10-04 09:05:04 +0200
committerDaniel Cederman <cederman@gaisler.com>2016-10-04 09:05:04 +0200
commit38ca68d664702b11ee417afa73363dccd945ceab (patch)
tree023a07ac249c2a8df67103ef589b27500709c839 /c/src/lib/libcpu/sparc/access/access.S
parentc7d624eedc3995f4554505e565013a5103d37c48 (diff)
ERRATA-FIX: Change assembler sequence that can cause stst erratarcc-v1.2.20
See GRLIB-TN-0009: "LEON3FT Stale Cache Entry After Store with Data Tag Parity Error".
Diffstat (limited to 'c/src/lib/libcpu/sparc/access/access.S')
-rw-r--r--c/src/lib/libcpu/sparc/access/access.S29
1 files changed, 29 insertions, 0 deletions
diff --git a/c/src/lib/libcpu/sparc/access/access.S b/c/src/lib/libcpu/sparc/access/access.S
index 7e69f64c9d..e72cebb5b4 100644
--- a/c/src/lib/libcpu/sparc/access/access.S
+++ b/c/src/lib/libcpu/sparc/access/access.S
@@ -45,6 +45,33 @@ SYM(_ld64):
retl
ldd [%o0], %o0
+#if defined(__FIX_B2BST)
+
+SYM(_st8):
+ stub %o1, [%o0]
+ retl
+ nop
+
+SYM(_st_be16):
+SYM(_st16):
+ stuh %o1, [%o0]
+ retl
+ nop
+
+SYM(_st_be32):
+SYM(_st32):
+ st %o1, [%o0]
+ retl
+ nop
+
+SYM(_st_be64):
+SYM(_st64):
+ std %o1, [%o0]
+ retl
+ nop
+
+#else
+
SYM(_st8):
retl
stub %o1, [%o0]
@@ -63,3 +90,5 @@ SYM(_st_be64):
SYM(_st64):
retl
std %o1, [%o0]
+
+#endif