diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2015-02-28 08:22:37 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2015-02-28 08:22:37 -0600 |
commit | 5f990259ede6fc8497557513351d3de7b9c4d6a4 (patch) | |
tree | 149e6eaf744f43d7f3b3a71d23ba0cee402b31fb /nuttx/arch/mips | |
parent | 3c73217003478af0e9680596e600fa50c61a21d8 (diff) | |
download | px4-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
Diffstat (limited to 'nuttx/arch/mips')
-rw-r--r-- | nuttx/arch/mips/Kconfig | 13 | ||||
-rw-r--r-- | nuttx/arch/mips/src/mips32/Toolchain.defs | 13 | ||||
-rw-r--r-- | nuttx/arch/mips/src/mips32/up_syscall0.S | 2 | ||||
-rw-r--r-- | nuttx/arch/mips/src/mips32/vfork.S | 2 | ||||
-rw-r--r-- | nuttx/arch/mips/src/pic32mx/Kconfig | 138 | ||||
-rw-r--r-- | nuttx/arch/mips/src/pic32mz/Kconfig | 6 | ||||
-rw-r--r-- | nuttx/arch/mips/src/pic32mz/pic32mz-config.h | 7 | ||||
-rw-r--r-- | nuttx/arch/mips/src/pic32mz/pic32mz-head.S | 40 |
8 files changed, 135 insertions, 86 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: |