diff --git a/arch/mips/include/pic32mx/irq.h b/arch/mips/include/pic32mx/irq.h
index 2ca2992e4e56fa409524c3cbc6ec137def10b6df..269acceb3120d3fff3e5340db1efdf4358e5e825 100755
--- a/arch/mips/include/pic32mx/irq.h
+++ b/arch/mips/include/pic32mx/irq.h
@@ -45,9 +45,56 @@
  ****************************************************************************/
 
 /****************************************************************************
- * Definitions
+ * Pre-processor Definitions
  ****************************************************************************/
 
+#define PIC32MX_IRQ_CT      0 /* Vector: 0, Core Timer Interrupt */
+#define PIC32MX_IRQ_CS0     1 /* Vector: 1, Core Software Interrupt 0 */
+#define PIC32MX_IRQ_CS1     2 /* Vector: 2, Core Software Interrupt 1 */
+#define PIC32MX_IRQ_INT0    3 /* Vector: 3, External Interrupt 0 */
+#define PIC32MX_IRQ_T1      4 /* Vector: 4, Timer 1 */
+#define PIC32MX_IRQ_IC1     5 /* Vector: 5, Input Capture 1 */
+#define PIC32MX_IRQ_OC1     6 /* Vector: 6, Output Compare 1 */
+#define PIC32MX_IRQ_INT1    7 /* Vector: 7, External Interrupt 1 */
+#define PIC32MX_IRQ_T2      8 /* Vector: 8, Timer 2 */
+#define PIC32MX_IRQ_IC2     9 /* Vector: 9, Input Capture 2 */
+#define PIC32MX_IRQ_OC2    10 /* Vector: 10, Output Compare 2 */
+#define PIC32MX_IRQ_INT2   11 /* Vector: 11, External Interrupt 2 */
+#define PIC32MX_IRQ_T3     12 /* Vector: 12, Timer 3 */
+#define PIC32MX_IRQ_IC3    13 /* Vector: 13, Input Capture 3 */
+#define PIC32MX_IRQ_OC3    14 /* Vector: 14, Output Compare 3 */
+#define PIC32MX_IRQ_INT3   15 /* Vector: 15, External Interrupt 3 */
+#define PIC32MX_IRQ_T4     16 /* Vector: 16, Timer 4 */
+#define PIC32MX_IRQ_IC4    17 /* Vector: 17, Input Capture 4 */
+#define PIC32MX_IRQ_OC4    18 /* Vector: 18, Output Compare 4 */
+#define PIC32MX_IRQ_INT4   19 /* Vector: 19, External Interrupt 4 */
+#define PIC32MX_IRQ_T5     20 /* Vector: 20, Timer 5 */
+#define PIC32MX_IRQ_IC5    21 /* Vector: 21, Input Capture 5 */
+#define PIC32MX_IRQ_OC5    22 /* Vector: 22, Output Compare 5 */
+#define PIC32MX_IRQ_SPI1E  23 /* Vector: 23, SPI1 */
+#define PIC32MX_IRQ_U1E    24 /* Vector: 24, UART1 */
+#define PIC32MX_IRQ_I2C1B  25 /* Vector: 25, I2C1 */
+#define PIC32MX_IRQ_CN     26 /* Vector: 26, Input Change Interrupt */
+#define PIC32MX_IRQ_AD1    27 /* Vector: 27, ADC1 Convert Done */
+#define PIC32MX_IRQ_PMP    28 /* Vector: 28, Parallel Master Port */
+#define PIC32MX_IRQ_CMP1   29 /* Vector: 29, Comparator Interrupt */
+#define PIC32MX_IRQ_CMP2   30 /* Vector: 30, Comparator Interrupt */
+#define PIC32MX_IRQ_SPI2E  31 /* Vector: 31, SPI2 */
+#define PIC32MX_IRQ_U2E    32 /* Vector: 32, UART2 */
+#define PIC32MX_IRQ_I2C2B  33 /* Vector: 33, I2C2 */
+#define PIC32MX_IRQ_FSCM   34 /* Vector: 34, Fail-Safe Clock Monitor */
+#define PIC32MX_IRQ_RTCC   35 /* Vector: 35, Real-Time Clock and Calendar */
+#define PIC32MX_IRQ_DMA0   36 /* Vector: 36, DMA Channel 0 */
+#define PIC32MX_IRQ_DMA1   37 /* Vector: 37, DMA Channel 1 */
+#define PIC32MX_IRQ_DMA2   38 /* Vector: 38, DMA Channel 2 */
+#define PIC32MX_IRQ_DMA3   39 /* Vector: 39, DMA Channel 3 */
+                              /* Vectors 40-43: Not used */
+#define PIC32MX_IRQ_FCE    44 /* Vector: 44, Flash Control Event */
+#define PIC32MX_IRQ_USB    45 /* Vector: 45, USB */
+
+#define PIC32MX_IRQ_BAD    46 /* Not a real IRQ number */
+#define NR_IRQS            46
+
 /****************************************************************************
  * Public Types
  ****************************************************************************/
diff --git a/arch/mips/src/pic32mx/chip.h b/arch/mips/src/pic32mx/chip.h
index fdd38412750dd2712f7c9e444d46ea1228e9f7d1..8f9b9f32ff3bfc76f7257aec6bcbf3c6674b1228 100755
--- a/arch/mips/src/pic32mx/chip.h
+++ b/arch/mips/src/pic32mx/chip.h
@@ -47,6 +47,401 @@
  ****************************************************************************/
 /* Configuration ************************************************************/
 
+#if defined(CONFIG_ARCH_CHIP_PIC32MX320F032H)
+#  define CHIP_PIC32MX3     1
+#  undef  CHIP_PIC32MX4
+#  define CHIP_NPINS        64  /* Package PT, MR */
+#  define CHIP_MHZ          40
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 32
+#  define CHIP_DATAMEM_KB   8
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     0
+#  define CHIP_NUSBDMACHAN  0
+#  define CHIP_VREG
+#  undef  CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         2
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX320F064H)
+#  define CHIP_PIC32MX3     1
+#  undef  CHIP_PIC32MX4
+#  define CHIP_NPINS        64  /* Package PT, MR */
+#  define CHIP_MHZ          80
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 64
+#  define CHIP_DATAMEM_KB   16
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     0
+#  define CHIP_NUSBDMACHAN  0
+#  define CHIP_VREG
+#  undef  CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         2
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX320F128H)
+#  define CHIP_PIC32MX3     1
+#  undef  CHIP_PIC32MX4
+#  define CHIP_NPINS        64  /* Package PT, MR */
+#  define CHIP_MHZ          80
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 128
+#  define CHIP_DATAMEM_KB   16
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     0
+#  define CHIP_NUSBDMACHAN  0
+#  define CHIP_VREG
+#  undef  CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         2
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX340F128H)
+#  define CHIP_PIC32MX3     1
+#  undef  CHIP_PIC32MX4
+#  define CHIP_NPINS        64  /* Package PT, MR */
+#  define CHIP_MHZ          80
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 128
+#  define CHIP_DATAMEM_KB   32
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     4
+#  define CHIP_NUSBDMACHAN  0
+#  define CHIP_VREG
+#  undef  CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         2
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX340F256H)
+#  define CHIP_PIC32MX3     1
+#  undef  CHIP_PIC32MX4
+#  define CHIP_NPINS        64  /* Package PT, MR */
+#  define CHIP_MHZ          80
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 256
+#  define CHIP_DATAMEM_KB   32
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     4
+#  define CHIP_NUSBDMACHAN  0
+#  define CHIP_VREG
+#  undef  CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         2
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX340F512H)
+#  define CHIP_PIC32MX3     1
+#  undef  CHIP_PIC32MX4
+#  define CHIP_NPINS        64  /* Package PT, MR */
+#  define CHIP_MHZ          80
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 512
+#  define CHIP_DATAMEM_KB   32
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     4
+#  define CHIP_NUSBDMACHAN  0
+#  define CHIP_VREG
+#  undef  CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         2
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX320F128L)
+#  define CHIP_PIC32MX3     1
+#  undef  CHIP_PIC32MX4
+#  define CHIP_NPINS        100 /* Package PT=100 BG=121 */
+#  define CHIP_MHZ          80
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 128
+#  define CHIP_DATAMEM_KB   16
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     0
+#  define CHIP_NUSBDMACHAN  0
+#  define CHIP_VREG
+#  undef  CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         2
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX340F128L)
+#  undef  CHIP_PIC32MX3
+#  define CHIP_PIC32MX4     1
+#  define CHIP_NPINS        100 /* Package PT=100 BG=121 */
+#  define CHIP_MHZ          80
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 128
+#  define CHIP_DATAMEM_KB   32
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     4
+#  define CHIP_NUSBDMACHAN  0
+#  define CHIP_VREG
+#  undef  CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         2
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX360F256L)
+#  undef  CHIP_PIC32MX3
+#  define CHIP_PIC32MX4     1
+#  define CHIP_NPINS        100 /* Package PT=100 BG=121 */
+#  define CHIP_MHZ          80
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 256
+#  define CHIP_DATAMEM_KB   32
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     4
+#  define CHIP_NUSBDMACHAN  0
+#  define CHIP_VREG
+#  define CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         2
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX360F512L)
+#  undef  CHIP_PIC32MX3
+#  define CHIP_PIC32MX4     1
+#  define CHIP_NPINS        100 /* Package PT=100 BG=121 */
+#  define CHIP_MHZ          80
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 512
+#  define CHIP_DATAMEM_KB   32
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     4
+#  define CHIP_NUSBDMACHAN  0
+#  define CHIP_VREG
+#  define CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         2
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX420F032H)
+#  undef  CHIP_PIC32MX3
+#  define CHIP_PIC32MX4     1
+#  define CHIP_NPINS        64  /* Package PT, MR */
+#  define CHIP_MHZ          40
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 32
+#  define CHIP_DATAMEM_KB   8
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     0
+#  define CHIP_NUSBDMACHAN  2
+#  define CHIP_VREG
+#  undef  CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         1
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX440F128H)
+#  undef  CHIP_PIC32MX3
+#  define CHIP_PIC32MX4     1
+#  define CHIP_NPINS        64  /* Package PT, MR */
+#  define CHIP_MHZ          40
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 128
+#  define CHIP_DATAMEM_KB   32
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     4
+#  define CHIP_NUSBDMACHAN  2
+#  define CHIP_VREG
+#  undef  CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         1
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX440F256H)
+#  undef  CHIP_PIC32MX3
+#  define CHIP_PIC32MX4     1
+#  define CHIP_NPINS        64  /* Package PT, MR */
+#  define CHIP_MHZ          80
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 256
+#  define CHIP_DATAMEM_KB   32
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     4
+#  define CHIP_NUSBDMACHAN  2
+#  define CHIP_VREG
+#  undef  CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         1
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX440F512H)
+#  undef  CHIP_PIC32MX3
+#  define CHIP_PIC32MX4     1
+#  define CHIP_NPINS        64  /* Package PT, MR */
+#  define CHIP_MHZ          80
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 512
+#  define CHIP_DATAMEM_KB   32
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     4
+#  define CHIP_NUSBDMACHAN  2
+#  define CHIP_VREG
+#  undef  CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         1
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX440F128L)
+#  undef  CHIP_PIC32MX3
+#  define CHIP_PIC32MX4     1
+#  define CHIP_NPINS        100 /* Package PT=100 BG=121 */
+#  define CHIP_MHZ          80
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 128
+#  define CHIP_DATAMEM_KB   32
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     4
+#  define CHIP_NUSBDMACHAN  2
+#  define CHIP_VREG
+#  undef  CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         2
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX460F256L)
+#  undef  CHIP_PIC32MX3
+#  define CHIP_PIC32MX4     1
+#  define CHIP_NPINS        100 /* Package PT=100 BG=121 */
+#  define CHIP_MHZ          80
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 256
+#  define CHIP_DATAMEM_KB   32
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     4
+#  define CHIP_NUSBDMACHAN  2
+#  define CHIP_VREG
+#  define CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         2
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#elif defined(CONFIG_ARCH_CHIP_PIC32MX460F512L)
+#  undef  CHIP_PIC32MX3
+#  define CHIP_PIC32MX4     1
+#  define CHIP_NPINS        100 /* Package PT=100 BG=121 */
+#  define CHIP_MHZ          80
+#  define CHIP_BOOTFLASH_KB 12
+#  define CHIP_PROGFLASH_KB 512
+#  define CHIP_DATAMEM_KB   32
+#  define CHIP_NTIMERS      5
+#  define CHIP_NCAPTURE     5
+#  define CHIP_NCOMPARE     5
+#  define CHIP_NDMACHAN     4
+#  define CHIP_NUSBDMACHAN  2
+#  define CHIP_VREG
+#  define CHIP_TRACE
+#  define CHIP_NEUARTS      2
+#  define CHIP_NSPI         2
+#  define CHIP_NI2C         2
+#  define CHIP_NADC10       16
+#  define CHIP_NCOMPARATORS 2
+#  define CHIP_PMP
+#  define CHIP_PSP
+#  define CHIP_JTAH
+#else
+#  error "Unrecognized PIC32 device
+#endif
+
 /****************************************************************************
  * Public Types
  ****************************************************************************/
diff --git a/arch/mips/src/pic32mx/pic32mx-devcfg.h b/arch/mips/src/pic32mx/pic32mx-devcfg.h
new file mode 100755
index 0000000000000000000000000000000000000000..b5b9127bbce3ec01bf3e5300e47f3e194f5100b9
--- /dev/null
+++ b/arch/mips/src/pic32mx/pic32mx-devcfg.h
@@ -0,0 +1,230 @@
+/****************************************************************************
+ * arch/mips/src/pic32mx/pic32mx-devcfg.h
+ *
+ *   Copyright (C) 2011 Gregory Nutt. All rights reserved.
+ *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+#ifndef __ARCH_MIPS_SRC_PIC32MX_PIC32MX_DEVCFG_H
+#define __ARCH_MIPS_SRC_PIC32MX_PIC32MX_DEVCFG_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include "pic32mx-memorymap.h"
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+/* Register Offsets *********************************************************/
+
+#define PIC32MX_DEVCFG3_OFFSET    0x0000 /* Device configuration word 3 */
+#define PIC32MX_DEVCFG2_OFFSET    0x0004 /* Device configuration word 2 */
+#define PIC32MX_DEVCFG1_OFFSET    0x0008 /* Device configuration word 1 */
+#define PIC32MX_DEVCFG0_OFFSET    0x000c /* Device configuration word 0 */
+
+/* Register Addresses *******************************************************/
+
+#define PIC32MX_DEVCFG3           (PIC32MX_DEVCFG_K1BASE+PIC32MX_DEVCFG3_OFFSET)
+#define PIC32MX_DEVCFG2           (PIC32MX_DEVCFG_K1BASE+PIC32MX_DEVCFG2_OFFSET)
+#define PIC32MX_DEVCFG1           (PIC32MX_DEVCFG_K1BASE+PIC32MX_DEVCFG1_OFFSET)
+#define PIC32MX_DEVCFG0           (PIC32MX_DEVCFG_K1BASE+PIC32MX_DEVCFG0_OFFSET)
+
+/* Register Bit-Field Definitions *******************************************/
+
+/* Device configuration word 3 */
+
+#define DEVCFG3_USERID(n)         (1 << (n))
+#define DEVCFG3_USERID0           (1 << 0)  /* Bit 0:  xx */
+#define DEVCFG3_USERID1           (1 << 1)  /* Bit 1:  xx */
+#define DEVCFG3_USERID2           (1 << 2)  /* Bit 2:  xx */
+#define DEVCFG3_USERID3           (1 << 3)  /* Bit 3:  xx */
+#define DEVCFG3_USERID4           (1 << 4)  /* Bit 4:  xx */
+#define DEVCFG3_USERID5           (1 << 5)  /* Bit 5:  xx */
+#define DEVCFG3_USERID6           (1 << 6)  /* Bit 6:  xx */
+#define DEVCFG3_USERID7           (1 << 7)  /* Bit 7:  xx */
+#define DEVCFG3_USERID8           (1 << 8)  /* Bit 8:  xx */
+#define DEVCFG3_USERID9           (1 << 9)  /* Bit 9:  xx */
+#define DEVCFG3_USERID10          (1 << 10) /* Bit 10: xx */
+#define DEVCFG3_USERID11          (1 << 11) /* Bit 11: xx */
+#define DEVCFG3_USERID12          (1 << 12) /* Bit 12: xx */
+#define DEVCFG3_USERID13          (1 << 13) /* Bit 13: xx */
+#define DEVCFG3_USERID14          (1 << 14) /* Bit 14: xx */
+#define DEVCFG3_USERID15          (1 << 15) /* Bit 15: xx */
+
+/* Device configuration word 2 */
+
+#define DEVCFG2_FPLLIDIV_SHIFT    (0)       /* Bits 0-2: PLL input divider value */
+#define DEVCFG2_FPLLIDIV_MASK     (7 << DEVCFG2_FPLLIDIV_SHIFT)
+#  define DEVCFG2_FPLLIDIV_DIV1   (0 << DEVCFG2_FPLLIDIV_SHIFT)
+#  define DEVCFG2_FPLLIDIV_DIV2   (1 << DEVCFG2_FPLLIDIV_SHIFT)
+#  define DEVCFG2_FPLLIDIV_DIV3   (2 << DEVCFG2_FPLLIDIV_SHIFT)
+#  define DEVCFG2_FPLLIDIV_DIV4   (3 << DEVCFG2_FPLLIDIV_SHIFT)
+#  define DEVCFG2_FPLLIDIV_DIV5   (4 << DEVCFG2_FPLLIDIV_SHIFT)
+#  define DEVCFG2_FPLLIDIV_DIV6   (5 << DEVCFG2_FPLLIDIV_SHIFT)
+#  define DEVCFG2_FPLLIDIV_DIV10  (6 << DEVCFG2_FPLLIDIV_SHIFT)
+#  define DEVCFG2_FPLLIDIV_DIV12  (7 << DEVCFG2_FPLLIDIV_SHIFT)
+#define DEVCFG2_FPLLMULT_SHIFT    (4)       /* Bits 4-6: Initial PLL multiplier value */
+#define DEVCFG2_FPLLMULT_MASK     (7 << DEVCFG2_FPLLMULT_SHIFT)
+#  define DEVCFG2_FPLLMULT_MUL15  (0 << DEVCFG2_FPLLMULT_SHIFT)
+#  define DEVCFG2_FPLLMULT_MUL16  (1 << DEVCFG2_FPLLMULT_SHIFT)
+#  define DEVCFG2_FPLLMULT_MUL17  (2 << DEVCFG2_FPLLMULT_SHIFT)
+#  define DEVCFG2_FPLLMULT_MUL18  (3 << DEVCFG2_FPLLMULT_SHIFT)
+#  define DEVCFG2_FPLLMULT_MUL19  (4 << DEVCFG2_FPLLMULT_SHIFT)
+#  define DEVCFG2_FPLLMULT_MUL20  (5 << DEVCFG2_FPLLMULT_SHIFT)
+#  define DEVCFG2_FPLLMULT_MUL21  (6 << DEVCFG2_FPLLMULT_SHIFT)
+#  define DEVCFG2_FPLLMULT_MUL24  (7 << DEVCFG2_FPLLMULT_SHIFT)
+#define DEVCFG2_FUPLLIDIV_SHIFT   (8)       /* Bits 8-10: PLL input divider */
+#define DEVCFG2_FUPLLIDIV_MASK    (7 << DEVCFG2_FUPLLIDIV_SHIFT)
+#  define DEVCFG2_FUPLLIDIV_DIV1  (0 << DEVCFG2_FUPLLIDIV_SHIFT)
+#  define DEVCFG2_FUPLLIDIV_DIV2  (1 << DEVCFG2_FUPLLIDIV_SHIFT)
+#  define DEVCFG2_FUPLLIDIV_DIV3  (2 << DEVCFG2_FUPLLIDIV_SHIFT)
+#  define DEVCFG2_FUPLLIDIV_DIV4  (3 << DEVCFG2_FUPLLIDIV_SHIFT)
+#  define DEVCFG2_FUPLLIDIV_DIV5  (4 << DEVCFG2_FUPLLIDIV_SHIFT)
+#  define DEVCFG2_FUPLLIDIV_DIV6  (5 << DEVCFG2_FUPLLIDIV_SHIFT)
+#  define DEVCFG2_FUPLLIDIV_DIV10 (6 << DEVCFG2_FUPLLIDIV_SHIFT)
+#  define DEVCFG2_FUPLLIDIV_DIV12 (7 << DEVCFG2_FUPLLIDIV_SHIFT)
+#define DEVCFG2_FUPLLEN           (1 << 15) /* Bit 15: USB PLL enable */
+#define DEVCFG2_FPLLODIV_SHIFT    (16)      /* Bits 16-18: Default postscaler for PLL bits */
+#define DEVCFG2_FPLLODIV_MASK     (7 << DEVCFG2_FPLLODIV_SHIFT)
+#  define DEVCFG2_FPLLODIV_DIV1   (0 << DEVCFG2_FPLLODIV_SHIFT)
+#  define DEVCFG2_FPLLODIV_DIV2   (1 << DEVCFG2_FPLLODIV_SHIFT)
+#  define DEVCFG2_FPLLODIV_DIV4   (2 << DEVCFG2_FPLLODIV_SHIFT)
+#  define DEVCFG2_FPLLODIV_DIV8   (3 << DEVCFG2_FPLLODIV_SHIFT)
+#  define DEVCFG2_FPLLODIV_DIV16  (4 << DEVCFG2_FPLLODIV_SHIFT)
+#  define DEVCFG2_FPLLODIV_DIV32  (5 << DEVCFG2_FPLLODIV_SHIFT)
+#  define DEVCFG2_FPLLODIV_DIV64  (6 << DEVCFG2_FPLLODIV_SHIFT)
+#  define DEVCFG2_FPLLODIV_DIV256 (7 << DEVCFG2_FPLLODIV_SHIFT)
+
+/* Device configuration word 1 */
+
+#define DEVCFG1_FNOSC_SHIFT       (0)       /* Bits 0-2: Oscillator xelection */
+#define DEVCFG1_FNOSC_MASK        (7 << DEVCFG1_FNOSC_SHIFT)
+#  define DEVCFG1_FNOSC_ FRC      (0 << DEVCFG1_FNOSC_SHIFT) /* FRC oscillator */
+#  define DEVCFG1_FNOSC_ FRCPLL   (1 << DEVCFG1_FNOSC_SHIFT) /* FRC w/PLL module */
+#  define DEVCFG1_FNOSC_ POSC     (2 << DEVCFG1_FNOSC_SHIFT) /* Primary oscillator */
+#  define DEVCFG1_FNOSC_ POSCPLL  (3 << DEVCFG1_FNOSC_SHIFT) /* Primary oscillator w/PLL */
+#  define DEVCFG1_FNOSC_ SOSC     (4 << DEVCFG1_FNOSC_SHIFT) /* Secondary oscillator */
+#  define DEVCFG1_FNOSC_ LPRC     (5 << DEVCFG1_FNOSC_SHIFT) /* Low power RC oscillator */
+#  define DEVCFG1_FNOSC_ FRCDIV   (7 << DEVCFG1_FNOSC_SHIFT) /* FRC oscillator with FRCDIV */
+#define DEVCFG1_FSOSCEN           (1 << 5)  /* Bit 5: Secondary oscillator (sosc) enable bit */
+#define DEVCFG1_IESO              (1 << 7)  /* Bit 7: Internal external switch over */
+#define DEVCFG1_POSCMOD_SHIFT     (8)       /* Bits 8-9: Primary oscillator (posc) configuration */
+#define DEVCFG1_POSCMOD_MASK      (3 << DEVCFG1_POSCMOD_SHIFT)
+#  define DEVCFG1_POSCMOD_ EC     (0 << DEVCFG1_POSCMOD_SHIFT) /* EC mode */
+#  define DEVCFG1_POSCMOD_ XT     (1 << DEVCFG1_POSCMOD_SHIFT) /* XT mode */
+#  define DEVCFG1_POSCMOD_ HS     (2 << DEVCFG1_POSCMOD_SHIFT) /* HS mode */
+#  define DEVCFG1_POSCMOD_DIS     (3 << DEVCFG1_POSCMOD_SHIFT) /* Primary Oscillator disabled */
+#define DEVCFG1_OSCIOFNC          (1 << 10) /* Bit 10: CLKO (clock-out) enable configuration */
+#define DEVCFG1_FPBDIV_SHIFT      (12)      /* Bits 12-13: Peripheral bus clock divisor default value */
+#define DEVCFG1_FPBDIV_MASK       (3 << DEVCFG1_FPBDIV_SHIFT)
+#  define DEVCFG1_FPBDIV_DIV1     (0 << DEVCFG1_FPBDIV_SHIFT) /* PBCLK is SYSCLK/1 */
+#  define DEVCFG1_FPBDIV_DIV2     (1 << DEVCFG1_FPBDIV_SHIFT) /* PBCLK is SYSCLK/2 */
+#  define DEVCFG1_FPBDIV_DIV4     (2 << DEVCFG1_FPBDIV_SHIFT) /* PBCLK is SYSCLK/4 */
+#  define DEVCFG1_FPBDIV_DIV8     (3 << DEVCFG1_FPBDIV_SHIFT) /* PBCLK is SYSCLK /8 */
+#define DEVCFG1_FCKSM_SHIFT       (14)      /* Bits 14-15: Clock switching and monitor selection configuration */
+#define DEVCFG1_FCKSM_MASK        (3 << DEVCFG1_FCKSM_SHIFT)
+#  define DEVCFG1_FCKSM_BOTH      (0 << DEVCFG1_FCKSM_SHIFT) /* Clock switching and FSCM are enabled */
+#  define DEVCFG1_FCKSM_CSONLY    (1 << DEVCFG1_FCKSM_SHIFT) /* Clock switching is enabled, FSCM is disabled */
+#  define DEVCFG1_FCKSM_NONE      (2 << DEVCFG1_FCKSM_SHIFT) /* Clock switching and FSCM are disabled */
+#define DEVCFG1_WDTPS_SHIFT       (16)      /* Bits 16-20: WDT postscaler select */
+#define DEVCFG1_WDTPS_MASK        (31 << DEVCFG1_WDTPS_SHIFT)
+#  define DEVCFG1_WDTPS_1         (0 << DEVCFG1_WDTPS_SHIFT) /* 1:1 */
+#  define DEVCFG1_WDTPS_2         (1 << DEVCFG1_WDTPS_SHIFT) /* 1:2 */
+#  define DEVCFG1_WDTPS_4         (2 << DEVCFG1_WDTPS_SHIFT) /* 1:4 */
+#  define DEVCFG1_WDTPS_8         (3 << DEVCFG1_WDTPS_SHIFT) /* 1:8 */
+#  define DEVCFG1_WDTPS_16        (4 << DEVCFG1_WDTPS_SHIFT) /* 1:16 */
+#  define DEVCFG1_WDTPS_32        (5 << DEVCFG1_WDTPS_SHIFT) /* 1:32 */
+#  define DEVCFG1_WDTPS_64        (6 << DEVCFG1_WDTPS_SHIFT) /* 1:64 */
+#  define DEVCFG1_WDTPS_128       (7 << DEVCFG1_WDTPS_SHIFT) /* 1:128 */
+#  define DEVCFG1_WDTPS_256       (8 << DEVCFG1_WDTPS_SHIFT) /* 1:256 */
+#  define DEVCFG1_WDTPS_512       (9 << DEVCFG1_WDTPS_SHIFT) /* 1:512 */
+#  define DEVCFG1_WDTPS_1024      (10 << DEVCFG1_WDTPS_SHIFT) /* 1:1024 */
+#  define DEVCFG1_WDTPS_2048      (11 << DEVCFG1_WDTPS_SHIFT) /* 1:2048 */
+#  define DEVCFG1_WDTPS_4096      (12 << DEVCFG1_WDTPS_SHIFT) /* 1:4096 */
+#  define DEVCFG1_WDTPS_8192      (13 << DEVCFG1_WDTPS_SHIFT) /* 1:8192 */
+#  define DEVCFG1_WDTPS_16384     (14 << DEVCFG1_WDTPS_SHIFT) /* 1:16384 */
+#  define DEVCFG1_WDTPS_32768     (15 << DEVCFG1_WDTPS_SHIFT) /* 1:32768 */
+#  define DEVCFG1_WDTPS_65536     (16 << DEVCFG1_WDTPS_SHIFT) /* 1:65536 */
+#  define DEVCFG1_WDTPS_131072    (17 << DEVCFG1_WDTPS_SHIFT) /* 1:131072 */
+#  define DEVCFG1_WDTPS_262144    (18 << DEVCFG1_WDTPS_SHIFT) /* 1:262144 */
+#  define DEVCFG1_WDTPS_524288    (19 << DEVCFG1_WDTPS_SHIFT) /* 1:524288 */
+#  define DEVCFG1_WDTPS_1048576   (20 << DEVCFG1_WDTPS_SHIFT) /* 1:1048576 */
+#define DEVCFG1_FWDTEN            (1 << 23) /* Bit 23: WDT enable */
+
+/* Device configuration word 0 */
+
+
+#define DEVCFG0_DEBUG_SHIFT       (0)      /* Bits 0-1: xx */
+#define DEVCFG0_DEBUG_MASK        (3 << DEVCFG0_DEBUG_SHIFT)
+#define DEVCFG0_ICESEL            (1 << 3)  /* Bit 3:  xx */
+#define DEVCFG0_PWP12             (1 << 12) /* Bit 12:  xx */
+#define DEVCFG0_PWP13             (1 << 13) /* Bit 13:  xx */
+#define DEVCFG0_PWP14             (1 << 14) /* Bit 14:  xx */
+#define DEVCFG0_PWP15             (1 << 15) /* Bit 15:  xx */
+#define DEVCFG0_PWP16             (1 << 16) /* Bit 16:  xx */
+#define DEVCFG0_PWP17             (1 << 17) /* Bit 17:  xx */
+#define DEVCFG0_PWP18             (1 << 18) /* Bit 18:  xx */
+#define DEVCFG0_PWP19             (1 << 19) /* Bit 19:  xx */
+#define DEVCFG0_BWP               (1 << 24) /* Bit 24:  xx */
+#define DEVCFG0_CP                (1 << 28) /* Bit 28:  xx */
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+/****************************************************************************
+ * Inline Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#ifdef __cplusplus
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+#undef EXTERN
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __ASSEMBLY__ */
+#endif /* __ARCH_MIPS_SRC_PIC32MX_PIC32MX_DEVCFG_H */
diff --git a/arch/mips/src/pic32mx/pic32mx-memorymap.h b/arch/mips/src/pic32mx/pic32mx-memorymap.h
new file mode 100755
index 0000000000000000000000000000000000000000..544fc5da2cad9e82b1a2ab39d5e7295edd8d8dfe
--- /dev/null
+++ b/arch/mips/src/pic32mx/pic32mx-memorymap.h
@@ -0,0 +1,225 @@
+/****************************************************************************
+ * arch/mips/src/pic32mx/pic32mx-memorymap.h
+ *
+ *   Copyright (C) 2011 Gregory Nutt. All rights reserved.
+ *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+#ifndef __ARCH_MIPS_SRC_PIC32MX_PIC32MX_MEMORYMAP_H
+#define __ARCH_MIPS_SRC_PIC32MX_PIC32MX_MEMORYMAP_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include "mips32-memorymap.h"
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+/* Physical Memory Map ******************************************************/
+
+#define PIC32MX_DATAMEM_PBASE     0x00000000 /* Size depends on CHIP_DATAMEM_KB */
+#define PIC32MX_PROGFLASH_PBASE   0x1d000000 /* Size depends on CHIP_PROGFLASH_KB */
+#define PIC32MX_SFR_PBASE         0x1f800000 /* Special function registers */
+#define PIC32MX_BOOTFLASH_PBASE   0x1fc00000 /* Size depends on CHIP_BOOTFLASH_KB */
+#define PIC32MX_DEVCFG_PBASE      0x1fc02ff0 /* Device configuration registers */
+
+/* Virtual Memory Map *******************************************************/
+
+#define PIC32MX_DATAMEM_K0BASE    (KSEG0_BASE + PIC32MX_DATAMEM_PBASE)
+#define PIC32MX_PROGFLASH_K0BASE  (KSEG0_BASE + PIC32MX_PROGFLASH_PBASE)
+#define PIC32MX_BOOTFLASH_K0BASE  (KSEG0_BASE + PIC32MX_BOOTFLASH_PBASE)
+#define PIC32MX_DEVCFG_K0BASE     (KSEG0_BASE + PIC32MX_DEVCFG_PBASE)
+
+#define PIC32MX_DATAMEM_K1BASE    (KSEG1_BASE + PIC32MX_DATAMEM_PBASE)
+#define PIC32MX_PROGFLASH_K1BASE  (KSEG1_BASE + PIC32MX_PROGFLASH_PBASE)
+#define PIC32MX_SFR_K1BASE        (KSEG1_BASE + PIC32MX_SFR_PBASE)
+#define PIC32MX_BOOTFLASH_K1BASE  (KSEG1_BASE + PIC32MX_BOOTFLASH_PBASE)
+#define PIC32MX_DEVCFG_K1BASE     (KSEG1_BASE + PIC32MX_DEVCFG_PBASE)
+
+/* Register Base Addresses **************************************************/
+
+/* Watchdog Register Base Address */
+
+#define PIC32MX_WDT_K1BASE        (PIC32MX_SFR_K1BASE + 0x00000000)
+
+/* RTCC Register Base Address */
+
+#define PIC32MX_RTCC_K1BASE       (PIC32MX_SFR_K1BASE + 0x00000200)
+
+/* Timer 1-5 Register Base Addresses */
+
+#define PIC32MX_TIMER1_K1BASE     (PIC32MX_SFR_K1BASE + 0x00000600)
+#define PIC32MX_TIMER2_K1BASE     (PIC32MX_SFR_K1BASE + 0x00000800)
+#define PIC32MX_TIMER3_K1BASE     (PIC32MX_SFR_K1BASE + 0x00000a00)
+#define PIC32MX_TIMER4_K1BASE     (PIC32MX_SFR_K1BASE + 0x00000c00)
+#define PIC32MX_TIMER5_K1BASE     (PIC32MX_SFR_K1BASE + 0x00000e00)
+
+/* Input Capture 1-5 Register Base Addresses */
+
+#define PIC32MX_INCAP1_K1BASE     (PIC32MX_SFR_K1BASE + 0x00002000)
+#define PIC32MX_INCAP2_K1BASE     (PIC32MX_SFR_K1BASE + 0x00002200)
+#define PIC32MX_INCAP3_K1BASE     (PIC32MX_SFR_K1BASE + 0x00002400)
+#define PIC32MX_INCAP4_K1BASE     (PIC32MX_SFR_K1BASE + 0x00002600)
+#define PIC32MX_INCAP5_K1BASE     (PIC32MX_SFR_K1BASE + 0x00002800)
+
+/* Output Compare 1-5 Register Base Addresses */
+
+#define PIC32MX_OUTCMP1_K1BASE    (PIC32MX_SFR_K1BASE + 0x00003000)
+#define PIC32MX_OUTCMP2_K1BASE    (PIC32MX_SFR_K1BASE + 0x00003200)
+#define PIC32MX_OUTCMP3_K1BASE    (PIC32MX_SFR_K1BASE + 0x00003400)
+#define PIC32MX_OUTCMP4_K1BASE    (PIC32MX_SFR_K1BASE + 0x00003600)
+#define PIC32MX_OUTCMP5_K1BASE    (PIC32MX_SFR_K1BASE + 0x00003800)
+
+/* I2C 1-2 Register Base Addresses */
+
+#define PIC32MX_I2C1_K1BASE       (PIC32MX_SFR_K1BASE + 0x00005000)
+#define PIC32MX_I2C2_K1BASE       (PIC32MX_SFR_K1BASE + 0x00005200)
+
+/* SPI 1-2 Register Base Addresses */
+
+#define PIC32MX_SPI1_K1BASE       (PIC32MX_SFR_K1BASE + 0x00005800)
+#define PIC32MX_SPI2_K1BASE       (PIC32MX_SFR_K1BASE + 0x00005a00)
+
+/* UART 1-2 Register Base Addresses */
+
+#define PIC32MX_UART1_K1BASE      (PIC32MX_SFR_K1BASE + 0x00006000)
+#define PIC32MX_UART2_K1BASE      (PIC32MX_SFR_K1BASE + 0x00006200)
+
+/* Parallel Master Register Base Address */
+
+#define PCI32MX_PMSTR_K1BASE      (PIC32MX_SFR_K1BASE + 0x00007000)
+
+/* ADC Register Base Addresses */
+
+#define PIC32MX_ADC_K1BASE        (PIC32MX_SFR_K1BASE + 0x00009000)
+
+/* Comparator Voltage Reference Register Base Addresses */
+
+#define PIC32MX_VREF_K1BASE       (PIC32MX_SFR_K1BASE + 0x00009800)
+
+/* Comparator Register Base Addresses */
+
+#define PIC32MX_COMP_K1BASE       (PIC32MX_SFR_K1BASE + 0x0000a000)
+
+/* Oscillator Control Register Base Addresses */
+
+#define PIC32MX_OSC_K1BASE        (PIC32MX_SFR_K1BASE + 0x0000f000)
+
+/* Programming and Diagnostics Register Base Addresses */
+
+#define PIC32MX_SYSCON_K1BASE     (PIC32MX_SFR_K1BASE + 0x0000f200)
+
+/* FLASH Controller Register Base Addresses */
+
+#define PIC32MX_FLASH_K1BASE      (PIC32MX_SFR_K1BASE + 0x0000f400)
+
+/* Reset Control Register Base Address */
+
+#define PIC32MX_RCON_K1BASE       (PIC32MX_SFR_K1BASE + 0x0000f600)
+
+/* Interrupt Register Base Address */
+
+#define PIC32MX_INTCON_K1BASE     (PIC32MX_SFR_K1BASE + 0x00081000)
+
+/* Bus Matrix Register Base Address */
+
+#define PIC32MX_BMX_K1BASE        (PIC32MX_SFR_K1BASE + 0x00082000)
+
+/* DMA Register Base Address */
+
+#define PIC32MX_DMA_K1BASE        (PIC32MX_SFR_K1BASE + 0x00083000)
+#define PIC32MX_DMACHAN_K1BASE(n) (PIC32MX_SFR_K1BASE + 0x00083060 + 0xc0*(n))
+#define PIC32MX_DMACHAN0_K1BASE   (PIC32MX_SFR_K1BASE + 0x00083060)
+#define PIC32MX_DMACHAN1_K1BASE   (PIC32MX_SFR_K1BASE + 0x00083120)
+#define PIC32MX_DMACHAN2_K1BASE   (PIC32MX_SFR_K1BASE + 0x000831e0)
+#define PIC32MX_DMACHAN3_K1BASE   (PIC32MX_SFR_K1BASE + 0x000832a0)
+
+/* Prefetch Register Base Address */
+
+#define PIC32MX_CHE_K1BASE        (PIC32MX_SFR_K1BASE + 0x00084000)
+
+/* USB2 Register Base Addresses */
+
+#define PIC32MX_USB_K1BASE        (PIC32MX_SFR_K1BASE + 0x00085000)
+
+/* Port Register Base Addresses */
+
+#define PIC32MX_PORTA             0
+#define PIC32MX_PORTB             1
+#define PIC32MX_PORTC             2
+#define PIC32MX_PORTD             3
+#define PIC32MX_PORTE             4
+#define PIC32MX_PORTF             5
+#define PIC32MX_PORTG             6
+#define PIC32MX_PORT_K1BASE(n)   (PIC32MX_SFR_K1BASE + 0x00086000 + 0x20*(n))
+
+#define PIC32MX_PORTA_K1BASE     (PIC32MX_SFR_K1BASE + 0x00086000)
+#define PIC32MX_PORTB_K1BASE     (PIC32MX_SFR_K1BASE + 0x00086040)
+#define PIC32MX_PORTC_K1BASE     (PIC32MX_SFR_K1BASE + 0x00086080)
+#define PIC32MX_PORTD_K1BASE     (PIC32MX_SFR_K1BASE + 0x000860c0)
+#define PIC32MX_PORTE_K1BASE     (PIC32MX_SFR_K1BASE + 0x00086100)
+#define PIC32MX_PORTF_K1BASE     (PIC32MX_SFR_K1BASE + 0x00086140)
+#define PIC32MX_PORTG_K1BASE     (PIC32MX_SFR_K1BASE + 0x00086180)
+
+#define PIC32MX_CNCON_K1BASE     (PIC32MX_SFR_K1BASE + 0x000861c0)
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+/****************************************************************************
+ * Inline Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#ifdef __cplusplus
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+#undef EXTERN
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __ASSEMBLY__ */
+#endif /* __ARCH_MIPS_SRC_PIC32MX_PIC32MX_MEMORYMAP_H */
diff --git a/arch/mips/src/pic32mx/pic32mx-osc.h b/arch/mips/src/pic32mx/pic32mx-osc.h
new file mode 100755
index 0000000000000000000000000000000000000000..9142b19a2d0769bd1cc9f013c8cac4f7d3f9c9cc
--- /dev/null
+++ b/arch/mips/src/pic32mx/pic32mx-osc.h
@@ -0,0 +1,165 @@
+/****************************************************************************
+ * arch/mips/src/pic32mx/pic32mx-osc.h
+ *
+ *   Copyright (C) 2011 Gregory Nutt. All rights reserved.
+ *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+#ifndef __ARCH_MIPS_SRC_PIC32MX_PIC32MX_OSC_H
+#define __ARCH_MIPS_SRC_PIC32MX_PIC32MX_OSC_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include "pic32mx-memorymap.h"
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+/* Register Offsets *********************************************************/
+
+#define PIC32MX_OSCCON_OFFSET    0x0000 /* Oscillator control register offset */
+#define PIC32MX_OSCTUN_OFFSET    0x0010 /* FRC tuning register offset */
+
+/* Register Addresses *******************************************************/
+
+#define PIC32MX_OSCCON           (PIC32MX_OSC_K1BASE+PIC32MX_OSCCON_OFFSET)
+#define PIC32MX_OSCTUN           (PIC32MX_OSC_K1BASE+PIC32MX_OSCTUN_OFFSET)
+
+/* Register Bit-Field Definitions *******************************************/
+
+/* Oscillator control register offset */
+
+#define OSCCON_OSWEN            (1 << 0)  /* Bit 0: Oscillator switch enable */
+#define OSCCON_SOSCEN           (1 << 1)  /* Bit 1: 32.768kHz secondary oscillator enable */
+#define OSCCON_UFRCEN           (1 << 2)  /* Bit 2: USB FRC clock enable */
+#define OSCCON_CF               (1 << 3)  /* Bit 3: Clock fail detect */
+#define OSCCON_SLPEN            (1 << 4)  /* Bit 4: Sleep mode enable */
+#define OSCCON_SLOCK            (1 << 5)  /* Bit 5: PLL lock status */
+#define OSCCON_ULOCK            (1 << 6)  /* Bit 6: USB PLL lock status */
+#define OSCCON_CLKLOCK          (1 << 7)  /* Bit 7: Clock selection lock enable */
+#define OSCCON_NOSC_SHIFT       (8)       /* Bits 8-10: New oscillator selection */
+#define OSCCON_NOSC_MASK        (7 << OSCCON_NOSC_SHIFT)
+#  define OSCCON_NOSC_FRC       (0 << OSCCON_NOSC_SHIFT) /* FRC oscillator */
+#  define OSCCON_NOSC_FRCPLL    (1 << OSCCON_NOSC_SHIFT) /* FRC w/PLL postscaler */
+#  define OSCCON_NOSC_POSC      (2 << OSCCON_NOSC_SHIFT) /* Primary oscillator */
+#  define OSCCON_NOSC_POSCPLL   (3 << OSCCON_NOSC_SHIFT) /* Primary oscillator with PLL */
+#  define OSCCON_NOSC_SOSC      (4 << OSCCON_NOSC_SHIFT) /* Secondary oscillator */
+#  define OSCCON_NOSC_LPRC      (5 << OSCCON_NOSC_SHIFT) /* Low power RC oscillator */
+#  define OSCCON_NOSC_FRCDIV16  (6 << OSCCON_NOSC_SHIFT) /* FRC divided by 16 */
+#  define OSCCON_NOSC_FRCDIV    (7 << OSCCON_NOSC_SHIFT) /* FRC dived by FRCDIV */
+#define OSCCON_COSC_SHIFT       (12)      /* Bits 12-14: Current oscillator selection */
+#define OSCCON_COSC_MASK        (7 << OSCCON_COSC_SHIFT)
+#  define OSCCON_COSC_FRC       (0 << OSCCON_COSC_SHIFT) /* FRC oscillator */
+#  define OSCCON_COSC_FRCPLL    (1 << OSCCON_COSC_SHIFT) /* FRC w/PLL postscaler */
+#  define OSCCON_COSC_POSC      (2 << OSCCON_COSC_SHIFT) /* Primary oscillator */
+#  define OSCCON_COSC_POSCPLL   (3 << OSCCON_COSC_SHIFT) /* Primary oscillator with PLL */
+#  define OSCCON_COSC_SOSC      (4 << OSCCON_COSC_SHIFT) /* Secondary oscillator */
+#  define OSCCON_COSC_LPRC      (5 << OSCCON_COSC_SHIFT) /* Low power RC oscillator */
+#  define OSCCON_COSC_FRCDIV16  (6 << OSCCON_COSC_SHIFT) /* FRC divided by 16 */
+#  define OSCCON_COSC_FRCDIV    (7 << OSCCON_COSC_SHIFT) /* FRC dived by FRCDIV */
+#define OSCCON_PLLMULT_SHIFT    (16)      /* Bits 16-18: PLL multiplier */
+#define OSCCON_PLLMULT_MASK     (7 << OSCCON_PLLMULT_SHIFT)
+#  define OSCCON_PLLMULT_MUL15  (0 << OSCCON_PLLMULT_SHIFT)
+#  define OSCCON_PLLMULT_MUL16  (1 << OSCCON_PLLMULT_SHIFT)
+#  define OSCCON_PLLMULT_MUL17  (2 << OSCCON_PLLMULT_SHIFT)
+#  define OSCCON_PLLMULT_MUL18  (3 << OSCCON_PLLMULT_SHIFT)
+#  define OSCCON_PLLMULT_MUL19  (4 << OSCCON_PLLMULT_SHIFT)
+#  define OSCCON_PLLMULT_MUL20  (5 << OSCCON_PLLMULT_SHIFT)
+#  define OSCCON_PLLMULT_MUL21  (6 << OSCCON_PLLMULT_SHIFT)
+#  define OSCCON_PLLMULT_MUL24  (7 << OSCCON_PLLMULT_SHIFT)
+#define OSCCON_PBDIV_SHIFT      (19)      /* Bits 19-20: PBVLK divisor */
+#define OSCCON_PBDIV_SMASK      (3 << OSCCON_PBDIV_SHIFT)
+#  define OSCCON_PBDIV_DIV1     (0 << OSCCON_PBDIV_SHIFT)
+#  define OSCCON_PBDIV_DIV2     (1 << OSCCON_PBDIV_SHIFT)
+#  define OSCCON_PBDIV_DIV4     (2 << OSCCON_PBDIV_SHIFT)
+#  define OSCCON_PBDIV_DIV8     (3 << OSCCON_PBDIV_SHIFT)
+#define OSCCON_SOSCRDY          (1 << 22) /* Bit 22: Secondary oscillator ready */
+#define OSCCON_FRCDIV_SHIFT     (24)      /* Bits 24-26: FRC oscillator divider */
+#define OSCCON_FRCDIV_MASK      (7 << OSCCON_FRCDIV_SHIFT)
+#  define OSCCON_FRCDIV_DIV1    (0 << OSCCON_FRCDIV_SHIFT)
+#  define OSCCON_FRCDIV_DIV2    (1 << OSCCON_FRCDIV_SHIFT)
+#  define OSCCON_FRCDIV_DIV4    (2 << OSCCON_FRCDIV_SHIFT)
+#  define OSCCON_FRCDIV_DIV8    (3 << OSCCON_FRCDIV_SHIFT)
+#  define OSCCON_FRCDIV_DIV16   (4 << OSCCON_FRCDIV_SHIFT)
+#  define OSCCON_FRCDIV_DIV32   (5 << OSCCON_FRCDIV_SHIFT)
+#  define OSCCON_FRCDIV_DIV64   (6 << OSCCON_FRCDIV_SHIFT)
+#  define OSCCON_FRCDIV_DIV256  (7 << OSCCON_FRCDIV_SHIFT)
+#define OSCCON_PLL0DIV_SHIFT    (27)      /* Bits 27-29: Output divider for PLL */
+#define OSCCON_PLL0DIV_MASK     (7 << OSCCON_PLL0DIV_SHIFT)
+#  define OSCCON_PLL0DIV_DIV1   (0 << OSCCON_PLL0DIV_SHIFT)
+#  define OSCCON_PLL0DIV_DIV2   (1 << OSCCON_PLL0DIV_SHIFT)
+#  define OSCCON_PLL0DIV_DIV4   (2 << OSCCON_PLL0DIV_SHIFT)
+#  define OSCCON_PLL0DIV_DIV8   (3 << OSCCON_PLL0DIV_SHIFT)
+#  define OSCCON_PLL0DIV_DIV16  (4 << OSCCON_PLL0DIV_SHIFT)
+#  define OSCCON_PLL0DIV_DIV32  (5 << OSCCON_PLL0DIV_SHIFT)
+#  define OSCCON_PLL0DIV_DIV64  (6 << OSCCON_PLL0DIV_SHIFT)
+#  define OSCCON_PLL0DIV_DIV256 (7 << OSCCON_PLL0DIV_SHIFT)
+
+/* FRC tuning register offset (6-bit, signed twos complement) */
+
+#define OSCTUN_SHIFT         (0)       /* Bits 0-5: FRC tuning bits */
+#define OSCTUN_MASK          (0x3f << OSCTUN_SHIFT)
+#  define OSCTUN_MIN         (0x20 << OSCTUN_SHIFT)
+#  define OSCTUN_CENTER      (0x00 << OSCTUN_SHIFT)
+#  define OSCTUN_MAX         (0x1f << OSCTUN_SHIFT)
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+/****************************************************************************
+ * Inline Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#ifdef __cplusplus
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+#undef EXTERN
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __ASSEMBLY__ */
+#endif /* __ARCH_MIPS_SRC_PIC32MX_PIC32MX_OSC_H */