summaryrefslogtreecommitdiff
path: root/nuttx/configs
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-05-20 00:21:26 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-05-20 00:21:26 +0000
commitb04afc232c680c1ffc1a3753398118835c7e6956 (patch)
tree474a2c4d196e925f43274ca71e90b87dc18cc13e /nuttx/configs
parent12bb64b7481f31b499b2ffeccedc70353b56a138 (diff)
downloadpx4-nuttx-b04afc232c680c1ffc1a3753398118835c7e6956.tar.gz
px4-nuttx-b04afc232c680c1ffc1a3753398118835c7e6956.tar.bz2
px4-nuttx-b04afc232c680c1ffc1a3753398118835c7e6956.zip
Add PIC32 exception handlers
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3630 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/configs')
-rw-r--r--nuttx/configs/pcblogic-pic32mx/ostest/ld.script62
1 files changed, 52 insertions, 10 deletions
diff --git a/nuttx/configs/pcblogic-pic32mx/ostest/ld.script b/nuttx/configs/pcblogic-pic32mx/ostest/ld.script
index 300273405..7c8f11a1f 100644
--- a/nuttx/configs/pcblogic-pic32mx/ostest/ld.script
+++ b/nuttx/configs/pcblogic-pic32mx/ostest/ld.script
@@ -49,20 +49,32 @@ MEMORY
* REGION PHYSICAL KSEG SIZE
* DESCRIPTION START ADDR (BYTES)
* ------------- ---------- ------ ---------------
- * Reset 0x1fc00000 KSEG1 896
- * BEV exception 0x1fc00380 KSEG1 256
- * DBG exception 0x1fc00480 KSEG1 16
+ * Exceptions:*
+ * Reset 0x1fc00000 KSEG1 512
+ * TLB Refill 0x1fc00200 KSEG1 256
+ * Cache Error 0x1fc00300 KSEG1 256
+ * Others 0x1fc00380 KSEG1 256
+ * Interrupt 0x1fc00400 KSEG1 128
+ * JTAG 0x1fc00480 KSEG1 16
* Startup logic 0x1fc00490 KSEG0 4096-896-256-16
* Exceptions 0x1fc01000 KSEG0 4096
* Debug code 0x1fc02000 KSEG1 4096-16
* DEVCFG3-0 0x1fc02ff0 KSEG1 16
+ *
+ * Exceptions assme:
+ *
+ * STATUS: BEV=1 and EXL=0
+ * CAUSE: IV=1
+ * JTAG: ProbEn=0
+ * And multi-vector support disabled
*/
kseg1_reset (rx) : ORIGIN = 0xbfc00000, LENGTH = 896
kseg1_bevexcpt (rx) : ORIGIN = 0xbfc00380, LENGTH = 256
- kseg1_dbgexcpt (rx) : ORIGIN = 0xbfc00480, LENGTH = 16
+ kseg1_intexcpt (rx) : ORIGIN = 0xbfc00380, LENGTH = 128
+ kseg1_dbgexcpt (rx) : ORIGIN = 0xbfc00400, LENGTH = 128
kseg0_bootmem (rx) : ORIGIN = 0x9fc00490, LENGTH = 4096-1168
- kseg0_exptmem (rx) : ORIGIN = 0x9fc01000, LENGTH = 4096
+ kseg0_excptmem (rx) : ORIGIN = 0x9fc01000, LENGTH = 4096
kseg1_dbgcode (rx) : ORIGIN = 0xbfc02000, LENGTH = 4096-16
kseg1_devcfg (r) : ORIGIN = 0xbfc02ff0, LENGTH = 16
@@ -78,6 +90,9 @@ OUTPUT_FORMAT("elf32-tradlittlemips")
OUTPUT_ARCH(pic32mx)
ENTRY(__start)
+INPUT(up_inthandler.o);
+INPUT(up_bevhandler.o);
+
SECTIONS
{
/* Boot FLASH sections */
@@ -87,11 +102,35 @@ SECTIONS
*(.reset)
} > kseg1_reset
- .bev_excp :
+ /* Exception handlers. The following is assumed:
+ *
+ * STATUS: BEV=1 and EXL=0
+ * CAUSE: IV=1
+ * JTAG: ProbEn=0
+ * And multi-vector support disabled
+ *
+ * In that configuration, the vector locations become:
+ *
+ * Reset, Soft Reset bfc0:0000
+ * TLB Refill bfc0:0200
+ * Cache Error bfc0:0300
+ * All others bfc0:0380
+ * Interrupt bfc0:0400
+ * EJTAG Debug bfc0:0480
+ */
+
+ /* KSEG1 exception handler "trampolines" */
+
+ .bev_excpt :
{
- *(.bev_excp)
+ *(.bev_excpt)
} > kseg1_bevexcpt
+ .int_excpt :
+ {
+ *(.int_excpt)
+ } > kseg1_intexcpt
+
.dbg_excpt = ORIGIN(kseg1_dbgexcpt);
.start :
@@ -99,10 +138,13 @@ SECTIONS
*(.start)
} > kseg0_bootmem
- .vectors :
+ /* KSEG0 exception handlers */
+
+ .excpt_handlers :
{
- *(.vectors)
- } > kseg0_exptmem
+ *(.bev_handler)
+ *(.int_handler)
+ } > kseg0_excptmem
.dbg_code = ORIGIN(kseg1_dbgcode);