[PATCH 26/26] leon,tn-0018: work around GRLIB-TN-0018 errata
Sebastian Huber
sebastian.huber at embedded-brains.de
Mon Jun 29 13:02:05 UTC 2020
On 29/06/2020 14:34, Daniel Hellstrom wrote:
>
> On 2020-06-29 13:57, Sebastian Huber wrote:
>> On 29/06/2020 13:28, Daniel Hellstrom wrote:
>>
>>> diff --git a/bsps/sparc/leon3/config/gr712rc.cfg
>>> b/bsps/sparc/leon3/config/gr712rc.cfg
>>> index 3852932..e8f0731 100644
>>> --- a/bsps/sparc/leon3/config/gr712rc.cfg
>>> +++ b/bsps/sparc/leon3/config/gr712rc.cfg
>>> @@ -10,10 +10,11 @@ RTEMS_CPU=sparc
>>> # and (hopefully) optimize for it.
>>> # GCC and clang use different switches to select target:
>>> ifneq (,$(findstring clang,$(CC)))
>>> - CPU_CFLAGS = -mcpu=gr712rc
>>> + CPU_CFLAGS = -mcpu=gr712rc -D__FIX_LEON3FT_TN0018
>>> else
>>> - CPU_CFLAGS = -mcpu=leon3 -mfix-gr712rc
>>> + CPU_CFLAGS = -mcpu=leon3 -mfix-gr712rc -D__FIX_LEON3FT_TN0018
>>> endif
>>> +# -D__FIX_LEON3FT_TN0018 enables kernel work around for
>>> GRLIB-TN-0018 errata
>>> # optimize flag: typically -O2
>>> CFLAGS_OPTIMIZE_V = -O2 -g
>>> diff --git a/bsps/sparc/leon3/config/ut699.cfg
>>> b/bsps/sparc/leon3/config/ut699.cfg
>>> index a8fff49..ed70cf5 100644
>>> --- a/bsps/sparc/leon3/config/ut699.cfg
>>> +++ b/bsps/sparc/leon3/config/ut699.cfg
>>> @@ -8,7 +8,8 @@ RTEMS_CPU=sparc
>>> # This contains the compiler options necessary to select the
>>> CPU model
>>> # and (hopefully) optimize for it.
>>> -CPU_CFLAGS = -mcpu=leon -mfix-ut699
>>> +# -D__FIX_LEON3FT_TN0018 enables kernel work around for
>>> GRLIB-TN-0018 errata
>>> +CPU_CFLAGS = -mcpu=leon -mfix-ut699 -D__FIX_LEON3FT_TN0018
>>> # optimize flag: typically -O2
>>> CFLAGS_OPTIMIZE_V = -O2 -g
>>> diff --git a/bsps/sparc/leon3/config/ut700.cfg
>>> b/bsps/sparc/leon3/config/ut700.cfg
>>> index bcca901..5c6fff8 100644
>>> --- a/bsps/sparc/leon3/config/ut700.cfg
>>> +++ b/bsps/sparc/leon3/config/ut700.cfg
>>> @@ -8,7 +8,8 @@ RTEMS_CPU=sparc
>>> # This contains the compiler options necessary to select the
>>> CPU model
>>> # and (hopefully) optimize for it.
>>> -CPU_CFLAGS = -mcpu=leon3 -mfix-ut700
>>> +# -D__FIX_LEON3FT_TN0018 enables kernel work around for
>>> GRLIB-TN-0018 errata
>>> +CPU_CFLAGS = -mcpu=leon3 -mfix-ut700 -D__FIX_LEON3FT_TN0018
>>> # optimize flag: typically -O2
>>> CFLAGS_OPTIMIZE_V = -O2 -g
>> Command line defines are discouraged and in cpukit only multilib
>> defined defines should be used. Can't you the existing
>> __FIX_LEON3FT_B2BST define to enable the errata workarounds?
>
> For UT700, for example, it is true that B2BST also needs to be
> defined, but in general a user may have TN0018 but not the B2BST since
> it was fixed in HW several years ago.
You mean users building for a custom chip design and a BSP which is not
integrated in the RTEMS Project?
> There is no fix needed to the compiler or newlib affecting the
> multilibs, the workaround can be implemented purely in the run-time
> time time which simplifies the impact on the user. When building
> multiple BSPs this is very convenient too since the configure line can
> remain the same regardless of the work around. The compiler does not
> emit any information about TN0018 or UT700 for example.
So far the rule was to use only multilib defined defines and CPU options
in the cpukit. I am not sure what we should do to address issues like
this. Maybe add CPU-specific CPU options?
More information about the devel
mailing list