You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ag...@apache.org on 2020/09/22 22:05:38 UTC
[incubator-nuttx] 01/03: arch/arm: Add ARCH_ARMV6M Kconfig to
prepare the support of CortexM0+
This is an automated email from the ASF dual-hosted git repository.
aguettouche pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit 7faf72cabc5a624e89a6caa4dc0bdad6d34b7534
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Sat Sep 19 21:38:25 2020 -0700
arch/arm: Add ARCH_ARMV6M Kconfig to prepare the support of CortexM0+
also align with the armv7m implementation
Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
arch/arm/Kconfig | 9 +++++++--
arch/arm/include/irq.h | 2 +-
arch/arm/include/s32k1xx/chip.h | 4 ++--
arch/arm/include/spinlock.h | 4 ++--
arch/arm/include/syscall.h | 2 +-
arch/arm/src/Makefile | 2 +-
arch/arm/src/common/arm_internal.h | 6 +++---
arch/arm/src/common/arm_vfork.c | 7 +++----
8 files changed, 20 insertions(+), 16 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 8250309..a3c316e 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -520,9 +520,14 @@ config ARCH_ARM1176JZ
the Classic Arm family. It also introduced TrustZone technology to
enable secure execution outside of the reach of malicious code.
+config ARCH_ARMV6M
+ bool
+ default n
+
config ARCH_CORTEXM0
bool
default n
+ select ARCH_ARMV6M
select ARCH_HAVE_IRQPRIO
select ARCH_HAVE_RESET
select ARCH_HAVE_HARDFAULT_DEBUG
@@ -700,7 +705,7 @@ config ARCH_CORTEXM35P
config ARCH_FAMILY
string
default "arm" if ARCH_ARM7TDMI || ARCH_ARM926EJS || ARCH_ARM920T
- default "armv6-m" if ARCH_CORTEXM0
+ default "armv6-m" if ARCH_ARMV6M
default "armv7-a" if ARCH_ARMV7A
default "armv7-m" if ARCH_ARMV7M
default "armv7-r" if ARCH_ARMV7R
@@ -884,7 +889,7 @@ config ARM_LWL_CONSOLE
added to other ARM architectures be add up_low_console.c to the
architecture Make.defs file.
-if ARCH_CORTEXM0
+if ARCH_ARMV6M
source arch/arm/src/armv6-m/Kconfig
endif
if ARCH_ARMV7A
diff --git a/arch/arm/include/irq.h b/arch/arm/include/irq.h
index 00d7a5b..9e31257 100644
--- a/arch/arm/include/irq.h
+++ b/arch/arm/include/irq.h
@@ -49,7 +49,7 @@
# include <arch/armv7-m/irq.h>
#elif defined(CONFIG_ARCH_ARMV8M)
# include <arch/armv8-m/irq.h>
-#elif defined(CONFIG_ARCH_CORTEXM0)
+#elif defined(CONFIG_ARCH_ARMV6M)
# include <arch/armv6-m/irq.h>
#else
# include <arch/arm/irq.h>
diff --git a/arch/arm/include/s32k1xx/chip.h b/arch/arm/include/s32k1xx/chip.h
index 856dc78..dc162a1 100644
--- a/arch/arm/include/s32k1xx/chip.h
+++ b/arch/arm/include/s32k1xx/chip.h
@@ -60,7 +60,7 @@
# define NVIC_SYSH_PRIORITY_MAX 0x00 /* Zero is maximum priority */
# define NVIC_SYSH_PRIORITY_STEP 0x10 /* Steps between priorities */
-#elif defined(CONFIG_ARCH_CORTEXM0)
+#elif defined(CONFIG_ARCH_ARMV6M)
/* The Cortex-M0+ core supports 4 programmable interrupt priority levels. */
# define NVIC_SYSH_PRIORITY_MIN 0xc0 /* All bits[7:4] set is minimum priority */
@@ -79,7 +79,7 @@
************************************************************************************/
/************************************************************************************
- * Public Functions
+ * Public Function Prototypes
************************************************************************************/
#endif /* __ARCH_ARM_INCLUDE_S32K1XX_CHIP_H */
diff --git a/arch/arm/include/spinlock.h b/arch/arm/include/spinlock.h
index ff9f41e..3c4da0a 100644
--- a/arch/arm/include/spinlock.h
+++ b/arch/arm/include/spinlock.h
@@ -54,7 +54,7 @@
# include <arch/armv7-r/spinlock.h>
#elif defined(CONFIG_ARCH_ARMV7M)
# include <arch/armv7-m/spinlock.h>
-#elif defined(CONFIG_ARCH_CORTEXM0)
+#elif defined(CONFIG_ARCH_ARMV6M)
# include <arch/armv6-m/spinlock.h>
#else
# include <arch/arm/spinlock.h>
@@ -117,7 +117,7 @@
typedef uint8_t spinlock_t;
/****************************************************************************
- * Public Functions
+ * Public Function Prototypes
****************************************************************************/
/****************************************************************************
diff --git a/arch/arm/include/syscall.h b/arch/arm/include/syscall.h
index df364e5..7651c21 100644
--- a/arch/arm/include/syscall.h
+++ b/arch/arm/include/syscall.h
@@ -39,7 +39,7 @@
# include <arch/armv7-m/syscall.h>
#elif defined(CONFIG_ARCH_ARMV8M)
# include <arch/armv8-m/syscall.h>
-#elif defined(CONFIG_ARCH_CORTEXM0)
+#elif defined(CONFIG_ARCH_ARMV6M)
# include <arch/armv6-m/syscall.h>
#else
# include <arch/arm/syscall.h>
diff --git a/arch/arm/src/Makefile b/arch/arm/src/Makefile
index 7856d04..bf652cd 100644
--- a/arch/arm/src/Makefile
+++ b/arch/arm/src/Makefile
@@ -45,7 +45,7 @@ else ifeq ($(CONFIG_ARCH_ARMV7M),y) # ARMv7-M
ARCH_SUBDIR = armv7-m
else ifeq ($(CONFIG_ARCH_ARMV8M),y) # ARMv8-M
ARCH_SUBDIR = armv8-m
-else ifeq ($(CONFIG_ARCH_CORTEXM0),y) # Cortex-M0 is ARMv6-M
+else ifeq ($(CONFIG_ARCH_ARMV6M),y) # ARMv6-M
ARCH_SUBDIR = armv6-m
else # ARM9, ARM7TDMI, etc.
ARCH_SUBDIR = arm
diff --git a/arch/arm/src/common/arm_internal.h b/arch/arm/src/common/arm_internal.h
index 9f21af6..396a4f3 100644
--- a/arch/arm/src/common/arm_internal.h
+++ b/arch/arm/src/common/arm_internal.h
@@ -82,7 +82,7 @@
* some configurations.
*/
-#if defined(CONFIG_ARCH_CORTEXM0) || defined(CONFIG_ARCH_ARMV7M) || \
+#if defined(CONFIG_ARCH_ARMV6M) || defined(CONFIG_ARCH_ARMV7M) || \
defined(CONFIG_ARCH_ARMV8M)
/* If the floating point unit is present and enabled, then save the
@@ -319,7 +319,7 @@ void arm_pminitialize(void);
/* Exception handling logic unique to the Cortex-M family */
-#if defined(CONFIG_ARCH_CORTEXM0) || defined(CONFIG_ARCH_ARMV7M) || \
+#if defined(CONFIG_ARCH_ARMV6M) || defined(CONFIG_ARCH_ARMV7M) || \
defined(CONFIG_ARCH_ARMV8M)
/* Interrupt acknowledge and dispatch */
@@ -390,7 +390,7 @@ void arm_prefetchabort(uint32_t *regs);
void arm_syscall(uint32_t *regs);
void arm_undefinedinsn(uint32_t *regs);
-#endif /* CONFIG_ARCH_CORTEXM0,3,4,7 */
+#endif /* CONFIG_ARCH_ARMV[6-8]M */
void arm_vectorundefinsn(void);
void arm_vectorswi(void);
diff --git a/arch/arm/src/common/arm_vfork.c b/arch/arm/src/common/arm_vfork.c
index 7d33d91..7801569 100644
--- a/arch/arm/src/common/arm_vfork.c
+++ b/arch/arm/src/common/arm_vfork.c
@@ -225,16 +225,15 @@ pid_t up_vfork(const struct vfork_s *context)
# endif
-#elif defined(CONFIG_ARCH_CORTEXR4) || defined(CONFIG_ARCH_CORTEXR5) || \
- defined(CONFIG_ARCH_CORTEXR7)
+#elif defined(CONFIG_ARCH_ARMV7R)
# ifdef CONFIG_BUILD_PROTECTED
child->cmn.xcp.syscall[index].cpsr =
parent->xcp.syscall[index].cpsr;
# endif
-#elif defined(CONFIG_ARCH_CORTEXM3) || defined(CONFIG_ARCH_CORTEXM4) || \
- defined(CONFIG_ARCH_CORTEXM0) || defined(CONFIG_ARCH_CORTEXM7)
+#elif defined(CONFIG_ARCH_ARMV6M) || defined(CONFIG_ARCH_ARMV7M) || \
+ defined(CONFIG_ARCH_ARMV8M)
child->cmn.xcp.syscall[index].excreturn =
parent->xcp.syscall[index].excreturn;