[RTEMS Project] #3747: Address Cortex-M3 Errata 602117

RTEMS trac trac at rtems.org
Mon May 13 13:23:15 UTC 2019


#3747: Address Cortex-M3 Errata 602117
------------------------------+-----------------------------
  Reporter:  Sebastian Huber  |      Owner:  Sebastian Huber
      Type:  defect           |     Status:  assigned
  Priority:  normal           |  Milestone:  5.1
 Component:  arch/arm         |    Version:  5
  Severity:  normal           |   Keywords:
Blocked By:                   |   Blocking:
------------------------------+-----------------------------
 While testing on a NXP LPC1788 it found that this chip is affected by the
 Cortex-M3 Errata 602117. NXP didn't bother to document this in their
 errata sheet for the chip:

 https://www.nxp.com/docs/en/errata/ES_LPC177X_8X.pdf

 To avoid the issues, you have to compile everything with -mfix-
 cortex-m3-ldrd. This option is enabled by default, if you use
 -mcpu=cortex-m3.

 I think we have to change our GCC multilibs to account for this errata.
 For example:

 {{{
 diff --git a/gcc/config/arm/t-rtems b/gcc/config/arm/t-rtems
 index 026a5895662..e276b4f3e57 100644
 --- a/gcc/config/arm/t-rtems
 +++ b/gcc/config/arm/t-rtems
 @@ -1,7 +1,7 @@
  # Custom RTEMS multilibs for ARM

 -MULTILIB_OPTIONS  = mbig-endian mthumb
 march=armv6-m/march=armv7-a/march=armv7-r/march=armv7-m/mcpu=cortex-m7
 mfpu=neon/mfpu=vfp/mfpu=vfpv3-d16/mfpu=fpv4-sp-d16/mfpu=fpv5-d16 mfloat-
 abi=hard
 -MULTILIB_DIRNAMES = eb thumb armv6-m armv7-a armv7-r armv7-m cortex-m7
 neon vfp vfpv3-d16 fpv4-sp-d16 fpv5-d16 hard
 +MULTILIB_OPTIONS  = mbig-endian mthumb
 march=armv6-m/march=armv7-a/march=armv7-r/mcpu=cortex-m3/mcpu=cortex-m4/mcpu=cortex-m7
 mfpu=neon/mfpu=vfp/mfpu=vfpv3-d16/mfpu=fpv4-sp-d16/mfpu=fpv5-d16 mfloat-
 abi=hard
 +MULTILIB_DIRNAMES = eb thumb armv6-m armv7-a armv7-r cortex-m3 cortex-m4
 cortex-m7 neon vfp vfpv3-d16 fpv4-sp-d16 fpv5-d16 hard

  # Enumeration of multilibs

 @@ -16,7 +16,8 @@ MULTILIB_REQUIRED += mthumb/march=armv7-a/mfpu=neon
 /mfloat-abi=hard
  MULTILIB_REQUIRED += mthumb/march=armv7-a
  MULTILIB_REQUIRED += mthumb/march=armv7-r/mfpu=vfpv3-d16/mfloat-abi=hard
  MULTILIB_REQUIRED += mthumb/march=armv7-r
 -MULTILIB_REQUIRED += mthumb/march=armv7-m/mfpu=fpv4-sp-d16/mfloat-
 abi=hard
 +MULTILIB_REQUIRED += mthumb/mcpu=cortex-m3
 +MULTILIB_REQUIRED += mthumb/mcpu=cortex-m4
 +MULTILIB_REQUIRED += mthumb/mcpu=cortex-m4/mfpu=fpv4-sp-d16/mfloat-
 abi=hard
  MULTILIB_REQUIRED += mthumb/mcpu=cortex-m7/mfpu=fpv5-d16/mfloat-abi=hard
 -MULTILIB_REQUIRED += mthumb/march=armv7-m
  MULTILIB_REQUIRED += mthumb
 }}}

--
Ticket URL: <http://devel.rtems.org/ticket/3747>
RTEMS Project <http://www.rtems.org/>
RTEMS Project


More information about the bugs mailing list