summaryrefslogtreecommitdiffstats
path: root/cpukit
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-11-23 16:32:23 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-11-26 10:43:12 +0100
commitbdcc81434353ee4f1d01aafe1a85627889fe53bc (patch)
tree9b689058fa78a31b1e1e3d268b708cfcd5caff2b /cpukit
parentrtems: Replace "precision" with "resolution" (diff)
downloadrtems-bdcc81434353ee4f1d01aafe1a85627889fe53bc.tar.bz2
sparc: Add workaround for GRLIB-TN-0011
Affected components are the GR712RC, UT699, UT699E, UT700, and LEON3FT-RTAX. Strictly, the workaround is only necessary if the MMU is enabled. Use __FIX_LEON3FT_B2BST to enable the workaround. This is not 100% appropriate, but the best thing we can use to enable the workaround. Close #4551.
Diffstat (limited to 'cpukit')
-rw-r--r--cpukit/score/cpu/sparc/cpu_asm.S12
1 files changed, 12 insertions, 0 deletions
diff --git a/cpukit/score/cpu/sparc/cpu_asm.S b/cpukit/score/cpu/sparc/cpu_asm.S
index 45d1495af7..afd9b9644b 100644
--- a/cpukit/score/cpu/sparc/cpu_asm.S
+++ b/cpukit/score/cpu/sparc/cpu_asm.S
@@ -190,6 +190,18 @@ done_flushing:
! Try to update the is executing indicator of the heir context
mov 1, %g1
+#if defined(__FIX_LEON3FT_B2BST)
+ /*
+ * This is a workaround for GRLIB-TN-0011 (Technical Note on LEON3/FT
+ * AHB Lock Release During Atomic Operation). Affected components are
+ * the GR712RC, UT699, UT699E, UT700, and LEON3FT-RTAX. Strictly, the
+ * workaround is only necessary if the MMU is enabled. Using the
+ * __FIX_LEON3FT_B2BST is not 100% appropriate, but the best thing we
+ * can use to enable the workaround. An alignment padding is filled
+ * with nops.
+ */
+.align 16
+#endif
.Ltry_update_is_executing:
swap [%o1 + SPARC_CONTEXT_CONTROL_IS_EXECUTING_OFFSET], %g1