[PATCH] sparc: Add workaround for GRLIB-TN-0011
Joel Sherrill
joel at rtems.org
Tue Nov 23 17:13:06 UTC 2021
On Tue, Nov 23, 2021 at 9:34 AM Sebastian Huber
<sebastian.huber at embedded-brains.de> wrote:
>
> 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.
> ---
> cpukit/score/cpu/sparc/cpu_asm.S | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/cpukit/score/cpu/sparc/cpu_asm.S b/cpukit/score/cpu/sparc/cpu_asm.S
> index 45d1495af7..04b2b0119f 100644
> --- a/cpukit/score/cpu/sparc/cpu_asm.S
> +++ b/cpukit/score/cpu/sparc/cpu_asm.S
> @@ -190,6 +190,16 @@ 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. 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.
> + */
> +.align 16
> +#endif
Is there an assumption on the fill pattern here? If the "move 1, %g1" is
executed, it looks like the code will fall into the alignment fill
area. If those
are not guaranteed to be nops, then what instruction(s) are executed?
It probably is a nop but that should be checked and in the comment.
And this is in an SMP conditional section but I am unsure if all of those
are multi-core models. What does this errata actually cover? Is it that
swap needs to be aligned? And it is just a coincidence that this is only
in an SMP build of RTEMS?
I'm ok with it but the comments and implicit assumptions need to be
enhanced.
> .Ltry_update_is_executing:
>
> swap [%o1 + SPARC_CONTEXT_CONTROL_IS_EXECUTING_OFFSET], %g1
> --
> 2.31.1
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
More information about the devel
mailing list