git-svn-id: https://chibios.svn.sourceforge.net/svnroot/chibios/trunk@5108 35acf78f...
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>
Mon, 4 Feb 2013 10:21:25 +0000 (10:21 +0000)
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>
Mon, 4 Feb 2013 10:21:25 +0000 (10:21 +0000)
os/ports/GCC/PPC/SPC56ELxx/bam.s [new file with mode: 0644]
os/ports/GCC/PPC/SPC56ELxx/ivor.s [new file with mode: 0644]
os/ports/GCC/PPC/SPC56ELxx/ld/SPC56EL54_LSM.ld [new file with mode: 0644]
os/ports/GCC/PPC/SPC56ELxx/ld/SPC56EL60_LSM.ld [new file with mode: 0644]
os/ports/GCC/PPC/SPC56ELxx/ld/SPC56EL70_LSM.ld [new file with mode: 0644]
os/ports/GCC/PPC/SPC56ELxx/port.mk [new file with mode: 0644]
os/ports/GCC/PPC/SPC56ELxx/ppcparams.h [new file with mode: 0644]
os/ports/GCC/PPC/SPC56ELxx/vectors.s [new file with mode: 0644]

diff --git a/os/ports/GCC/PPC/SPC56ELxx/bam.s b/os/ports/GCC/PPC/SPC56ELxx/bam.s
new file mode 100644 (file)
index 0000000..be7e83c
--- /dev/null
@@ -0,0 +1,71 @@
+/*\r
+    ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,\r
+                 2011,2012,2013 Giovanni Di Sirio.\r
+\r
+    This file is part of ChibiOS/RT.\r
+\r
+    ChibiOS/RT is free software; you can redistribute it and/or modify\r
+    it under the terms of the GNU General Public License as published by\r
+    the Free Software Foundation; either version 3 of the License, or\r
+    (at your option) any later version.\r
+\r
+    ChibiOS/RT is distributed in the hope that it will be useful,\r
+    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+    GNU General Public License for more details.\r
+\r
+    You should have received a copy of the GNU General Public License\r
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
+*/\r
+\r
+/**\r
+ * @file    SPC56ELxx/bam.s\r
+ * @brief   SPC56ELxx boot assistant record.\r
+ *\r
+ * @addtogroup PPC_CORE\r
+ * @{\r
+ */\r
+\r
+#if !defined(__DOXYGEN__)\r
+\r
+        /* BAM info, SWT off, WTE off, VLE from settings.*/\r
+        .section    .bam, "ax"\r
+        .long       0x015A0000\r
+        .long       .clear_ecc\r
+\r
+        /* RAM clearing, this device requires a write to all RAM location in\r
+           order to initialize the ECC detection hardware, this is going to\r
+           slow down the startup but there is no way around.*/\r
+.clear_ecc:\r
+        xor         %r16, %r16, %r16\r
+        xor         %r17, %r17, %r17\r
+        xor         %r18, %r18, %r18\r
+        xor         %r19, %r19, %r19\r
+        xor         %r20, %r20, %r20\r
+        xor         %r21, %r21, %r21\r
+        xor         %r22, %r22, %r22\r
+        xor         %r23, %r23, %r23\r
+        xor         %r24, %r24, %r24\r
+        xor         %r25, %r25, %r25\r
+        xor         %r26, %r26, %r26\r
+        xor         %r27, %r27, %r27\r
+        xor         %r28, %r28, %r28\r
+        xor         %r29, %r29, %r29\r
+        xor         %r30, %r30, %r30\r
+        xor         %r31, %r31, %r31\r
+        lis         %r4, __ram_start__@h\r
+        ori         %r4, %r4, __ram_start__@l\r
+        lis         %r5, __ram_end__@h\r
+        ori         %r5, %r5, __ram_end__@l\r
+.cleareccloop:\r
+        cmpl        cr0, %r4, %r5\r
+        bge         cr0, .cleareccend\r
+        stmw        %r16, 0(%r4)\r
+        addi        %r4, %r4, 64\r
+        b           .cleareccloop\r
+.cleareccend:\r
+        b           _boot_address\r
+\r
+#endif /* !defined(__DOXYGEN__) */\r
+\r
+/** @} */\r
diff --git a/os/ports/GCC/PPC/SPC56ELxx/ivor.s b/os/ports/GCC/PPC/SPC56ELxx/ivor.s
new file mode 100644 (file)
index 0000000..24d0bee
--- /dev/null
@@ -0,0 +1,258 @@
+/*\r
+    ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,\r
+                 2011,2012,2013 Giovanni Di Sirio.\r
+\r
+    This file is part of ChibiOS/RT.\r
+\r
+    ChibiOS/RT is free software; you can redistribute it and/or modify\r
+    it under the terms of the GNU General Public License as published by\r
+    the Free Software Foundation; either version 3 of the License, or\r
+    (at your option) any later version.\r
+\r
+    ChibiOS/RT is distributed in the hope that it will be useful,\r
+    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+    GNU General Public License for more details.\r
+\r
+    You should have received a copy of the GNU General Public License\r
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
+*/\r
+\r
+/**\r
+ * @file    SPC56ELxx/ivor.s\r
+ * @brief   SPC56ELxx IVORx handlers.\r
+ *\r
+ * @addtogroup PPC_CORE\r
+ * @{\r
+ */\r
+\r
+/*\r
+ * Imports the PPC configuration headers.\r
+ */\r
+#define _FROM_ASM_\r
+#include "chconf.h"\r
+#include "chcore.h"\r
+\r
+#if !defined(__DOXYGEN__)\r
+        /*\r
+         * INTC registers address.\r
+         */\r
+        .equ  INTC_IACKR, 0xfff48010\r
+        .equ  INTC_EOIR,  0xfff48018\r
+\r
+        .section    .handlers, "ax"\r
+\r
+        /*\r
+         * Unhandled exceptions handler.\r
+         */\r
+         .weak      _IVOR0\r
+_IVOR0:\r
+         .weak      _IVOR1\r
+_IVOR1:\r
+         .weak      _IVOR2\r
+_IVOR2:\r
+         .weak      _IVOR3\r
+_IVOR3:\r
+         .weak      _IVOR5\r
+_IVOR5:\r
+         .weak      _IVOR6\r
+_IVOR6:\r
+         .weak      _IVOR7\r
+_IVOR7:\r
+         .weak      _IVOR8\r
+_IVOR8:\r
+         .weak      _IVOR9\r
+_IVOR9:\r
+         .weak      _IVOR11\r
+_IVOR11:\r
+         .weak      _IVOR12\r
+_IVOR12:\r
+         .weak      _IVOR13\r
+_IVOR13:\r
+         .weak      _IVOR14\r
+_IVOR14:\r
+         .weak      _IVOR15\r
+_IVOR15:\r
+        .weak      _unhandled_exception\r
+        .type       _unhandled_exception, @function\r
+_unhandled_exception:\r
+        b       _unhandled_exception\r
+\r
+        /*\r
+         * _IVOR10 handler (Book-E decrementer).\r
+         */\r
+        .align         4\r
+        .globl      _IVOR10\r
+        .type       _IVOR10, @function\r
+_IVOR10:\r
+        /* Creation of the external stack frame (extctx structure).*/\r
+        stwu        %sp, -80(%sp)           /* Size of the extctx structure.*/\r
+#if PPC_USE_VLE && PPC_SUPPORTS_VLE_MULTI\r
+        e_stmvsrrw  8(%sp)                  /* Saves PC, MSR.               */\r
+        e_stmvsprw  16(%sp)                 /* Saves CR, LR, CTR, XER.      */\r
+        e_stmvgprw  32(%sp)                 /* Saves GPR0, GPR3...GPR12.    */\r
+#else /* !(PPC_USE_VLE && PPC_SUPPORTS_VLE_MULTI) */\r
+        stw         %r0, 32(%sp)            /* Saves GPR0.                  */\r
+        mfSRR0      %r0\r
+        stw         %r0, 8(%sp)             /* Saves PC.                    */\r
+        mfSRR1      %r0\r
+        stw         %r0, 12(%sp)            /* Saves MSR.                   */\r
+        mfCR        %r0\r
+        stw         %r0, 16(%sp)            /* Saves CR.                    */\r
+        mfLR        %r0\r
+        stw         %r0, 20(%sp)            /* Saves LR.                    */\r
+        mfCTR       %r0\r
+        stw         %r0, 24(%sp)            /* Saves CTR.                   */\r
+        mfXER       %r0\r
+        stw         %r0, 28(%sp)            /* Saves XER.                   */\r
+        stw         %r3, 36(%sp)            /* Saves GPR3...GPR12.          */\r
+        stw         %r4, 40(%sp)\r
+        stw         %r5, 44(%sp)\r
+        stw         %r6, 48(%sp)\r
+        stw         %r7, 52(%sp)\r
+        stw         %r8, 56(%sp)\r
+        stw         %r9, 60(%sp)\r
+        stw         %r10, 64(%sp)\r
+        stw         %r11, 68(%sp)\r
+        stw         %r12, 72(%sp)\r
+#endif /* !(PPC_USE_VLE && PPC_SUPPORTS_VLE_MULTI) */\r
+\r
+        /* Reset DIE bit in TSR register.*/\r
+        lis         %r3, 0x0800             /* DIS bit mask.                */\r
+        mtspr       336, %r3                /* TSR register.                */\r
+\r
+#if CH_DBG_SYSTEM_STATE_CHECK\r
+        bl          dbg_check_enter_isr\r
+        bl          dbg_check_lock_from_isr\r
+#endif\r
+        bl          chSysTimerHandlerI\r
+#if CH_DBG_SYSTEM_STATE_CHECK\r
+        bl          dbg_check_unlock_from_isr\r
+        bl          dbg_check_leave_isr\r
+#endif\r
+\r
+        /* System tick handler invocation.*/\r
+#if CH_DBG_SYSTEM_STATE_CHECK\r
+        bl          dbg_check_lock\r
+#endif\r
+        bl          chSchIsPreemptionRequired\r
+        cmpli       cr0, %r3, 0\r
+        beq         cr0, _ivor_exit\r
+        bl          chSchDoReschedule\r
+        b           _ivor_exit\r
+\r
+        /*\r
+         * _IVOR4 handler (Book-E external interrupt).\r
+         */\r
+        .align         4\r
+        .globl      _IVOR4\r
+        .type       _IVOR4, @function\r
+_IVOR4:\r
+        /* Creation of the external stack frame (extctx structure).*/\r
+        stwu        %sp, -80(%sp)           /* Size of the extctx structure.*/\r
+#if PPC_USE_VLE && PPC_SUPPORTS_VLE_MULTI\r
+        e_stmvsrrw  8(%sp)                  /* Saves PC, MSR.               */\r
+        e_stmvsprw  16(%sp)                 /* Saves CR, LR, CTR, XER.      */\r
+        e_stmvgprw  32(%sp)                 /* Saves GPR0, GPR3...GPR12.    */\r
+#else /* !(PPC_USE_VLE && PPC_SUPPORTS_VLE_MULTI) */\r
+        stw         %r0, 32(%sp)            /* Saves GPR0.                  */\r
+        mfSRR0      %r0\r
+        stw         %r0, 8(%sp)             /* Saves PC.                    */\r
+        mfSRR1      %r0\r
+        stw         %r0, 12(%sp)            /* Saves MSR.                   */\r
+        mfCR        %r0\r
+        stw         %r0, 16(%sp)            /* Saves CR.                    */\r
+        mfLR        %r0\r
+        stw         %r0, 20(%sp)            /* Saves LR.                    */\r
+        mfCTR       %r0\r
+        stw         %r0, 24(%sp)            /* Saves CTR.                   */\r
+        mfXER       %r0\r
+        stw         %r0, 28(%sp)            /* Saves XER.                   */\r
+        stw         %r3, 36(%sp)            /* Saves GPR3...GPR12.          */\r
+        stw         %r4, 40(%sp)\r
+        stw         %r5, 44(%sp)\r
+        stw         %r6, 48(%sp)\r
+        stw         %r7, 52(%sp)\r
+        stw         %r8, 56(%sp)\r
+        stw         %r9, 60(%sp)\r
+        stw         %r10, 64(%sp)\r
+        stw         %r11, 68(%sp)\r
+        stw         %r12, 72(%sp)\r
+#endif /* !(PPC_USE_VLE && PPC_SUPPORTS_VLE_MULTI) */\r
+\r
+        /* Software vector address from the INTC register.*/\r
+        lis         %r3, INTC_IACKR@h\r
+        ori         %r3, %r3, INTC_IACKR@l  /* IACKR register address.      */\r
+        lwz         %r3, 0(%r3)             /* IACKR register value.        */\r
+        lwz         %r3, 0(%r3)\r
+        mtCTR       %r3                     /* Software handler address.    */\r
+\r
+#if PPC_USE_IRQ_PREEMPTION\r
+        /* Allows preemption while executing the software handler.*/\r
+        wrteei      1\r
+#endif\r
+\r
+        /* Exectes the software handler.*/\r
+        bctrl\r
+\r
+#if PPC_USE_IRQ_PREEMPTION\r
+        /* Prevents preemption again.*/\r
+        wrteei      0\r
+#endif\r
+\r
+        /* Informs the INTC that the interrupt has been served.*/\r
+        mbar        0\r
+        lis         %r3, INTC_EOIR@h\r
+        ori         %r3, %r3, INTC_EOIR@l\r
+        stw         %r3, 0(%r3)             /* Writing any value should do. */\r
+\r
+        /* Verifies if a reschedule is required.*/\r
+#if CH_DBG_SYSTEM_STATE_CHECK\r
+        bl          dbg_check_lock\r
+#endif\r
+        bl          chSchIsPreemptionRequired\r
+        cmpli       cr0, %r3, 0\r
+        beq         cr0, _ivor_exit\r
+        bl          chSchDoReschedule\r
+\r
+        /* Context restore.*/\r
+        .globl      _ivor_exit\r
+_ivor_exit:\r
+#if CH_DBG_SYSTEM_STATE_CHECK\r
+        bl          dbg_check_unlock\r
+#endif\r
+#if PPC_USE_VLE && PPC_SUPPORTS_VLE_MULTI\r
+        e_lmvgprw  32(%sp)                  /* Restores GPR0, GPR3...GPR12. */\r
+        e_lmvsprw  16(%sp)                  /* Restores CR, LR, CTR, XER.   */\r
+        e_lmvsrrw  8(%sp)                   /* Restores PC, MSR.            */\r
+#else /*!(PPC_USE_VLE && PPC_SUPPORTS_VLE_MULTI) */\r
+        lwz         %r3, 36(%sp)            /* Restores GPR3...GPR12.       */\r
+        lwz         %r4, 40(%sp)\r
+        lwz         %r5, 44(%sp)\r
+        lwz         %r6, 48(%sp)\r
+        lwz         %r7, 52(%sp)\r
+        lwz         %r8, 56(%sp)\r
+        lwz         %r9, 60(%sp)\r
+        lwz         %r10, 64(%sp)\r
+        lwz         %r11, 68(%sp)\r
+        lwz         %r12, 72(%sp)\r
+        lwz         %r0, 8(%sp)\r
+        mtSRR0      %r0                     /* Restores PC.                 */\r
+        lwz         %r0, 12(%sp)\r
+        mtSRR1      %r0                     /* Restores MSR.                */\r
+        lwz         %r0, 16(%sp)\r
+        mtCR        %r0                     /* Restores CR.                 */\r
+        lwz         %r0, 20(%sp)\r
+        mtLR        %r0                     /* Restores LR.                 */\r
+        lwz         %r0, 24(%sp)\r
+        mtCTR       %r0                     /* Restores CTR.                */\r
+        lwz         %r0, 28(%sp)\r
+        mtXER       %r0                     /* Restores XER.                */\r
+        lwz         %r0, 32(%sp)            /* Restores GPR0.               */\r
+#endif /* !(PPC_USE_VLE && PPC_SUPPORTS_VLE_MULTI) */\r
+        addi        %sp, %sp, 80            /* Back to the previous frame.  */\r
+        rfi\r
+\r
+#endif /* !defined(__DOXYGEN__) */\r
+\r
+/** @} */\r
diff --git a/os/ports/GCC/PPC/SPC56ELxx/ld/SPC56EL54_LSM.ld b/os/ports/GCC/PPC/SPC56ELxx/ld/SPC56EL54_LSM.ld
new file mode 100644 (file)
index 0000000..b84620e
--- /dev/null
@@ -0,0 +1,177 @@
+/*\r
+    ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,\r
+                 2011,2012,2013 Giovanni Di Sirio.\r
+\r
+    This file is part of ChibiOS/RT.\r
+\r
+    ChibiOS/RT is free software; you can redistribute it and/or modify\r
+    it under the terms of the GNU General Public License as published by\r
+    the Free Software Foundation; either version 3 of the License, or\r
+    (at your option) any later version.\r
+\r
+    ChibiOS/RT is distributed in the hope that it will be useful,\r
+    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+    GNU General Public License for more details.\r
+\r
+    You should have received a copy of the GNU General Public License\r
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
+*/\r
+\r
+/*\r
+ * SPC56EL54 memory setup in LSM mode.\r
+ */\r
+__irq_stack_size__      = 0x0000; /* Not yet used.*/\r
+__process_stack_size__  = 0x0800;\r
+\r
+MEMORY\r
+{\r
+    flash     : org = 0x00000000, len = 768k\r
+    ram       : org = 0x40000000, len = 128k\r
+}\r
+\r
+/*\r
+ * Derived constants.\r
+ */\r
+__flash_size__          = LENGTH(flash);\r
+__flash_start__         = ORIGIN(flash);\r
+__flash_end__           = ORIGIN(flash) + LENGTH(flash);\r
+\r
+__ram_size__            = LENGTH(ram);\r
+__ram_start__           = ORIGIN(ram);\r
+__ram_end__             = ORIGIN(ram) + LENGTH(ram);\r
+\r
+SECTIONS\r
+{\r
+    . = ORIGIN(flash);\r
+    .boot : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        KEEP(*(.bam))\r
+        KEEP(*(.crt0))\r
+        . = ALIGN(0x00000800);\r
+        KEEP(*(.vectors))\r
+        /* Note, have to waste the first 64KB because the IVPR register\r
+           requires an alignment of 64KB and the first 64KB cannot be used,\r
+           IVOR0 would conflict with the BAM word. Applications could\r
+           allocate code or data in the first 64KB by using special sections.*/\r
+        . = ALIGN(0x00010000);\r
+        __ivpr_base__ = .;\r
+        KEEP(*(.handlers))\r
+    } > flash\r
+\r
+    constructors : ALIGN(4) SUBALIGN(4)\r
+    {\r
+        PROVIDE(__init_array_start = .);\r
+        KEEP(*(SORT(.init_array.*)))\r
+        KEEP(*(.init_array))\r
+        PROVIDE(__init_array_end = .);\r
+    } > flash\r
+\r
+    destructors : ALIGN(4) SUBALIGN(4)\r
+    {\r
+        PROVIDE(__fini_array_start = .);\r
+        KEEP(*(.fini_array))\r
+        KEEP(*(SORT(.fini_array.*)))\r
+        PROVIDE(__fini_array_end = .);\r
+    } > flash\r
+\r
+    .text_vle : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        *(.text_vle)\r
+        *(.text_vle.*)\r
+        *(.gnu.linkonce.t_vle.*)\r
+    } > flash\r
+\r
+    .text : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        *(.text)\r
+        *(.text.*)\r
+        *(.gnu.linkonce.t.*)\r
+    } > flash\r
+\r
+    .rodata : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        *(.glue_7t)\r
+        *(.glue_7)\r
+        *(.gcc*)\r
+        *(.rodata)\r
+        *(.rodata.*)\r
+        *(.rodata1)\r
+    } > flash\r
+\r
+    .sdata2 : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        __sdata2_start__ = . + 0x8000;\r
+        *(.sdata2)\r
+        *(.sdata2.*)\r
+        *(.gnu.linkonce.s2.*)\r
+        *(.sbss2)\r
+        *(.sbss2.*)\r
+        *(.gnu.linkonce.sb2.*)\r
+    } > flash\r
+\r
+    .eh_frame_hdr :\r
+    {\r
+        *(.eh_frame_hdr)\r
+    } > flash\r
+\r
+    .eh_frame : ONLY_IF_RO\r
+    {\r
+        *(.eh_frame)\r
+    } > flash\r
+\r
+    .romdata : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        __romdata_start__ = .;\r
+    } > flash\r
+\r
+    .stacks :\r
+    {\r
+        . = ALIGN(8);\r
+        __irq_stack_base__ = .;\r
+        . += __irq_stack_size__;\r
+        . = ALIGN(8);\r
+        __irq_stack_end__ = .;\r
+        __process_stack_base__ = .;\r
+        __main_thread_stack_base__ = .;\r
+        . += __process_stack_size__;\r
+        . = ALIGN(8);\r
+        __process_stack_end__ = .;\r
+        __main_thread_stack_end__ = .;\r
+    } > ram\r
+\r
+    .data : AT(__romdata_start__)\r
+    {\r
+        . = ALIGN(4);\r
+        __data_start__ = .;\r
+        *(.data)\r
+        *(.data.*)\r
+        *(.gnu.linkonce.d.*)\r
+        __sdata_start__ = . + 0x8000;\r
+        *(.sdata)\r
+        *(.sdata.*)\r
+        *(.gnu.linkonce.s.*)\r
+        __data_end__ = .;\r
+    } > ram\r
+\r
+    .sbss :\r
+    {\r
+        __bss_start__ = .;\r
+        *(.sbss)\r
+        *(.sbss.*)\r
+        *(.gnu.linkonce.sb.*)\r
+        *(.scommon)\r
+    } > ram\r
+\r
+    .bss :\r
+    {\r
+        *(.bss)\r
+        *(.bss.*)\r
+        *(.gnu.linkonce.b.*)\r
+        *(COMMON)\r
+        __bss_end__ = .;\r
+    } > ram\r
+\r
+    __heap_base__   = __bss_end__;\r
+    __heap_end__    = __ram_end__;\r
+}\r
diff --git a/os/ports/GCC/PPC/SPC56ELxx/ld/SPC56EL60_LSM.ld b/os/ports/GCC/PPC/SPC56ELxx/ld/SPC56EL60_LSM.ld
new file mode 100644 (file)
index 0000000..3cf9e44
--- /dev/null
@@ -0,0 +1,177 @@
+/*\r
+    ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,\r
+                 2011,2012,2013 Giovanni Di Sirio.\r
+\r
+    This file is part of ChibiOS/RT.\r
+\r
+    ChibiOS/RT is free software; you can redistribute it and/or modify\r
+    it under the terms of the GNU General Public License as published by\r
+    the Free Software Foundation; either version 3 of the License, or\r
+    (at your option) any later version.\r
+\r
+    ChibiOS/RT is distributed in the hope that it will be useful,\r
+    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+    GNU General Public License for more details.\r
+\r
+    You should have received a copy of the GNU General Public License\r
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
+*/\r
+\r
+/*\r
+ * SPC56EL60 memory setup in LSM mode.\r
+ */\r
+__irq_stack_size__      = 0x0000; /* Not yet used.*/\r
+__process_stack_size__  = 0x0800;\r
+\r
+MEMORY\r
+{\r
+    flash     : org = 0x00000000, len = 1M\r
+    ram       : org = 0x40000000, len = 128k\r
+}\r
+\r
+/*\r
+ * Derived constants.\r
+ */\r
+__flash_size__          = LENGTH(flash);\r
+__flash_start__         = ORIGIN(flash);\r
+__flash_end__           = ORIGIN(flash) + LENGTH(flash);\r
+\r
+__ram_size__            = LENGTH(ram);\r
+__ram_start__           = ORIGIN(ram);\r
+__ram_end__             = ORIGIN(ram) + LENGTH(ram);\r
+\r
+SECTIONS\r
+{\r
+    . = ORIGIN(flash);\r
+    .boot : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        KEEP(*(.bam))\r
+        KEEP(*(.crt0))\r
+        . = ALIGN(0x00000800);\r
+        KEEP(*(.vectors))\r
+        /* Note, have to waste the first 64KB because the IVPR register\r
+           requires an alignment of 64KB and the first 64KB cannot be used,\r
+           IVOR0 would conflict with the BAM word. Applications could\r
+           allocate code or data in the first 64KB by using special sections.*/\r
+        . = ALIGN(0x00010000);\r
+        __ivpr_base__ = .;\r
+        KEEP(*(.handlers))\r
+    } > flash\r
+\r
+    constructors : ALIGN(4) SUBALIGN(4)\r
+    {\r
+        PROVIDE(__init_array_start = .);\r
+        KEEP(*(SORT(.init_array.*)))\r
+        KEEP(*(.init_array))\r
+        PROVIDE(__init_array_end = .);\r
+    } > flash\r
+\r
+    destructors : ALIGN(4) SUBALIGN(4)\r
+    {\r
+        PROVIDE(__fini_array_start = .);\r
+        KEEP(*(.fini_array))\r
+        KEEP(*(SORT(.fini_array.*)))\r
+        PROVIDE(__fini_array_end = .);\r
+    } > flash\r
+\r
+    .text_vle : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        *(.text_vle)\r
+        *(.text_vle.*)\r
+        *(.gnu.linkonce.t_vle.*)\r
+    } > flash\r
+\r
+    .text : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        *(.text)\r
+        *(.text.*)\r
+        *(.gnu.linkonce.t.*)\r
+    } > flash\r
+\r
+    .rodata : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        *(.glue_7t)\r
+        *(.glue_7)\r
+        *(.gcc*)\r
+        *(.rodata)\r
+        *(.rodata.*)\r
+        *(.rodata1)\r
+    } > flash\r
+\r
+    .sdata2 : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        __sdata2_start__ = . + 0x8000;\r
+        *(.sdata2)\r
+        *(.sdata2.*)\r
+        *(.gnu.linkonce.s2.*)\r
+        *(.sbss2)\r
+        *(.sbss2.*)\r
+        *(.gnu.linkonce.sb2.*)\r
+    } > flash\r
+\r
+    .eh_frame_hdr :\r
+    {\r
+        *(.eh_frame_hdr)\r
+    } > flash\r
+\r
+    .eh_frame : ONLY_IF_RO\r
+    {\r
+        *(.eh_frame)\r
+    } > flash\r
+\r
+    .romdata : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        __romdata_start__ = .;\r
+    } > flash\r
+\r
+    .stacks :\r
+    {\r
+        . = ALIGN(8);\r
+        __irq_stack_base__ = .;\r
+        . += __irq_stack_size__;\r
+        . = ALIGN(8);\r
+        __irq_stack_end__ = .;\r
+        __process_stack_base__ = .;\r
+        __main_thread_stack_base__ = .;\r
+        . += __process_stack_size__;\r
+        . = ALIGN(8);\r
+        __process_stack_end__ = .;\r
+        __main_thread_stack_end__ = .;\r
+    } > ram\r
+\r
+    .data : AT(__romdata_start__)\r
+    {\r
+        . = ALIGN(4);\r
+        __data_start__ = .;\r
+        *(.data)\r
+        *(.data.*)\r
+        *(.gnu.linkonce.d.*)\r
+        __sdata_start__ = . + 0x8000;\r
+        *(.sdata)\r
+        *(.sdata.*)\r
+        *(.gnu.linkonce.s.*)\r
+        __data_end__ = .;\r
+    } > ram\r
+\r
+    .sbss :\r
+    {\r
+        __bss_start__ = .;\r
+        *(.sbss)\r
+        *(.sbss.*)\r
+        *(.gnu.linkonce.sb.*)\r
+        *(.scommon)\r
+    } > ram\r
+\r
+    .bss :\r
+    {\r
+        *(.bss)\r
+        *(.bss.*)\r
+        *(.gnu.linkonce.b.*)\r
+        *(COMMON)\r
+        __bss_end__ = .;\r
+    } > ram\r
+\r
+    __heap_base__   = __bss_end__;\r
+    __heap_end__    = __ram_end__;\r
+}\r
diff --git a/os/ports/GCC/PPC/SPC56ELxx/ld/SPC56EL70_LSM.ld b/os/ports/GCC/PPC/SPC56ELxx/ld/SPC56EL70_LSM.ld
new file mode 100644 (file)
index 0000000..8a7674b
--- /dev/null
@@ -0,0 +1,177 @@
+/*\r
+    ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,\r
+                 2011,2012,2013 Giovanni Di Sirio.\r
+\r
+    This file is part of ChibiOS/RT.\r
+\r
+    ChibiOS/RT is free software; you can redistribute it and/or modify\r
+    it under the terms of the GNU General Public License as published by\r
+    the Free Software Foundation; either version 3 of the License, or\r
+    (at your option) any later version.\r
+\r
+    ChibiOS/RT is distributed in the hope that it will be useful,\r
+    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+    GNU General Public License for more details.\r
+\r
+    You should have received a copy of the GNU General Public License\r
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
+*/\r
+\r
+/*\r
+ * SPC56EL70 memory setup in LSM mode.\r
+ */\r
+__irq_stack_size__      = 0x0000; /* Not yet used.*/\r
+__process_stack_size__  = 0x0800;\r
+\r
+MEMORY\r
+{\r
+    flash     : org = 0x00000000, len = 2M\r
+    ram       : org = 0x40000000, len = 192k\r
+}\r
+\r
+/*\r
+ * Derived constants.\r
+ */\r
+__flash_size__          = LENGTH(flash);\r
+__flash_start__         = ORIGIN(flash);\r
+__flash_end__           = ORIGIN(flash) + LENGTH(flash);\r
+\r
+__ram_size__            = LENGTH(ram);\r
+__ram_start__           = ORIGIN(ram);\r
+__ram_end__             = ORIGIN(ram) + LENGTH(ram);\r
+\r
+SECTIONS\r
+{\r
+    . = ORIGIN(flash);\r
+    .boot : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        KEEP(*(.bam))\r
+        KEEP(*(.crt0))\r
+        . = ALIGN(0x00000800);\r
+        KEEP(*(.vectors))\r
+        /* Note, have to waste the first 64KB because the IVPR register\r
+           requires an alignment of 64KB and the first 64KB cannot be used,\r
+           IVOR0 would conflict with the BAM word. Applications could\r
+           allocate code or data in the first 64KB by using special sections.*/\r
+        . = ALIGN(0x00010000);\r
+        __ivpr_base__ = .;\r
+        KEEP(*(.handlers))\r
+    } > flash\r
+\r
+    constructors : ALIGN(4) SUBALIGN(4)\r
+    {\r
+        PROVIDE(__init_array_start = .);\r
+        KEEP(*(SORT(.init_array.*)))\r
+        KEEP(*(.init_array))\r
+        PROVIDE(__init_array_end = .);\r
+    } > flash\r
+\r
+    destructors : ALIGN(4) SUBALIGN(4)\r
+    {\r
+        PROVIDE(__fini_array_start = .);\r
+        KEEP(*(.fini_array))\r
+        KEEP(*(SORT(.fini_array.*)))\r
+        PROVIDE(__fini_array_end = .);\r
+    } > flash\r
+\r
+    .text_vle : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        *(.text_vle)\r
+        *(.text_vle.*)\r
+        *(.gnu.linkonce.t_vle.*)\r
+    } > flash\r
+\r
+    .text : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        *(.text)\r
+        *(.text.*)\r
+        *(.gnu.linkonce.t.*)\r
+    } > flash\r
+\r
+    .rodata : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        *(.glue_7t)\r
+        *(.glue_7)\r
+        *(.gcc*)\r
+        *(.rodata)\r
+        *(.rodata.*)\r
+        *(.rodata1)\r
+    } > flash\r
+\r
+    .sdata2 : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        __sdata2_start__ = . + 0x8000;\r
+        *(.sdata2)\r
+        *(.sdata2.*)\r
+        *(.gnu.linkonce.s2.*)\r
+        *(.sbss2)\r
+        *(.sbss2.*)\r
+        *(.gnu.linkonce.sb2.*)\r
+    } > flash\r
+\r
+    .eh_frame_hdr :\r
+    {\r
+        *(.eh_frame_hdr)\r
+    } > flash\r
+\r
+    .eh_frame : ONLY_IF_RO\r
+    {\r
+        *(.eh_frame)\r
+    } > flash\r
+\r
+    .romdata : ALIGN(16) SUBALIGN(16)\r
+    {\r
+        __romdata_start__ = .;\r
+    } > flash\r
+\r
+    .stacks :\r
+    {\r
+        . = ALIGN(8);\r
+        __irq_stack_base__ = .;\r
+        . += __irq_stack_size__;\r
+        . = ALIGN(8);\r
+        __irq_stack_end__ = .;\r
+        __process_stack_base__ = .;\r
+        __main_thread_stack_base__ = .;\r
+        . += __process_stack_size__;\r
+        . = ALIGN(8);\r
+        __process_stack_end__ = .;\r
+        __main_thread_stack_end__ = .;\r
+    } > ram\r
+\r
+    .data : AT(__romdata_start__)\r
+    {\r
+        . = ALIGN(4);\r
+        __data_start__ = .;\r
+        *(.data)\r
+        *(.data.*)\r
+        *(.gnu.linkonce.d.*)\r
+        __sdata_start__ = . + 0x8000;\r
+        *(.sdata)\r
+        *(.sdata.*)\r
+        *(.gnu.linkonce.s.*)\r
+        __data_end__ = .;\r
+    } > ram\r
+\r
+    .sbss :\r
+    {\r
+        __bss_start__ = .;\r
+        *(.sbss)\r
+        *(.sbss.*)\r
+        *(.gnu.linkonce.sb.*)\r
+        *(.scommon)\r
+    } > ram\r
+\r
+    .bss :\r
+    {\r
+        *(.bss)\r
+        *(.bss.*)\r
+        *(.gnu.linkonce.b.*)\r
+        *(COMMON)\r
+        __bss_end__ = .;\r
+    } > ram\r
+\r
+    __heap_base__   = __bss_end__;\r
+    __heap_end__    = __ram_end__;\r
+}\r
diff --git a/os/ports/GCC/PPC/SPC56ELxx/port.mk b/os/ports/GCC/PPC/SPC56ELxx/port.mk
new file mode 100644 (file)
index 0000000..a29eea8
--- /dev/null
@@ -0,0 +1,12 @@
+# List of the ChibiOS/RT SPC56ELxx port files.\r
+PORTSRC = ${CHIBIOS}/os/ports/GCC/PPC/chcore.c\r
+\r
+PORTASM = ${CHIBIOS}/os/ports/GCC/PPC/SPC56ELxx/bam.s \\r
+          ${CHIBIOS}/os/ports/GCC/PPC/crt0.s \\r
+          ${CHIBIOS}/os/ports/GCC/PPC/SPC56ELxx/ivor.s \\r
+          ${CHIBIOS}/os/ports/GCC/PPC/SPC56ELxx/vectors.s\r
+\r
+PORTINC = ${CHIBIOS}/os/ports/GCC/PPC \\r
+          ${CHIBIOS}/os/ports/GCC/PPC/SPC56ELxx\r
+\r
+PORTLD  = ${CHIBIOS}/os/ports/GCC/PPC/SPC56ELxx/ld\r
diff --git a/os/ports/GCC/PPC/SPC56ELxx/ppcparams.h b/os/ports/GCC/PPC/SPC56ELxx/ppcparams.h
new file mode 100644 (file)
index 0000000..e8147ce
--- /dev/null
@@ -0,0 +1,67 @@
+/*\r
+    ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,\r
+                 2011,2012,2013 Giovanni Di Sirio.\r
+\r
+    This file is part of ChibiOS/RT.\r
+\r
+    ChibiOS/RT is free software; you can redistribute it and/or modify\r
+    it under the terms of the GNU General Public License as published by\r
+    the Free Software Foundation; either version 3 of the License, or\r
+    (at your option) any later version.\r
+\r
+    ChibiOS/RT is distributed in the hope that it will be useful,\r
+    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+    GNU General Public License for more details.\r
+\r
+    You should have received a copy of the GNU General Public License\r
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
+*/\r
+\r
+/**\r
+ * @file    SPC56ELxx/ppcparams.h\r
+ * @brief   PowerPC parameters for the SPC56ELxx.\r
+ *\r
+ * @defgroup PPC_SPC56ELxx SPC56ELxx Specific Parameters\r
+ * @ingroup PPC_SPECIFIC\r
+ * @details This file contains the PowerPC specific parameters for the\r
+ *          SPC56ELxx platform.\r
+ * @{\r
+ */\r
+\r
+#ifndef _PPCPARAMS_H_\r
+#define _PPCPARAMS_H_\r
+\r
+/**\r
+ * @brief   PPC core model.\r
+ */\r
+#define PPC_VARIANT             PPC_VARIANT_e200z4\r
+\r
+/**\r
+ * @brief   Number of writable bits in IVPR register.\r
+ */\r
+#define PPC_IVPR_BITS           16\r
+\r
+/**\r
+ * @brief   IVORx registers support.\r
+ */\r
+#define PPC_SUPPORTS_IVORS      TRUE\r
+\r
+/**\r
+ * @brief   Book E instruction set support.\r
+ */\r
+#define PPC_SUPPORTS_BOOKE      TRUE\r
+\r
+/**\r
+ * @brief   VLE instruction set support.\r
+ */\r
+#define PPC_SUPPORTS_VLE        TRUE\r
+\r
+/**\r
+ * @brief   Supports VLS Load/Store Multiple Volatile instructions.\r
+ */\r
+#define PPC_SUPPORTS_VLE_MULTI  TRUE\r
+\r
+#endif /* _PPCPARAMS_H_ */\r
+\r
+/** @} */\r
diff --git a/os/ports/GCC/PPC/SPC56ELxx/vectors.s b/os/ports/GCC/PPC/SPC56ELxx/vectors.s
new file mode 100644 (file)
index 0000000..45726c0
--- /dev/null
@@ -0,0 +1,1089 @@
+/*\r
+    ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,\r
+                 2011,2012,2013 Giovanni Di Sirio.\r
+\r
+    This file is part of ChibiOS/RT.\r
+\r
+    ChibiOS/RT is free software; you can redistribute it and/or modify\r
+    it under the terms of the GNU General Public License as published by\r
+    the Free Software Foundation; either version 3 of the License, or\r
+    (at your option) any later version.\r
+\r
+    ChibiOS/RT is distributed in the hope that it will be useful,\r
+    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+    GNU General Public License for more details.\r
+\r
+    You should have received a copy of the GNU General Public License\r
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
+*/\r
+\r
+/**\r
+ * @file    SPC56ELxx/vectors.s\r
+ * @brief   SPC56ELxx vectors table.\r
+ *\r
+ * @addtogroup PPC_CORE\r
+ * @{\r
+ */\r
+\r
+/*\r
+ * Imports the PPC configuration headers.\r
+ */\r
+#define _FROM_ASM_\r
+#include "chconf.h"\r
+#include "chcore.h"\r
+\r
+#if !defined(__DOXYGEN__)\r
+\r
+        /* BAM info, SWT off, WTE off, VLE from settings.*/\r
+        .section    .bam, "ax"\r
+#if PPC_USE_VLE\r
+        .long       0x015A0000\r
+#else\r
+        .long       0x005A0000\r
+#endif\r
+        .long       _boot_address\r
+\r
+        /* Software vectors table. The vectors are accessed from the IVOR4\r
+           handler only. In order to declare an interrupt handler just create\r
+           a function withe the same name of a vector, the symbol will\r
+           override the weak symbol declared here.*/\r
+        .section    .vectors, "ax"\r
+        .align         4\r
+        .globl      _vectors\r
+_vectors:\r
+        .long       vector0\r
+        .long       vector1\r
+        .long       vector2\r
+        .long       vector3\r
+        .long       vector4\r
+        .long       vector5\r
+        .long       vector6\r
+        .long       vector7\r
+        .long       vector8\r
+        .long       vector9\r
+        .long       vector10\r
+        .long       vector11\r
+        .long       vector12\r
+        .long       vector13\r
+        .long       vector14\r
+        .long       vector15\r
+        .long       vector16\r
+        .long       vector17\r
+        .long       vector18\r
+        .long       vector19\r
+        .long       vector20\r
+        .long       vector21\r
+        .long       vector22\r
+        .long       vector23\r
+        .long       vector24\r
+        .long       vector25\r
+        .long       vector26\r
+        .long       vector27\r
+        .long       vector28\r
+        .long       vector29\r
+        .long       vector30\r
+        .long       vector31\r
+        .long       vector32\r
+        .long       vector33\r
+        .long       vector34\r
+        .long       vector35\r
+        .long       vector36\r
+        .long       vector37\r
+        .long       vector38\r
+        .long       vector39\r
+        .long       vector40\r
+        .long       vector41\r
+        .long       vector42\r
+        .long       vector43\r
+        .long       vector44\r
+        .long       vector45\r
+        .long       vector46\r
+        .long       vector47\r
+        .long       vector48\r
+        .long       vector49\r
+        .long       vector50\r
+        .long       vector51\r
+        .long       vector52\r
+        .long       vector53\r
+        .long       vector54\r
+        .long       vector55\r
+        .long       vector56\r
+        .long       vector57\r
+        .long       vector58\r
+        .long       vector59\r
+        .long       vector60\r
+        .long       vector61\r
+        .long       vector62\r
+        .long       vector63\r
+        .long       vector64\r
+        .long       vector65\r
+        .long       vector66\r
+        .long       vector67\r
+        .long       vector68\r
+        .long       vector69\r
+        .long       vector70\r
+        .long       vector71\r
+        .long       vector72\r
+        .long       vector73\r
+        .long       vector74\r
+        .long       vector75\r
+        .long       vector76\r
+        .long       vector77\r
+        .long       vector78\r
+        .long       vector79\r
+        .long       vector80\r
+        .long       vector81\r
+        .long       vector82\r
+        .long       vector83\r
+        .long       vector84\r
+        .long       vector85\r
+        .long       vector86\r
+        .long       vector87\r
+        .long       vector88\r
+        .long       vector89\r
+        .long       vector90\r
+        .long       vector91\r
+        .long       vector92\r
+        .long       vector93\r
+        .long       vector94\r
+        .long       vector95\r
+        .long       vector96\r
+        .long       vector97\r
+        .long       vector98\r
+        .long       vector99\r
+        .long       vector100\r
+        .long       vector101\r
+        .long       vector102\r
+        .long       vector103\r
+        .long       vector104\r
+        .long       vector105\r
+        .long       vector106\r
+        .long       vector107\r
+        .long       vector108\r
+        .long       vector109\r
+        .long       vector110\r
+        .long       vector111\r
+        .long       vector112\r
+        .long       vector113\r
+        .long       vector114\r
+        .long       vector115\r
+        .long       vector116\r
+        .long       vector117\r
+        .long       vector118\r
+        .long       vector119\r
+        .long       vector120\r
+        .long       vector121\r
+        .long       vector122\r
+        .long       vector123\r
+        .long       vector124\r
+        .long       vector125\r
+        .long       vector126\r
+        .long       vector127\r
+        .long       vector128\r
+        .long       vector129\r
+        .long       vector130\r
+        .long       vector131\r
+        .long       vector132\r
+        .long       vector133\r
+        .long       vector134\r
+        .long       vector135\r
+        .long       vector136\r
+        .long       vector137\r
+        .long       vector138\r
+        .long       vector139\r
+        .long       vector140\r
+        .long       vector141\r
+        .long       vector142\r
+        .long       vector143\r
+        .long       vector144\r
+        .long       vector145\r
+        .long       vector146\r
+        .long       vector147\r
+        .long       vector148\r
+        .long       vector149\r
+        .long       vector150\r
+        .long       vector151\r
+        .long       vector152\r
+        .long       vector153\r
+        .long       vector154\r
+        .long       vector155\r
+        .long       vector156\r
+        .long       vector157\r
+        .long       vector158\r
+        .long       vector159\r
+        .long       vector160\r
+        .long       vector161\r
+        .long       vector162\r
+        .long       vector163\r
+        .long       vector164\r
+        .long       vector165\r
+        .long       vector166\r
+        .long       vector167\r
+        .long       vector168\r
+        .long       vector169\r
+        .long       vector170\r
+        .long       vector171\r
+        .long       vector172\r
+        .long       vector173\r
+        .long       vector174\r
+        .long       vector175\r
+        .long       vector176\r
+        .long       vector177\r
+        .long       vector178\r
+        .long       vector179\r
+        .long       vector180\r
+        .long       vector181\r
+        .long       vector182\r
+        .long       vector183\r
+        .long       vector184\r
+        .long       vector185\r
+        .long       vector186\r
+        .long       vector187\r
+        .long       vector188\r
+        .long       vector189\r
+        .long       vector190\r
+        .long       vector191\r
+        .long       vector192\r
+        .long       vector193\r
+        .long       vector194\r
+        .long       vector195\r
+        .long       vector196\r
+        .long       vector197\r
+        .long       vector198\r
+        .long       vector199\r
+        .long       vector200\r
+        .long       vector201\r
+        .long       vector202\r
+        .long       vector203\r
+        .long       vector204\r
+        .long       vector205\r
+        .long       vector206\r
+        .long       vector207\r
+        .long       vector208\r
+        .long       vector209\r
+        .long       vector210\r
+        .long       vector211\r
+        .long       vector212\r
+        .long       vector213\r
+        .long       vector214\r
+        .long       vector215\r
+        .long       vector216\r
+        .long       vector217\r
+        .long       vector218\r
+        .long       vector219\r
+        .long       vector220\r
+        .long       vector221\r
+        .long       vector222\r
+        .long       vector223\r
+        .long       vector224\r
+        .long       vector225\r
+        .long       vector226\r
+        .long       vector227\r
+        .long       vector228\r
+        .long       vector229\r
+        .long       vector230\r
+        .long       vector231\r
+        .long       vector232\r
+        .long       vector233\r
+        .long       vector234\r
+        .long       vector235\r
+        .long       vector236\r
+        .long       vector237\r
+        .long       vector238\r
+        .long       vector239\r
+        .long       vector240\r
+        .long       vector241\r
+        .long       vector242\r
+        .long       vector243\r
+        .long       vector244\r
+        .long       vector245\r
+        .long       vector246\r
+        .long       vector247\r
+        .long       vector248\r
+        .long       vector249\r
+        .long       vector250\r
+        .long       vector251\r
+        .long       vector252\r
+        .long       vector253\r
+        .long       vector254\r
+        .long       vector255\r
+\r
+        .text\r
+        .align      2\r
+        .weak       vector0\r
+vector0:\r
+\r
+        .weak       vector1\r
+vector1:\r
+\r
+        .weak       vector2\r
+vector2:\r
+\r
+        .weak       vector3\r
+vector3:\r
+\r
+        .weak       vector4\r
+vector4:\r
+\r
+        .weak       vector5\r
+vector5:\r
+\r
+        .weak       vector6\r
+vector6:\r
+\r
+        .weak       vector7\r
+vector7:\r
+\r
+        .weak       vector8\r
+vector8:\r
+\r
+        .weak       vector9\r
+vector9:\r
+\r
+        .weak       vector10\r
+vector10:\r
+\r
+        .weak       vector11\r
+vector11:\r
+\r
+        .weak       vector12\r
+vector12:\r
+\r
+        .weak       vector13\r
+vector13:\r
+\r
+        .weak       vector14\r
+vector14:\r
+\r
+        .weak       vector15\r
+vector15:\r
+\r
+        .weak       vector16\r
+vector16:\r
+\r
+        .weak       vector17\r
+vector17:\r
+\r
+        .weak       vector18\r
+vector18:\r
+\r
+        .weak       vector19\r
+vector19:\r
+\r
+        .weak       vector20\r
+vector20:\r
+\r
+        .weak       vector21\r
+vector21:\r
+\r
+        .weak       vector22\r
+vector22:\r
+\r
+        .weak       vector23\r
+vector23:\r
+\r
+        .weak       vector24\r
+vector24:\r
+\r
+        .weak       vector25\r
+vector25:\r
+\r
+        .weak       vector26\r
+vector26:\r
+\r
+        .weak       vector27\r
+vector27:\r
+\r
+        .weak       vector28\r
+vector28:\r
+\r
+        .weak       vector29\r
+vector29:\r
+\r
+        .weak       vector30\r
+vector30:\r
+\r
+        .weak       vector31\r
+vector31:\r
+\r
+        .weak       vector32\r
+vector32:\r
+\r
+        .weak       vector33\r
+vector33:\r
+\r
+        .weak       vector34\r
+vector34:\r
+\r
+        .weak       vector35\r
+vector35:\r
+\r
+        .weak       vector36\r
+vector36:\r
+\r
+        .weak       vector37\r
+vector37:\r
+\r
+        .weak       vector38\r
+vector38:\r
+\r
+        .weak       vector39\r
+vector39:\r
+\r
+        .weak       vector40\r
+vector40:\r
+\r
+        .weak       vector41\r
+vector41:\r
+\r
+        .weak       vector42\r
+vector42:\r
+\r
+        .weak       vector43\r
+vector43:\r
+\r
+        .weak       vector44\r
+vector44:\r
+\r
+        .weak       vector45\r
+vector45:\r
+\r
+        .weak       vector46\r
+vector46:\r
+\r
+        .weak       vector47\r
+vector47:\r
+\r
+        .weak       vector48\r
+vector48:\r
+\r
+        .weak       vector49\r
+vector49:\r
+\r
+        .weak       vector50\r
+vector50:\r
+\r
+        .weak       vector51\r
+vector51:\r
+\r
+        .weak       vector52\r
+vector52:\r
+\r
+        .weak       vector53\r
+vector53:\r
+\r
+        .weak       vector54\r
+vector54:\r
+\r
+        .weak       vector55\r
+vector55:\r
+\r
+        .weak       vector56\r
+vector56:\r
+\r
+        .weak       vector57\r
+vector57:\r
+\r
+        .weak       vector58\r
+vector58:\r
+\r
+        .weak       vector59\r
+vector59:\r
+\r
+        .weak       vector60\r
+vector60:\r
+\r
+        .weak       vector61\r
+vector61:\r
+\r
+        .weak       vector62\r
+vector62:\r
+\r
+        .weak       vector63\r
+vector63:\r
+\r
+        .weak       vector64\r
+vector64:\r
+\r
+        .weak       vector65\r
+vector65:\r
+\r
+        .weak       vector66\r
+vector66:\r
+\r
+        .weak       vector67\r
+vector67:\r
+\r
+        .weak       vector68\r
+vector68:\r
+\r
+        .weak       vector69\r
+vector69:\r
+\r
+        .weak       vector70\r
+vector70:\r
+\r
+        .weak       vector71\r
+vector71:\r
+\r
+        .weak       vector72\r
+vector72:\r
+\r
+        .weak       vector73\r
+vector73:\r
+\r
+        .weak       vector74\r
+vector74:\r
+\r
+        .weak       vector75\r
+vector75:\r
+\r
+        .weak       vector76\r
+vector76:\r
+\r
+        .weak       vector77\r
+vector77:\r
+\r
+        .weak       vector78\r
+vector78:\r
+\r
+        .weak       vector79\r
+vector79:\r
+\r
+        .weak       vector80\r
+vector80:\r
+\r
+        .weak       vector81\r
+vector81:\r
+\r
+        .weak       vector82\r
+vector82:\r
+\r
+        .weak       vector83\r
+vector83:\r
+\r
+        .weak       vector84\r
+vector84:\r
+\r
+        .weak       vector85\r
+vector85:\r
+\r
+        .weak       vector86\r
+vector86:\r
+\r
+        .weak       vector87\r
+vector87:\r
+\r
+        .weak       vector88\r
+vector88:\r
+\r
+        .weak       vector89\r
+vector89:\r
+\r
+        .weak       vector90\r
+vector90:\r
+\r
+        .weak       vector91\r
+vector91:\r
+\r
+        .weak       vector92\r
+vector92:\r
+\r
+        .weak       vector93\r
+vector93:\r
+\r
+        .weak       vector94\r
+vector94:\r
+\r
+        .weak       vector95\r
+vector95:\r
+\r
+        .weak       vector96\r
+vector96:\r
+\r
+        .weak       vector97\r
+vector97:\r
+\r
+        .weak       vector98\r
+vector98:\r
+\r
+        .weak       vector99\r
+vector99:\r
+\r
+        .weak       vector100\r
+vector100:\r
+\r
+        .weak       vector101\r
+vector101:\r
+\r
+        .weak       vector102\r
+vector102:\r
+\r
+        .weak       vector103\r
+vector103:\r
+\r
+        .weak       vector104\r
+vector104:\r
+\r
+        .weak       vector105\r
+vector105:\r
+\r
+        .weak       vector106\r
+vector106:\r
+\r
+        .weak       vector107\r
+vector107:\r
+\r
+        .weak       vector108\r
+vector108:\r
+\r
+        .weak       vector109\r
+vector109:\r
+\r
+        .weak       vector110\r
+vector110:\r
+\r
+        .weak       vector111\r
+vector111:\r
+\r
+        .weak       vector112\r
+vector112:\r
+\r
+        .weak       vector113\r
+vector113:\r
+\r
+        .weak       vector114\r
+vector114:\r
+\r
+        .weak       vector115\r
+vector115:\r
+\r
+        .weak       vector116\r
+vector116:\r
+\r
+        .weak       vector117\r
+vector117:\r
+\r
+        .weak       vector118\r
+vector118:\r
+\r
+        .weak       vector119\r
+vector119:\r
+\r
+        .weak       vector120\r
+vector120:\r
+\r
+        .weak       vector121\r
+vector121:\r
+\r
+        .weak       vector122\r
+vector122:\r
+\r
+        .weak       vector123\r
+vector123:\r
+\r
+        .weak       vector124\r
+vector124:\r
+\r
+        .weak       vector125\r
+vector125:\r
+\r
+        .weak       vector126\r
+vector126:\r
+\r
+        .weak       vector127\r
+vector127:\r
+\r
+        .weak       vector128\r
+vector128:\r
+\r
+        .weak       vector129\r
+vector129:\r
+\r
+        .weak       vector130\r
+vector130:\r
+\r
+        .weak       vector131\r
+vector131:\r
+\r
+        .weak       vector132\r
+vector132:\r
+\r
+        .weak       vector133\r
+vector133:\r
+\r
+        .weak       vector134\r
+vector134:\r
+\r
+        .weak       vector135\r
+vector135:\r
+\r
+        .weak       vector136\r
+vector136:\r
+\r
+        .weak       vector137\r
+vector137:\r
+\r
+        .weak       vector138\r
+vector138:\r
+\r
+        .weak       vector139\r
+vector139:\r
+\r
+        .weak       vector140\r
+vector140:\r
+\r
+        .weak       vector141\r
+vector141:\r
+\r
+        .weak       vector142\r
+vector142:\r
+\r
+        .weak       vector143\r
+vector143:\r
+\r
+        .weak       vector144\r
+vector144:\r
+\r
+        .weak       vector145\r
+vector145:\r
+\r
+        .weak       vector146\r
+vector146:\r
+\r
+        .weak       vector147\r
+vector147:\r
+\r
+        .weak       vector148\r
+vector148:\r
+\r
+        .weak       vector149\r
+vector149:\r
+\r
+        .weak       vector150\r
+vector150:\r
+\r
+        .weak       vector151\r
+vector151:\r
+\r
+        .weak       vector152\r
+vector152:\r
+\r
+        .weak       vector153\r
+vector153:\r
+\r
+        .weak       vector154\r
+vector154:\r
+\r
+        .weak       vector155\r
+vector155:\r
+\r
+        .weak       vector156\r
+vector156:\r
+\r
+        .weak       vector157\r
+vector157:\r
+\r
+        .weak       vector158\r
+vector158:\r
+\r
+        .weak       vector159\r
+vector159:\r
+\r
+        .weak       vector160\r
+vector160:\r
+\r
+        .weak       vector161\r
+vector161:\r
+\r
+        .weak       vector162\r
+vector162:\r
+\r
+        .weak       vector163\r
+vector163:\r
+\r
+        .weak       vector164\r
+vector164:\r
+\r
+        .weak       vector165\r
+vector165:\r
+\r
+        .weak       vector166\r
+vector166:\r
+\r
+        .weak       vector167\r
+vector167:\r
+\r
+        .weak       vector168\r
+vector168:\r
+\r
+        .weak       vector169\r
+vector169:\r
+\r
+        .weak       vector170\r
+vector170:\r
+\r
+        .weak       vector171\r
+vector171:\r
+\r
+        .weak       vector172\r
+vector172:\r
+\r
+        .weak       vector173\r
+vector173:\r
+\r
+        .weak       vector174\r
+vector174:\r
+\r
+        .weak       vector175\r
+vector175:\r
+\r
+        .weak       vector176\r
+vector176:\r
+\r
+        .weak       vector177\r
+vector177:\r
+\r
+        .weak       vector178\r
+vector178:\r
+\r
+        .weak       vector179\r
+vector179:\r
+\r
+        .weak       vector180\r
+vector180:\r
+\r
+        .weak       vector181\r
+vector181:\r
+\r
+        .weak       vector182\r
+vector182:\r
+\r
+        .weak       vector183\r
+vector183:\r
+\r
+        .weak       vector184\r
+vector184:\r
+\r
+        .weak       vector185\r
+vector185:\r
+\r
+        .weak       vector186\r
+vector186:\r
+\r
+        .weak       vector187\r
+vector187:\r
+\r
+        .weak       vector188\r
+vector188:\r
+\r
+        .weak       vector189\r
+vector189:\r
+\r
+        .weak       vector190\r
+vector190:\r
+\r
+        .weak       vector191\r
+vector191:\r
+\r
+        .weak       vector192\r
+vector192:\r
+\r
+        .weak       vector193\r
+vector193:\r
+\r
+        .weak       vector194\r
+vector194:\r
+\r
+        .weak       vector195\r
+vector195:\r
+\r
+        .weak       vector196\r
+vector196:\r
+\r
+        .weak       vector197\r
+vector197:\r
+\r
+        .weak       vector198\r
+vector198:\r
+\r
+        .weak       vector199\r
+vector199:\r
+\r
+        .weak       vector200\r
+vector200:\r
+\r
+        .weak       vector201\r
+vector201:\r
+\r
+        .weak       vector202\r
+vector202:\r
+\r
+        .weak       vector203\r
+vector203:\r
+\r
+        .weak       vector204\r
+vector204:\r
+\r
+        .weak       vector205\r
+vector205:\r
+\r
+        .weak       vector206\r
+vector206:\r
+\r
+        .weak       vector207\r
+vector207:\r
+\r
+        .weak       vector208\r
+vector208:\r
+\r
+        .weak       vector209\r
+vector209:\r
+\r
+        .weak       vector210\r
+vector210:\r
+\r
+        .weak       vector211\r
+vector211:\r
+\r
+        .weak       vector212\r
+vector212:\r
+\r
+        .weak       vector213\r
+vector213:\r
+\r
+        .weak       vector214\r
+vector214:\r
+\r
+        .weak       vector215\r
+vector215:\r
+\r
+        .weak       vector216\r
+vector216:\r
+\r
+        .weak       vector217\r
+vector217:\r
+\r
+        .weak       vector218\r
+vector218:\r
+\r
+        .weak       vector219\r
+vector219:\r
+\r
+        .weak       vector220\r
+vector220:\r
+\r
+        .weak       vector221\r
+vector221:\r
+\r
+        .weak       vector222\r
+vector222:\r
+\r
+        .weak       vector223\r
+vector223:\r
+\r
+        .weak       vector224\r
+vector224:\r
+\r
+        .weak       vector225\r
+vector225:\r
+\r
+        .weak       vector226\r
+vector226:\r
+\r
+        .weak       vector227\r
+vector227:\r
+\r
+        .weak       vector228\r
+vector228:\r
+\r
+        .weak       vector229\r
+vector229:\r
+\r
+        .weak       vector230\r
+vector230:\r
+\r
+        .weak       vector231\r
+vector231:\r
+\r
+        .weak       vector232\r
+vector232:\r
+\r
+        .weak       vector233\r
+vector233:\r
+\r
+        .weak       vector234\r
+vector234:\r
+\r
+        .weak       vector235\r
+vector235:\r
+\r
+        .weak       vector236\r
+vector236:\r
+\r
+        .weak       vector237\r
+vector237:\r
+\r
+        .weak       vector238\r
+vector238:\r
+\r
+        .weak       vector239\r
+vector239:\r
+\r
+        .weak       vector240\r
+vector240:\r
+\r
+        .weak       vector241\r
+vector241:\r
+\r
+        .weak       vector242\r
+vector242:\r
+\r
+        .weak       vector243\r
+vector243:\r
+\r
+        .weak       vector244\r
+vector244:\r
+\r
+        .weak       vector245\r
+vector245:\r
+\r
+        .weak       vector246\r
+vector246:\r
+\r
+        .weak       vector247\r
+vector247:\r
+\r
+        .weak       vector248\r
+vector248:\r
+\r
+        .weak       vector249\r
+vector249:\r
+\r
+        .weak       vector250\r
+vector250:\r
+\r
+        .weak       vector251\r
+vector251:\r
+\r
+        .weak       vector252\r
+vector252:\r
+\r
+        .weak       vector253\r
+vector253:\r
+\r
+        .weak       vector254\r
+vector254:\r
+\r
+        .weak       vector255\r
+vector255:\r
+\r
+        .weak      _unhandled_irq\r
+        .type       _unhandled_irq, @function\r
+_unhandled_irq:\r
+         b          _unhandled_irq\r
+\r
+#endif /* !defined(__DOXYGEN__) */\r
+\r
+/** @} */\r