summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2015-02-28 08:22:37 -0600
committerGregory Nutt <gnutt@nuttx.org>2015-02-28 08:22:37 -0600
commit5f990259ede6fc8497557513351d3de7b9c4d6a4 (patch)
tree149e6eaf744f43d7f3b3a71d23ba0cee402b31fb
parent3c73217003478af0e9680596e600fa50c61a21d8 (diff)
downloadpx4-nuttx-5f990259ede6fc8497557513351d3de7b9c4d6a4.tar.gz
px4-nuttx-5f990259ede6fc8497557513351d3de7b9c4d6a4.tar.bz2
px4-nuttx-5f990259ede6fc8497557513351d3de7b9c4d6a4.zip
PIC32MZ: Add an option to use the MIPS32 or the microMIPS ISA
-rw-r--r--nuttx/arch/mips/Kconfig13
-rw-r--r--nuttx/arch/mips/src/mips32/Toolchain.defs13
-rw-r--r--nuttx/arch/mips/src/mips32/up_syscall0.S2
-rw-r--r--nuttx/arch/mips/src/mips32/vfork.S2
-rw-r--r--nuttx/arch/mips/src/pic32mx/Kconfig138
-rw-r--r--nuttx/arch/mips/src/pic32mz/Kconfig6
-rw-r--r--nuttx/arch/mips/src/pic32mz/pic32mz-config.h7
-rw-r--r--nuttx/arch/mips/src/pic32mz/pic32mz-head.S40
-rw-r--r--nuttx/configs/pic32mz-starterkit/nsh/defconfig3
9 files changed, 137 insertions, 87 deletions
diff --git a/nuttx/arch/mips/Kconfig b/nuttx/arch/mips/Kconfig
index 33fdd2a61..d577e8bd8 100644
--- a/nuttx/arch/mips/Kconfig
+++ b/nuttx/arch/mips/Kconfig
@@ -42,12 +42,21 @@ config ARCH_MIPS_24KC
config ARCH_MIPS_M14K
bool
default n
- select ARCH_MIPS_MICROMIPS
+ select ARCH_HAVE_MICROMIPS
-config ARCH_MIPS_MICROMIPS
+config ARCH_HAVE_MICROMIPS
bool
default n
+config MIPS_MICROMIPS
+ bool "Use microMIPS ISA"
+ default n
+ depends on ARCH_HAVE_MICROMIPS
+ ---help---
+ The processor supports both the MIPS32 ISA and the microMIPS ISA.
+ If this option is selected, the microMIPS ISA will be used.
+ Otherwise, the MIPS32 ISA will be used.
+
config ARCH_FAMILY
string
default "mips32" if ARCH_MIPS32
diff --git a/nuttx/arch/mips/src/mips32/Toolchain.defs b/nuttx/arch/mips/src/mips32/Toolchain.defs
index 5aeed13bb..3c10defe1 100644
--- a/nuttx/arch/mips/src/mips32/Toolchain.defs
+++ b/nuttx/arch/mips/src/mips32/Toolchain.defs
@@ -103,15 +103,24 @@ ifeq ($(CONFIG_DEBUG_CUSTOMOPT),y)
MAXOPTIMIZATION := $(CONFIG_DEBUG_OPTLEVEL)
endif
+# Pick correct MIPS architecture selection
+
ifeq ($(CONFIG_ARCH_MIPS_M14K),y)
MIPS_MARCH = m14k
MIPS_MPROCESSOR = elf32pic32mz
+else
+ MIPS_MARCH = 24kc
+ MIPS_MPROCESSOR = elf32pic32mx
+endif
+
+# Handle builds for the microMIPS ISA. Interlinking may be
+# necessary to integrate with MIPS32 ISA libraries.
+
+ifeq ($(CONFIG_MIPS_MICROMIPS),y)
# MIPS_MICROMIPS = -mmicromips
# MIPS_MICROMIPS = -mmicromips -minterlink-mips16 -mno-jals
MIPS_MICROMIPS = -mmicromips -minterlink-compressed
else
- MIPS_MARCH = 24kc
- MIPS_MPROCESSOR = elf32pic32mx
MIPS_MICROMIPS =
endif
diff --git a/nuttx/arch/mips/src/mips32/up_syscall0.S b/nuttx/arch/mips/src/mips32/up_syscall0.S
index f9cf4762b..cd5338156 100644
--- a/nuttx/arch/mips/src/mips32/up_syscall0.S
+++ b/nuttx/arch/mips/src/mips32/up_syscall0.S
@@ -81,7 +81,7 @@
.text
.set noreorder
.set nomips16
-#ifdef CONFIG_ARCH_MIPS_MICROMIPS
+#ifdef CONFIG_MIPS_MICROMIPS
.set micromips
#endif
.ent sys_call0
diff --git a/nuttx/arch/mips/src/mips32/vfork.S b/nuttx/arch/mips/src/mips32/vfork.S
index 1e000b78d..b373a6a93 100644
--- a/nuttx/arch/mips/src/mips32/vfork.S
+++ b/nuttx/arch/mips/src/mips32/vfork.S
@@ -102,7 +102,7 @@
.globl vfork
.type vfork, function
.set nomips16
-#ifdef CONFIG_ARCH_MIPS_MICROMIPS
+#ifdef CONFIG_MIPS_MICROMIPS
.set micromips
#endif
.ent vfork
diff --git a/nuttx/arch/mips/src/pic32mx/Kconfig b/nuttx/arch/mips/src/pic32mx/Kconfig
index a23b0cc80..ec829ca56 100644
--- a/nuttx/arch/mips/src/pic32mx/Kconfig
+++ b/nuttx/arch/mips/src/pic32mx/Kconfig
@@ -14,416 +14,416 @@ config ARCH_CHIP_PIC32MX110F016B
bool "PIC32MX110F016B"
select ARCH_CHIP_PIC32MX1
---help---
- Microchip PIC32MX110F016B (MIPS32)
+ Microchip PIC32MX110F016B (MPS32 24KC)
ARCH_CHIP_PIC32MX1
config ARCH_CHIP_PIC32MX110F016C
bool "PIC32MX110F016C"
select ARCH_CHIP_PIC32MX1
---help---
- Microchip PIC32MX110F016C (MIPS32)
+ Microchip PIC32MX110F016C (MPS32 24KC)
config ARCH_CHIP_PIC32MX110F016D
bool "PIC32MX110F016D"
select ARCH_CHIP_PIC32MX1
---help---
- Microchip PIC32MX110F016D (MIPS32)
+ Microchip PIC32MX110F016D (MPS32 24KC)
config ARCH_CHIP_PIC32MX120F032B
bool "PIC32MX120F032B"
select ARCH_CHIP_PIC32MX1
---help---
- Microchip PIC32MX120F032B (MIPS32)
+ Microchip PIC32MX120F032B (MPS32 24KC)
config ARCH_CHIP_PIC32MX120F032C
bool "PIC32MX120F032C"
select ARCH_CHIP_PIC32MX1
---help---
- Microchip PIC32MX120F032C (MIPS32)
+ Microchip PIC32MX120F032C (MPS32 24KC)
config ARCH_CHIP_PIC32MX120F032D
bool "PIC32MX120F032D"
select ARCH_CHIP_PIC32MX1
---help---
- Microchip PIC32MX120F032D (MIPS32)
+ Microchip PIC32MX120F032D (MPS32 24KC)
config ARCH_CHIP_PIC32MX130F064B
bool "PIC32MX130F064B"
select ARCH_CHIP_PIC32MX1
---help---
- Microchip PIC32MX130F064B (MIPS32)
+ Microchip PIC32MX130F064B (MPS32 24KC)
config ARCH_CHIP_PIC32MX130F064C
bool "PIC32MX130F064C"
select ARCH_CHIP_PIC32MX1
---help---
- Microchip PIC32MX130F064C (MIPS32)
+ Microchip PIC32MX130F064C (MPS32 24KC)
config ARCH_CHIP_PIC32MX130F064D
bool "PIC32MX130F064D"
select ARCH_CHIP_PIC32MX1
---help---
- Microchip PIC32MX130F064D (MIPS32)
+ Microchip PIC32MX130F064D (MPS32 24KC)
config ARCH_CHIP_PIC32MX150F128B
bool "PIC32MX150F128B"
select ARCH_CHIP_PIC32MX1
---help---
- Microchip PIC32MX150F128B (MIPS32)
+ Microchip PIC32MX150F128B (MPS32 24KC)
config ARCH_CHIP_PIC32MX150F128C
bool "PIC32MX150F128C"
select ARCH_CHIP_PIC32MX1
---help---
- Microchip PIC32MX150F128C (MIPS32)
+ Microchip PIC32MX150F128C (MPS32 24KC)
config ARCH_CHIP_PIC32MX150F128D
bool "PIC32MX150F128D"
select ARCH_CHIP_PIC32MX1
---help---
- Microchip PIC32MX150F128D (MIPS32)
+ Microchip PIC32MX150F128D (MPS32 24KC)
config ARCH_CHIP_PIC32MX210F016B
bool "PIC32MX210F016B"
select ARCH_CHIP_PIC32MX2
---help---
- Microchip PIC32MX210F016B (MIPS32)
+ Microchip PIC32MX210F016B (MPS32 24KC)
config ARCH_CHIP_PIC32MX210F016C
bool "PIC32MX210F016C"
select ARCH_CHIP_PIC32MX2
---help---
- Microchip PIC32MX210F016C (MIPS32)
+ Microchip PIC32MX210F016C (MPS32 24KC)
config ARCH_CHIP_PIC32MX210F016D
bool "PIC32MX210F016D"
select ARCH_CHIP_PIC32MX2
---help---
- Microchip PIC32MX210F016D (MIPS32)
+ Microchip PIC32MX210F016D (MPS32 24KC)
config ARCH_CHIP_PIC32MX220F032B
bool "PIC32MX220F032B"
select ARCH_CHIP_PIC32MX2
---help---
- Microchip PIC32MX220F032B (MIPS32)
+ Microchip PIC32MX220F032B (MPS32 24KC)
config ARCH_CHIP_PIC32MX220F032C
bool "PIC32MX220F032C"
select ARCH_CHIP_PIC32MX2
---help---
- Microchip PIC32MX220F032C (MIPS32)
+ Microchip PIC32MX220F032C (MPS32 24KC)
config ARCH_CHIP_PIC32MX220F032D
bool "PIC32MX220F032D"
select ARCH_CHIP_PIC32MX2
---help---
- Microchip PIC32MX220F032D (MIPS32)
+ Microchip PIC32MX220F032D (MPS32 24KC)
config ARCH_CHIP_PIC32MX230F064B
bool "PIC32MX230F064B"
select ARCH_CHIP_PIC32MX2
---help---
- Microchip PIC32MX230F064B (MIPS32)
+ Microchip PIC32MX230F064B (MPS32 24KC)
config ARCH_CHIP_PIC32MX230F064C
bool "PIC32MX230F064C"
select ARCH_CHIP_PIC32MX2
---help---
- Microchip PIC32MX230F064C (MIPS32)
+ Microchip PIC32MX230F064C (MPS32 24KC)
config ARCH_CHIP_PIC32MX230F064D
bool "PIC32MX230F064D"
select ARCH_CHIP_PIC32MX2
---help---
- Microchip PIC32MX230F064D (MIPS32)
+ Microchip PIC32MX230F064D (MPS32 24KC)
config ARCH_CHIP_PIC32MX250F128B
bool "PIC32MX250F128B"
select ARCH_CHIP_PIC32MX2
---help---
- Microchip PIC32MX250F128B (MIPS32)
+ Microchip PIC32MX250F128B (MPS32 24KC)
config ARCH_CHIP_PIC32MX250F128C
bool "PIC32MX250F128C"
select ARCH_CHIP_PIC32MX2
---help---
- Microchip PIC32MX250F128C (MIPS32)
+ Microchip PIC32MX250F128C (MPS32 24KC)
config ARCH_CHIP_PIC32MX250F128D
bool "PIC32MX250F128D"
select ARCH_CHIP_PIC32MX2
---help---
- Microchip PIC32MX250F128D (MIPS32)
+ Microchip PIC32MX250F128D (MPS32 24KC)
config ARCH_CHIP_PIC32MX320F032H
bool "PIC32MX320F032H"
select ARCH_CHIP_PIC32MX3
---help---
- Microchip PIC32MX320F032H (MIPS32)
+ Microchip PIC32MX320F032H (MPS32 24KC)
config ARCH_CHIP_PIC32MX320F064H
bool "PIC32MX320F064H"
select ARCH_CHIP_PIC32MX3
---help---
- Microchip PIC32MX320F064H (MIPS32)
+ Microchip PIC32MX320F064H (MPS32 24KC)
config ARCH_CHIP_PIC32MX320F128H
bool "PIC32MX320F128H"
select ARCH_CHIP_PIC32MX3
---help---
- Microchip PIC32MX320F128H (MIPS32)
+ Microchip PIC32MX320F128H (MPS32 24KC)
config ARCH_CHIP_PIC32MX320F128L
bool "PIC32MX320F128L"
select ARCH_CHIP_PIC32MX3
---help---
- Microchip PIC32MX320F128L (MIPS32)
+ Microchip PIC32MX320F128L (MPS32 24KC)
config ARCH_CHIP_PIC32MX340F128H
bool "PIC32MX340F128H"
select ARCH_CHIP_PIC32MX3
---help---
- Microchip PIC32MX340F128H (MIPS32)
+ Microchip PIC32MX340F128H (MPS32 24KC)
config ARCH_CHIP_PIC32MX340F256H
bool "PIC32MX340F256H"
select ARCH_CHIP_PIC32MX3
---help---
- Microchip PIC32MX340F256H (MIPS32)
+ Microchip PIC32MX340F256H (MPS32 24KC)
config ARCH_CHIP_PIC32MX340F512H
bool "PIC32MX340F512H"
select ARCH_CHIP_PIC32MX3
---help---
- Microchip PIC32MX340F512H (MIPS32)
+ Microchip PIC32MX340F512H (MPS32 24KC)
config ARCH_CHIP_PIC32MX340F128L
bool "PIC32MX340F128L"
select ARCH_CHIP_PIC32MX3
---help---
- Microchip PIC32MX340F128L (MIPS32)
+ Microchip PIC32MX340F128L (MPS32 24KC)
config ARCH_CHIP_PIC32MX360F256L
bool "PIC32MX360F256L"
select ARCH_CHIP_PIC32MX3
---help---
- Microchip PIC32MX360F256L (MIPS32)
+ Microchip PIC32MX360F256L (MPS32 24KC)
config ARCH_CHIP_PIC32MX360F512L
bool "PIC32MX360F512L"
select ARCH_CHIP_PIC32MX3
---help---
- Microchip PIC32MX360F512L (MIPS32)
+ Microchip PIC32MX360F512L (MPS32 24KC)
config ARCH_CHIP_PIC32MX420F032H
bool "PIC32MX420F032H"
select ARCH_CHIP_PIC32MX4
---help---
- Microchip PIC32MX420F032H (MIPS32)
+ Microchip PIC32MX420F032H (MPS32 24KC)
config ARCH_CHIP_PIC32MX440F128H
bool "PIC32MX440F128H"
select ARCH_CHIP_PIC32MX4
---help---
- Microchip PIC32MX440F128H (MIPS32)
+ Microchip PIC32MX440F128H (MPS32 24KC)
config ARCH_CHIP_PIC32MX440F128L
bool "PIC32MX440F128L"
select ARCH_CHIP_PIC32MX4
---help---
- Microchip PIC32MX440F128L (MIPS32)
+ Microchip PIC32MX440F128L (MPS32 24KC)
config ARCH_CHIP_PIC32MX440F256H
bool "PIC32MX440F256H"
select ARCH_CHIP_PIC32MX4
---help---
- Microchip PIC32MX440F256H (MIPS32)
+ Microchip PIC32MX440F256H (MPS32 24KC)
config ARCH_CHIP_PIC32MX440F512H
bool "PIC32MX440F512H"
select ARCH_CHIP_PIC32MX4
---help---
- Microchip PIC32MX440F512H (MIPS32)
+ Microchip PIC32MX440F512H (MPS32 24KC)
config ARCH_CHIP_PIC32MX460F256L
bool "PIC32MX460F256L"
select ARCH_CHIP_PIC32MX4
---help---
- Microchip PIC32MX460F256L (MIPS32)
+ Microchip PIC32MX460F256L (MPS32 24KC)
config ARCH_CHIP_PIC32MX460F512L
bool "PIC32MX460F512L"
select ARCH_CHIP_PIC32MX4
---help---
- Microchip PIC32MX460F512L (MIPS32)
+ Microchip PIC32MX460F512L (MPS32 24KC)
config ARCH_CHIP_PIC32MX534F064H
bool "PIC32MX534F064H"
select ARCH_CHIP_PIC32MX5
---help---
- Microchip PIC32MX534F064H (MIPS32)
+ Microchip PIC32MX534F064H (MPS32 24KC)
config ARCH_CHIP_PIC32MX534F064L
bool "PIC32MX534F064L"
select ARCH_CHIP_PIC32MX5
---help---
- Microchip PIC32MX534F064L (MIPS32)
+ Microchip PIC32MX534F064L (MPS32 24KC)
config ARCH_CHIP_PIC32MX564F064H
bool "PIC32MX564F064H"
select ARCH_CHIP_PIC32MX5
---help---
- Microchip PIC32MX564F064H (MIPS32)
+ Microchip PIC32MX564F064H (MPS32 24KC)
config ARCH_CHIP_PIC32MX564F064L
bool "PIC32MX564F064L"
select ARCH_CHIP_PIC32MX5
---help---
- Microchip PIC32MX564F064L (MIPS32)
+ Microchip PIC32MX564F064L (MPS32 24KC)
config ARCH_CHIP_PIC32MX564F128H
bool "PIC32MX564F128H"
select ARCH_CHIP_PIC32MX5
---help---
- Microchip PIC32MX564F128H (MIPS32)
+ Microchip PIC32MX564F128H (MPS32 24KC)
config ARCH_CHIP_PIC32MX564F128L
bool "PIC32MX564F128L"
select ARCH_CHIP_PIC32MX5
---help---
- Microchip PIC32MX564F128L (MIPS32)
+ Microchip PIC32MX564F128L (MPS32 24KC)
config ARCH_CHIP_PIC32MX575F256H
bool "PIC32MX575F256H"
select ARCH_CHIP_PIC32MX5
---help---
- Microchip PIC32MX575F256H (MIPS32)
+ Microchip PIC32MX575F256H (MPS32 24KC)
config ARCH_CHIP_PIC32MX575F256L
bool "PIC32MX575F256L"
select ARCH_CHIP_PIC32MX5
---help---
- Microchip PIC32MX575F256L (MIPS32)
+ Microchip PIC32MX575F256L (MPS32 24KC)
config ARCH_CHIP_PIC32MX575F512H
bool "PIC32MX575F512H"
select ARCH_CHIP_PIC32MX5
---help---
- Microchip PIC32MX575F512H (MIPS32)
+ Microchip PIC32MX575F512H (MPS32 24KC)
config ARCH_CHIP_PIC32MX575F512L
bool "PIC32MX575F512L"
select ARCH_CHIP_PIC32MX5
---help---
- Microchip PIC32MX575F512L (MIPS32)
+ Microchip PIC32MX575F512L (MPS32 24KC)
config ARCH_CHIP_PIC32MX664F064H
bool "PIC32MX664F064H"
select ARCH_CHIP_PIC32MX6
---help---
- Microchip PIC32MX664F064H (MIPS32)
+ Microchip PIC32MX664F064H (MPS32 24KC)
config ARCH_CHIP_PIC32MX664F064L
bool "PIC32MX664F064L"
select ARCH_CHIP_PIC32MX6
---help---
- Microchip PIC32MX664F064L (MIPS32)
+ Microchip PIC32MX664F064L (MPS32 24KC)
config ARCH_CHIP_PIC32MX664F128H
bool "PIC32MX664F128H"
select ARCH_CHIP_PIC32MX6
---help---
- Microchip PIC32MX664F128H (MIPS32)
+ Microchip PIC32MX664F128H (MPS32 24KC)
config ARCH_CHIP_PIC32MX664F128L
bool "PIC32MX664F128L"
select ARCH_CHIP_PIC32MX6
---help---
- Microchip PIC32MX664F128L (MIPS32)
+ Microchip PIC32MX664F128L (MPS32 24KC)
config ARCH_CHIP_PIC32MX675F256H
bool "PIC32MX675F256H"
select ARCH_CHIP_PIC32MX6
---help---
- Microchip PIC32MX675F256H (MIPS32)
+ Microchip PIC32MX675F256H (MPS32 24KC)
config ARCH_CHIP_PIC32MX675F256L
bool "PIC32MX675F256L"
select ARCH_CHIP_PIC32MX6
---help---
- Microchip PIC32MX675F256L (MIPS32)
+ Microchip PIC32MX675F256L (MPS32 24KC)
config ARCH_CHIP_PIC32MX675F512H
bool "PIC32MX675F512H"
select ARCH_CHIP_PIC32MX6
---help---
- Microchip PIC32MX675F512H (MIPS32)
+ Microchip PIC32MX675F512H (MPS32 24KC)
config ARCH_CHIP_PIC32MX675F512L
bool "PIC32MX675F512L"
select ARCH_CHIP_PIC32MX6
---help---
- Microchip PIC32MX675F512L (MIPS32)
+ Microchip PIC32MX675F512L (MPS32 24KC)
config ARCH_CHIP_PIC32MX695F512H
bool "PIC32MX695F512H"
select ARCH_CHIP_PIC32MX6
---help---
- Microchip PIC32MX695F512H (MIPS32)
+ Microchip PIC32MX695F512H (MPS32 24KC)
config ARCH_CHIP_PIC32MX695F512L
bool "PIC32MX695F512L"
select ARCH_CHIP_PIC32MX6
---help---
- Microchip PIC32MX695F512L (MIPS32)
+ Microchip PIC32MX695F512L (MPS32 24KC)
config ARCH_CHIP_PIC32MX764F128H
bool "PIC32MX764F128H"
select ARCH_CHIP_PIC32MX7
---help---
- Microchip PIC32MX764F128H (MIPS32)
+ Microchip PIC32MX764F128H (MPS32 24KC)
config ARCH_CHIP_PIC32MX764F128L
bool "PIC32MX764F128L"
select ARCH_CHIP_PIC32MX7
---help---
- Microchip PIC32MX764F128L (MIPS32)
+ Microchip PIC32MX764F128L (MPS32 24KC)
config ARCH_CHIP_PIC32MX775F256H
bool "PIC32MX775F256H"
select ARCH_CHIP_PIC32MX7
---help---
- Microchip PIC32MX775F256H (MIPS32)
+ Microchip PIC32MX775F256H (MPS32 24KC)
config ARCH_CHIP_PIC32MX775F256L
bool "PIC32MX775F256L"
select ARCH_CHIP_PIC32MX7
---help---
- Microchip PIC32MX775F256L (MIPS32)
+ Microchip PIC32MX775F256L (MPS32 24KC)
config ARCH_CHIP_PIC32MX775F512H
bool "PIC32MX775F512H"
select ARCH_CHIP_PIC32MX7
---help---
- Microchip PIC32MX775F512H (MIPS32)
+ Microchip PIC32MX775F512H (MPS32 24KC)
config ARCH_CHIP_PIC32MX775F512L
bool "PIC32MX775F512L"
select ARCH_CHIP_PIC32MX7
---help---
- Microchip PIC32MX775F512L (MIPS32)
+ Microchip PIC32MX775F512L (MPS32 24KC)
config ARCH_CHIP_PIC32MX795F512H
bool "PIC32MX795F512H"
select ARCH_CHIP_PIC32MX7
---help---
- Microchip PIC32MX795F512H (MIPS32)
+ Microchip PIC32MX795F512H (MPS32 24KC)
config ARCH_CHIP_PIC32MX795F512L
bool "PIC32MX795F512L"
select ARCH_CHIP_PIC32MX7
---help---
- Microchip PIC32MX795F512L (MIPS32)
+ Microchip PIC32MX795F512L (MPS32 24KC)
endchoice
diff --git a/nuttx/arch/mips/src/pic32mz/Kconfig b/nuttx/arch/mips/src/pic32mz/Kconfig
index 22eeb34dc..76ea47282 100644
--- a/nuttx/arch/mips/src/pic32mz/Kconfig
+++ b/nuttx/arch/mips/src/pic32mz/Kconfig
@@ -14,13 +14,13 @@ config ARCH_CHIP_PIC32MZ2048ECH
bool "PIC32MZ2048ECH"
select ARCH_CHIP_PIC32MZEC
---help---
- Microchip PIC32MZ2048ECH (MIPS32)
+ Microchip PIC32MZ2048ECH (MIPS32 M14K)
config ARCH_CHIP_PIC32MZ2048ECM
- bool "PIC32MZ2048ECH"
+ bool "PIC32MZ2048ECM"
select ARCH_CHIP_PIC32MZEC
---help---
- Microchip PIC32MZ2048ECH (MIPS32)
+ Microchip PIC32MZ2048ECM with Crypto Engine (MIPS32 M14K)
endchoice
diff --git a/nuttx/arch/mips/src/pic32mz/pic32mz-config.h b/nuttx/arch/mips/src/pic32mz/pic32mz-config.h
index c348ddc89..38c49798c 100644
--- a/nuttx/arch/mips/src/pic32mz/pic32mz-config.h
+++ b/nuttx/arch/mips/src/pic32mz/pic32mz-config.h
@@ -427,9 +427,14 @@
# define CONFIG_PIC32MZ_TRCEN 0
#endif
+#ifdef CONFIG_MIPS_MICROMIPS
+# define CONFIG_PIC32MZ_BOOTISA DEVCFG0_BOOT_MICROMIPS
+#else
+# define CONFIG_PIC32MZ_BOOTISA DEVCFG0_BOOT_MIPS32
+#endif
+
/* Not yet configurable settings */
-#define CONFIG_PIC32MZ_BOOTISA DEVCFG0_BOOT_MICROMIPS
#define CONFIG_PIC32MZ_FECCCON DEVCFG0_FECCCON_DISWR
#define CONFIG_PIC32MZ_FSLEEP DEVCFG0_FSLEEP_OFF
#define CONFIG_PIC32MZ_DBGPER DEVCFG0_DBGPER_ALL
diff --git a/nuttx/arch/mips/src/pic32mz/pic32mz-head.S b/nuttx/arch/mips/src/pic32mz/pic32mz-head.S
index a7b04e1f9..1a100d0cf 100644
--- a/nuttx/arch/mips/src/pic32mz/pic32mz-head.S
+++ b/nuttx/arch/mips/src/pic32mz/pic32mz-head.S
@@ -157,14 +157,17 @@
.align 2
.set noreorder
.set nomips16
- .set micromips
.ent __reset
__reset:
- .word 0x10000004 /* 0x0000 */
+
+#ifdef CONFIG_MIPS_MICROMIPS
+ .set micromips
+
+ .word 0x10000004 /* 0x0000 */
/* MIPS32: Branch forward 0x14 bytes */
/* MicroMIPS: ADDI32 $0, $0, 0x0007 (NOP) */
- .word 0x00000000 /* 0x0004 */
+ .word 0x00000000 /* 0x0004 */
/* MIPS32: NOP */
/* MicroMIPS: NOP */
@@ -173,8 +176,6 @@ __reset:
* to here. Otherwise, we branched to __reset_switch_isa
*/
- .set micromips
-
__reset_micromips:
/* Just jump to the startup initialization code */
@@ -188,13 +189,20 @@ __reset_micromips:
* interpreted as a branch to this location.
*/
- .align 2
- .set nomicromips
+ .align 2
+ .set nomicromips
__reset_halt:
b __reset_halt /* 0x0014 <- Branch target */
nop
+#else
+ /* Just jump to the startup initialization code */
+ .set nomicromips
+ la k0, __start
+ jr k0
+ nop
+#endif
.end __reset
/****************************************************************************
@@ -216,7 +224,9 @@ __reset_halt:
.section .gen_excpt,"ax",@progbits
.set noreorder
+#ifdef CONFIG_MIPS_MICROMIPS
.set micromips
+#endif
.ent _gen_exception
_gen_exception:
@@ -246,7 +256,9 @@ _gen_exception:
.section .ebase_excpt,"ax",@progbits
.set noreorder
+#ifdef CONFIG_MIPS_MICROMIPS
.set micromips
+#endif
.ent _ebase_exception
_ebase_exception:
@@ -272,7 +284,9 @@ _ebase_exception:
.section .bev_excpt,"ax",@progbits
.set noreorder
+#ifdef CONFIG_MIPS_MICROMIPS
.set micromips
+#endif
.ent _bev_exception
_bev_exception:
@@ -298,7 +312,9 @@ _bev_exception:
.section .int_excpt,"ax",@progbits
.set noreorder
+#ifdef CONFIG_MIPS_MICROMIPS
.set micromips
+#endif
.ent _int_exception
_int_exception:
@@ -326,7 +342,9 @@ _int_exception:
.section .start, "ax", @progbits
.set noreorder
+#ifdef CONFIG_MIPS_MICROMIPS
.set micromips
+#endif
.ent __start
__start:
@@ -535,7 +553,9 @@ __start:
.section .bev_handler, "ax", @progbits
.set noreorder
+#ifdef CONFIG_MIPS_MICROMIPS
.set micromips
+#endif
.ent _exception_handler
_exception_handler:
@@ -562,7 +582,9 @@ _exception_handler:
.section .int_handler, "ax", @progbits
.set noreorder
+#ifdef CONFIG_MIPS_MICROMIPS
.set micromips
+#endif
.ent _int_handler
_int_handler:
@@ -590,7 +612,9 @@ _int_handler:
#ifdef CONFIG_PIC32MZ_NMIHANDLER
.section .nmi_handler, "ax", @progbits
.set noreorder
+#ifdef CONFIG_MIPS_MICROMIPS
.set micromips
+#endif
.ent _nmi_handler
_nmi_handler:
@@ -622,7 +646,9 @@ _nmi_handler:
****************************************************************************/
.text
+#ifdef CONFIG_MIPS_MICROMIPS
.set micromips
+#endif
.ent __start_nuttx
__start_nuttx:
diff --git a/nuttx/configs/pic32mz-starterkit/nsh/defconfig b/nuttx/configs/pic32mz-starterkit/nsh/defconfig
index 42109198a..955783081 100644
--- a/nuttx/configs/pic32mz-starterkit/nsh/defconfig
+++ b/nuttx/configs/pic32mz-starterkit/nsh/defconfig
@@ -75,7 +75,8 @@ CONFIG_ARCH_CHIP_PIC32MZ=y
CONFIG_ARCH_MIPS32=y
# CONFIG_ARCH_MIPS_24KC is not set
CONFIG_ARCH_MIPS_M14K=y
-CONFIG_ARCH_MIPS_MICROMIPS=y
+CONFIG_ARCH_HAVE_MICROMIPS=y
+CONFIG_MIPS_MICROMIPS=y
#
# MIPS32 Configuration Options