diff options
Diffstat (limited to 'nuttx/arch/mips/src/pic32mz/pic32mz-head.S')
-rw-r--r-- | nuttx/arch/mips/src/pic32mz/pic32mz-head.S | 159 |
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 |