summaryrefslogtreecommitdiff
path: root/nuttx/arch/mips/src/pic32mz/pic32mz-head.S
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/arch/mips/src/pic32mz/pic32mz-head.S')
-rw-r--r--nuttx/arch/mips/src/pic32mz/pic32mz-head.S159
1 files changed, 84 insertions, 75 deletions
diff --git a/nuttx/arch/mips/src/pic32mz/pic32mz-head.S b/nuttx/arch/mips/src/pic32mz/pic32mz-head.S
index 1e1ea244b..b6f089bfd 100644
--- a/nuttx/arch/mips/src/pic32mz/pic32mz-head.S
+++ b/nuttx/arch/mips/src/pic32mz/pic32mz-head.S
@@ -43,8 +43,7 @@
#include <arch/pic32mz/cp0.h>
#include "pic32mz-config.h"
-// REVISIT
-//#include "pic32mz-bmx.h"
+#include "chip/pic32mz-features.h"
#include "pic32mz-excptmacros.h"
/****************************************************************************
@@ -116,7 +115,7 @@
.globl __reset
.global __start
.global halt
- .global devconfig
+ .global devcfg
#if CONFIG_ARCH_INTERRUPTSTACK > 3
.global g_intstackbase
#ifdef CONFIG_PIC32MZ_NESTED_INTERRUPTS
@@ -157,6 +156,7 @@
.section .reset, "ax", @progbits
.align 2
.set noreorder
+ .set nomips16
.set micromips
.ent __reset
@@ -643,79 +643,88 @@ halt:
****************************************************************************/
.section .devcfg, "a"
- .type devconfig, object
-devconfig:
-devconfig3:
-#if defined(CHIP_PIC32MZ1) || defined(CHIP_PIC32MZ2)
-
- .long CONFIG_PIC32MZ_USERID << DEVCFG3_USERID_SHIFT | \
- CONFIG_PIC32MZ_PMDL1WAY << 28 | CONFIG_PIC32MZ_IOL1WAY << 29 | \
- CONFIG_PIC32MZ_USBIDO << 30 | CONFIG_PIC32MZ_VBUSIO << 31 | \
- DEVCFG3_UNUSED
-
-#elif defined(CHIP_PIC32MZ3) || defined(CHIP_PIC32MZ4)
-
- .long CONFIG_PIC32MZ_USERID << DEVCFG3_USERID_SHIFT | \
- DEVCFG3_UNUSED
-
-#elif defined(CHIP_PIC32MZ5) || defined(CHIP_PIC32MZ6) || defined(CHIP_PIC32MZ7)
-
- .long CONFIG_PIC32MZ_USERID << DEVCFG3_USERID_SHIFT | \
- CONFIG_PIC32MZ_SRSSEL << DEVCFG3_FSRSSEL_SHIFT | \
- CONFIG_PIC32MZ_FMIIEN << 24 | CONFIG_PIC32MZ_FETHIO << 25 | \
- CONFIG_PIC32MZ_FCANIO << 26 | CONFIG_PIC32MZ_FSCM1IO << 29 | \
- CONFIG_PIC32MZ_USBIDO << 30 | CONFIG_PIC32MZ_VBUSIO << 31 | \
- DEVCFG3_UNUSED
-
-#endif
-
-devconfig2:
- .long CONFIG_PIC32MZ_PLLIDIV | CONFIG_PIC32MZ_PLLMULT | \
- CONFIG_PIC32MZ_UPLLIDIV | CONFIG_PIC32MZ_PLLODIV | \
- CONFIG_PIC32MZ_FUPLLEN << 15 | DEVCFG2_UNUSED
-
-devconfig1:
-#if defined(CHIP_PIC32MZ1) || defined(CHIP_PIC32MZ2)
-
- .long CONFIG_PIC32MZ_FNOSC | CONFIG_PIC32MZ_FSOSCEN | \
- CONFIG_PIC32MZ_IESO | CONFIG_PIC32MZ_POSCMOD | \
- CONFIG_PIC32MZ_OSCOUT << 10 | \
- CONFIG_PIC32MZ_PBDIV | CONFIG_PIC32MZ_FCKSM | \
- DEVCFG1_WINDIS | CONFIG_PIC32MZ_WDENABLE | \
- DEVCFG1_FWDTWINSZ_75 | DEVCFG1_UNUSED
-
-#else
-
- .long CONFIG_PIC32MZ_FNOSC | CONFIG_PIC32MZ_FSOSCEN | \
- CONFIG_PIC32MZ_IESO | CONFIG_PIC32MZ_POSCMOD | \
- CONFIG_PIC32MZ_OSCOUT << 10 | \
- CONFIG_PIC32MZ_PBDIV | CONFIG_PIC32MZ_FCKSM | \
- CONFIG_PIC32MZ_WDENABLE | DEVCFG1_UNUSED
-
-#endif
-
-devconfig0:
-#if defined(CHIP_PIC32MZ1) || defined(CHIP_PIC32MZ2)
-
- .long CONFIG_PIC32MZ_DEBUGGER << DEVCFG0_DEBUG_SHIFT | \
- DEVCFG0_JTAGEN | \
- CONFIG_PIC32MZ_ICESEL << DEVCFG0_ICESEL_SHIFT | \
- CONFIG_PIC32MZ_PROGFLASHWP << DEVCFG0_PWP_SHIFT | \
- CONFIG_PIC32MZ_BOOTFLASHWP << 24 | \
- CONFIG_PIC32MZ_CODEWP << 28 | \
- DEVCFG0_UNUSED
-
-#else
-
- .long CONFIG_PIC32MZ_DEBUGGER << DEVCFG0_DEBUG_SHIFT | \
- CONFIG_PIC32MZ_ICESEL << 3 | \
- CONFIG_PIC32MZ_PROGFLASHWP << DEVCFG0_PWP_SHIFT | \
- CONFIG_PIC32MZ_BOOTFLASHWP << 24 | \
- CONFIG_PIC32MZ_CODEWP << 28 | \
- DEVCFG0_UNUSED
+ .type devcfg, object
+devcfg:
+devcfg3:
+ .long CONFIG_PIC32MZ_USERID << DEVCFG3_USERID_SHIFT | \
+ CONFIG_PIC32MZ_FMIIEN << DEVCFG3_FMIIEN_SHIFT | \
+ CONFIG_PIC32MZ_FETHIO << DEVCFG3_FETHIO_SHIFT | \
+ CONFIG_PIC32MZ_PGL1WAY << DEVCFG3_PGL1WAY_SHIFT | \
+ CONFIG_PIC32MZ_PMDL1WAY << DEVCFG3_PMDL1WAY_SHIFT | \
+ CONFIG_PIC32MZ_IOL1WAY << DEVCFG3_IOL1WAY_SHIFT | \
+ CONFIG_PIC32MZ_FUSBIDIO << DEVCFG3_FUSBIDIO_SHIFT | \
+ DEVCFG3_RWO
+
+devcfg2:
+ .long CONFIG_PIC32MZ_PLLIDIV | CONFIG_PIC32MZ_FPLLRNG | \
+ CONFIG_PIC32MZ_FPLLICLK | CONFIG_PIC32MZ_PLLMULT | \
+ CONFIG_PIC32MZ_PLLODIV | CONFIG_PIC32MZ_UPLLFSEL | \
+ DEVCFG2_RWO
+
+devcfg1:
+ .long CONFIG_PIC32MZ_FNOSC | CONFIG_PIC32MZ_DMTINV |\
+ CONFIG_PIC32MZ_FSOSCEN | CONFIG_PIC32MZ_IESO | \
+ CONFIG_PIC32MZ_POSCMOD | CONFIG_PIC32MZ_OSCIOFNC | \
+ CONFIG_PIC32MZ_FCKSM | CONFIG_PIC32MZ_WDTPS | \
+ CONFIG_PIC32MZ_WDTSPGM | CONFIG_PIC32MZ_WINDIS | \
+ CONFIG_PIC32MZ_FWDTEN | CONFIG_PIC32MZ_FWDTWINSZ | \
+ CONFIG_PIC32MZ_DMTCNT | CONFIG_PIC32MZ_FSOSCEN | \
+ CONFIG_PIC32MZ_FSOSCEN | CONFIG_PIC32MZ_FDMTEN | \
+ DEVCFG1_RWO
+
+devcfg0:
+ .long CONFIG_PIC32MZ_DEBUGGER | CONFIG_PIC32MZ_JTAGEN | \
+ CONFIG_PIC32MZ_ICESEL | CONFIG_PIC32MZ_TRCEN | \
+ CONFIG_PIC32MZ_BOOTISA | CONFIG_PIC32MZ_FECCCON | \
+ CONFIG_PIC32MZ_FSLEEP | CONFIG_PIC32MZ_DBGPER | \
+ CONFIG_PIC32MZ_EJTAGBEN | DEVCFG0_RW0
+
+ .size devcfg, .-devcfg
+
+/* Every word in the configuration space and sequence space has an
+ * associated alternate word. During device start-up, primary words are
+ * read and if uncorrectable ECC errors are found, the BCFGERR flag is set
+ * and alternate words are used.
+ */
-#endif
- .size devconfig, .-devconfig
+ .section .adevcfg, "a"
+ .type adevcfg, object
+adevcfg:
+adevcfg3:
+ .long CONFIG_PIC32MZ_USERID << DEVCFG3_USERID_SHIFT | \
+ CONFIG_PIC32MZ_FMIIEN << DEVCFG3_FMIIEN_SHIFT | \
+ CONFIG_PIC32MZ_FETHIO << DEVCFG3_FETHIO_SHIFT | \
+ CONFIG_PIC32MZ_PGL1WAY << DEVCFG3_PGL1WAY_SHIFT | \
+ CONFIG_PIC32MZ_PMDL1WAY << DEVCFG3_PMDL1WAY_SHIFT | \
+ CONFIG_PIC32MZ_IOL1WAY << DEVCFG3_IOL1WAY_SHIFT | \
+ CONFIG_PIC32MZ_FUSBIDIO << DEVCFG3_FUSBIDIO_SHIFT | \
+ DEVCFG3_RWO
+
+adevcfg2:
+ .long CONFIG_PIC32MZ_PLLIDIV | CONFIG_PIC32MZ_FPLLRNG | \
+ CONFIG_PIC32MZ_FPLLICLK | CONFIG_PIC32MZ_PLLMULT | \
+ CONFIG_PIC32MZ_PLLODIV | CONFIG_PIC32MZ_UPLLFSEL | \
+ DEVCFG2_RWO
+
+adevcfg1:
+ .long CONFIG_PIC32MZ_FNOSC | CONFIG_PIC32MZ_DMTINV |\
+ CONFIG_PIC32MZ_FSOSCEN | CONFIG_PIC32MZ_IESO | \
+ CONFIG_PIC32MZ_POSCMOD | CONFIG_PIC32MZ_OSCIOFNC | \
+ CONFIG_PIC32MZ_FCKSM | CONFIG_PIC32MZ_WDTPS | \
+ CONFIG_PIC32MZ_WDTSPGM | CONFIG_PIC32MZ_WINDIS | \
+ CONFIG_PIC32MZ_FWDTEN | CONFIG_PIC32MZ_FWDTWINSZ | \
+ CONFIG_PIC32MZ_DMTCNT | CONFIG_PIC32MZ_FSOSCEN | \
+ CONFIG_PIC32MZ_FSOSCEN | CONFIG_PIC32MZ_FDMTEN | \
+ DEVCFG1_RWO
+
+adevcfg0:
+ .long CONFIG_PIC32MZ_DEBUGGER | CONFIG_PIC32MZ_JTAGEN | \
+ CONFIG_PIC32MZ_ICESEL | CONFIG_PIC32MZ_TRCEN | \
+ CONFIG_PIC32MZ_BOOTISA | CONFIG_PIC32MZ_FECCCON | \
+ CONFIG_PIC32MZ_FSLEEP | CONFIG_PIC32MZ_DBGPER | \
+ CONFIG_PIC32MZ_EJTAGBEN | DEVCFG0_RW0
+
+ .size adevcfg, .-adevcfg
/****************************************************************************
* Global Data