From ee5dade2c6b23cdef0eef4a24fe64f7e6c2c23e6 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Thu, 18 Jul 2013 10:00:13 +0000 Subject: [PATCH] git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5982 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/ports/GCC/PPC/SPC560Bxx/bam.s | 47 ++++ os/ports/GCC/PPC/SPC560Bxx/core.s | 214 ++++++++++++++++ os/ports/GCC/PPC/SPC560Bxx/ld/SPC560B64.ld | 182 +++++++++++++ os/ports/GCC/PPC/SPC560Bxx/port.mk | 13 + os/ports/GCC/PPC/SPC560Bxx/ppcparams.h | 72 ++++++ os/ports/GCC/PPC/SPC560Bxx/vectors.h | 79 ++++++ os/ports/GCC/PPC/SPC560Bxx/vectors.s | 285 +++++++++++++++++++++ 7 files changed, 892 insertions(+) create mode 100644 os/ports/GCC/PPC/SPC560Bxx/bam.s create mode 100644 os/ports/GCC/PPC/SPC560Bxx/core.s create mode 100644 os/ports/GCC/PPC/SPC560Bxx/ld/SPC560B64.ld create mode 100644 os/ports/GCC/PPC/SPC560Bxx/port.mk create mode 100644 os/ports/GCC/PPC/SPC560Bxx/ppcparams.h create mode 100644 os/ports/GCC/PPC/SPC560Bxx/vectors.h create mode 100644 os/ports/GCC/PPC/SPC560Bxx/vectors.s diff --git a/os/ports/GCC/PPC/SPC560Bxx/bam.s b/os/ports/GCC/PPC/SPC560Bxx/bam.s new file mode 100644 index 000000000..28792c3c3 --- /dev/null +++ b/os/ports/GCC/PPC/SPC560Bxx/bam.s @@ -0,0 +1,47 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, + 2011,2012,2013 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560Dxx/bam.s + * @brief SPC560Dxx boot assistant record. + * + * @addtogroup PPC_CORE + * @{ + */ + +#if !defined(__DOXYGEN__) + + /* BAM record.*/ + .section .bam, "ax" + .long 0x015A0000 + .long _reset_address + + .align 2 + .globl _reset_address + .type _reset_address, @function +_reset_address: + bl _coreinit + bl _ivinit + + b _boot_address + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/ports/GCC/PPC/SPC560Bxx/core.s b/os/ports/GCC/PPC/SPC560Bxx/core.s new file mode 100644 index 000000000..434f96fa3 --- /dev/null +++ b/os/ports/GCC/PPC/SPC560Bxx/core.s @@ -0,0 +1,214 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, + 2011,2012,2013 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560Dxx/core.s + * @brief e200z0 core configuration. + * + * @addtogroup PPC_CORE + * @{ + */ + +/** + * @name BUCSR registers definitions + * @{ + */ +#define BUCSR_BPEN 0x00000001 +#define BUCSR_BALLOC_BFI 0x00000200 +/** @} */ + +/** + * @name BUCSR default settings + * @{ + */ +#define BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BALLOC_BFI) +/** @} */ + +/** + * @name MSR register definitions + * @{ + */ +#define MSR_WE 0x00040000 +#define MSR_CE 0x00020000 +#define MSR_EE 0x00008000 +#define MSR_PR 0x00004000 +#define MSR_ME 0x00001000 +#define MSR_DE 0x00000200 +#define MSR_IS 0x00000020 +#define MSR_DS 0x00000010 +#define MSR_RI 0x00000002 +/** @} */ + +/** + * @name MSR default settings + * @{ + */ +#define MSR_DEFAULT (MSR_WE | MSR_CE | MSR_ME) +/** @} */ + +#if !defined(__DOXYGEN__) + + .section .coreinit, "ax" + + .align 2 + .globl _coreinit + .type _coreinit, @function +_coreinit: + /* + * RAM clearing, this device requires a write to all RAM location in + * order to initialize the ECC detection hardware, this is going to + * slow down the startup but there is no way around. + */ + xor %r0, %r0, %r0 + xor %r1, %r1, %r1 + xor %r2, %r2, %r2 + xor %r3, %r3, %r3 + xor %r4, %r4, %r4 + xor %r5, %r5, %r5 + xor %r6, %r6, %r6 + xor %r7, %r7, %r7 + xor %r8, %r8, %r8 + xor %r9, %r9, %r9 + xor %r10, %r10, %r10 + xor %r11, %r11, %r11 + xor %r12, %r12, %r12 + xor %r13, %r13, %r13 + xor %r14, %r14, %r14 + xor %r15, %r15, %r15 + xor %r16, %r16, %r16 + xor %r17, %r17, %r17 + xor %r18, %r18, %r18 + xor %r19, %r19, %r19 + xor %r20, %r20, %r20 + xor %r21, %r21, %r21 + xor %r22, %r22, %r22 + xor %r23, %r23, %r23 + xor %r24, %r24, %r24 + xor %r25, %r25, %r25 + xor %r26, %r26, %r26 + xor %r27, %r27, %r27 + xor %r28, %r28, %r28 + xor %r29, %r29, %r29 + xor %r30, %r30, %r30 + xor %r31, %r31, %r31 + lis %r4, __ram_start__@h + ori %r4, %r4, __ram_start__@l + lis %r5, __ram_end__@h + ori %r5, %r5, __ram_end__@l +.cleareccloop: + cmpl %cr0, %r4, %r5 + bge %cr0, .cleareccend + stmw %r16, 0(%r4) + addi %r4, %r4, 64 + b .cleareccloop +.cleareccend: + + /* + * Branch prediction enabled. + */ + li %r3, BUCSR_DEFAULT + mtspr 1013, %r3 /* BUCSR */ + + blr + + /* + * Exception vectors initialization. + */ + .global _ivinit + .type _ivinit, @function +_ivinit: + /* MSR initialization.*/ + lis %r3, MSR_DEFAULT@h + ori %r3, %r3, MSR_DEFAULT@l + mtMSR %r3 + + /* IVPR initialization.*/ + lis %r3, __ivpr_base__@h + ori %r3, %r3, __ivpr_base__@l + mtIVPR %r3 + + blr + + .section .ivors, "ax" + + .globl IVORS +IVORS: +IVOR0: b IVOR0 + .align 4 +IVOR1: b _IVOR1 + .align 4 +IVOR2: b _IVOR2 + .align 4 +IVOR3: b _IVOR3 + .align 4 +IVOR4: b _IVOR4 + .align 4 +IVOR5: b _IVOR5 + .align 4 +IVOR6: b _IVOR6 + .align 4 +IVOR7: b _IVOR7 + .align 4 +IVOR8: b _IVOR8 + .align 4 +IVOR9: b _IVOR9 + .align 4 +IVOR10: b _IVOR10 + .align 4 +IVOR11: b _IVOR11 + .align 4 +IVOR12: b _IVOR12 + .align 4 +IVOR13: b _IVOR13 + .align 4 +IVOR14: b _IVOR14 + .align 4 +IVOR15: b _IVOR15 + + .section .handlers, "ax" + + /* + * Unhandled exceptions handler. + */ + .weak _IVOR0, _IVOR1, _IVOR2, _IVOR3, _IVOR4, _IVOR5 + .weak _IVOR6, _IVOR7, _IVOR8, _IVOR9, _IVOR10, _IVOR11 + .weak _IVOR12, _IVOR13, _IVOR14, _IVOR15 + .weak _unhandled_exception +_IVOR0: +_IVOR1: +_IVOR2: +_IVOR3: +_IVOR5: +_IVOR6: +_IVOR7: +_IVOR8: +_IVOR9: +_IVOR11: +_IVOR12: +_IVOR13: +_IVOR14: +_IVOR15: + .type _unhandled_exception, @function +_unhandled_exception: + b _unhandled_exception + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/ports/GCC/PPC/SPC560Bxx/ld/SPC560B64.ld b/os/ports/GCC/PPC/SPC560Bxx/ld/SPC560B64.ld new file mode 100644 index 000000000..a87bc31bb --- /dev/null +++ b/os/ports/GCC/PPC/SPC560Bxx/ld/SPC560B64.ld @@ -0,0 +1,182 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, + 2011,2012,2013 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * SPC560B64 memory setup. + */ +__irq_stack_size__ = 0x0000; /* Not yet used.*/ +__process_stack_size__ = 0x0800; + +MEMORY +{ + flash : org = 0x00000000, len = 1536k + dataflash : org = 0x00800000, len = 64k + ram : org = 0x40000000, len = 96k +} + +ENTRY(_reset_address) + +/* + * Derived constants. + */ +__flash_size__ = LENGTH(flash); +__flash_start__ = ORIGIN(flash); +__flash_end__ = ORIGIN(flash) + LENGTH(flash); + +__ram_size__ = LENGTH(ram); +__ram_start__ = ORIGIN(ram); +__ram_end__ = ORIGIN(ram) + LENGTH(ram); + +SECTIONS +{ + . = ORIGIN(flash); + .boot : ALIGN(16) SUBALIGN(16) + { + KEEP(*(.bam)) + KEEP(*(.coreinit)) + KEEP(*(.handlers)) + KEEP(*(.crt0)) + . = ALIGN(0x00000800); + KEEP(*(.vectors)) + /* Note, have to waste the first 4KB because the IVPR register + requires an alignment of 4KB and the first 4KB cannot be used, + IVOR0 would conflict with the BAM word. Applications could + allocate code or data in the first 4KB by using special sections.*/ + . = ALIGN(0x00001000); + __ivpr_base__ = .; + KEEP(*(.ivors)) + } > flash + + constructors : ALIGN(4) SUBALIGN(4) + { + PROVIDE(__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE(__init_array_end = .); + } > flash + + destructors : ALIGN(4) SUBALIGN(4) + { + PROVIDE(__fini_array_start = .); + KEEP(*(.fini_array)) + KEEP(*(SORT(.fini_array.*))) + PROVIDE(__fini_array_end = .); + } > flash + + .text_vle : ALIGN(16) SUBALIGN(16) + { + *(.text_vle) + *(.text_vle.*) + *(.gnu.linkonce.t_vle.*) + } > flash + + .text : ALIGN(16) SUBALIGN(16) + { + *(.text) + *(.text.*) + *(.gnu.linkonce.t.*) + } > flash + + .rodata : ALIGN(16) SUBALIGN(16) + { + *(.glue_7t) + *(.glue_7) + *(.gcc*) + *(.rodata) + *(.rodata.*) + *(.rodata1) + } > flash + + .sdata2 : ALIGN(16) SUBALIGN(16) + { + __sdata2_start__ = . + 0x8000; + *(.sdata2) + *(.sdata2.*) + *(.gnu.linkonce.s2.*) + *(.sbss2) + *(.sbss2.*) + *(.gnu.linkonce.sb2.*) + } > flash + + .eh_frame_hdr : + { + *(.eh_frame_hdr) + } > flash + + .eh_frame : ONLY_IF_RO + { + *(.eh_frame) + } > flash + + .romdata : ALIGN(16) SUBALIGN(16) + { + __romdata_start__ = .; + } > flash + + .stacks : + { + . = ALIGN(8); + __irq_stack_base__ = .; + . += __irq_stack_size__; + . = ALIGN(8); + __irq_stack_end__ = .; + __process_stack_base__ = .; + __main_thread_stack_base__ = .; + . += __process_stack_size__; + . = ALIGN(8); + __process_stack_end__ = .; + __main_thread_stack_end__ = .; + } > ram + + .data : AT(__romdata_start__) + { + . = ALIGN(4); + __data_start__ = .; + *(.data) + *(.data.*) + *(.gnu.linkonce.d.*) + __sdata_start__ = . + 0x8000; + *(.sdata) + *(.sdata.*) + *(.gnu.linkonce.s.*) + __data_end__ = .; + } > ram + + .sbss : + { + __bss_start__ = .; + *(.sbss) + *(.sbss.*) + *(.gnu.linkonce.sb.*) + *(.scommon) + } > ram + + .bss : + { + *(.bss) + *(.bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + __bss_end__ = .; + } > ram + + __heap_base__ = __bss_end__; + __heap_end__ = __ram_end__; +} diff --git a/os/ports/GCC/PPC/SPC560Bxx/port.mk b/os/ports/GCC/PPC/SPC560Bxx/port.mk new file mode 100644 index 000000000..e0756b8c2 --- /dev/null +++ b/os/ports/GCC/PPC/SPC560Bxx/port.mk @@ -0,0 +1,13 @@ +# List of the ChibiOS/RT SPC560Dxx port files. +PORTSRC = ${CHIBIOS}/os/ports/GCC/PPC/chcore.c + +PORTASM = ${CHIBIOS}/os/ports/GCC/PPC/SPC560Dxx/bam.s \ + ${CHIBIOS}/os/ports/GCC/PPC/SPC560Dxx/core.s \ + ${CHIBIOS}/os/ports/GCC/PPC/SPC560Dxx/vectors.s \ + ${CHIBIOS}/os/ports/GCC/PPC/ivor.s \ + ${CHIBIOS}/os/ports/GCC/PPC/crt0.s + +PORTINC = ${CHIBIOS}/os/ports/GCC/PPC \ + ${CHIBIOS}/os/ports/GCC/PPC/SPC560Dxx + +PORTLD = ${CHIBIOS}/os/ports/GCC/PPC/SPC560Dxx/ld diff --git a/os/ports/GCC/PPC/SPC560Bxx/ppcparams.h b/os/ports/GCC/PPC/SPC560Bxx/ppcparams.h new file mode 100644 index 000000000..965db510d --- /dev/null +++ b/os/ports/GCC/PPC/SPC560Bxx/ppcparams.h @@ -0,0 +1,72 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, + 2011,2012,2013 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560Dxx/ppcparams.h + * @brief PowerPC parameters for the SPC560B/Cxx. + * + * @defgroup PPC_SPC560BCxx SPC560BCxx Specific Parameters + * @ingroup PPC_SPECIFIC + * @details This file contains the PowerPC specific parameters for the + * SPC560BCxx platform. + * @{ + */ + +#ifndef _PPCPARAMS_H_ +#define _PPCPARAMS_H_ + +/** + * @brief PPC core model. + */ +#define PPC_VARIANT PPC_VARIANT_e200z0 + +/** + * @brief Number of writable bits in IVPR register. + */ +#define PPC_IVPR_BITS 20 + +/** + * @brief IVORx registers support. + */ +#define PPC_SUPPORTS_IVORS FALSE + +/** + * @brief Book E instruction set support. + */ +#define PPC_SUPPORTS_BOOKE FALSE + +/** + * @brief VLE instruction set support. + */ +#define PPC_SUPPORTS_VLE TRUE + +/** + * @brief Supports VLS Load/Store Multiple Volatile instructions. + */ +#define PPC_SUPPORTS_VLE_MULTI TRUE + +/** + * @brief Supports the decrementer timer. + */ +#define PPC_SUPPORTS_DECREMENTER FALSE + +#endif /* _PPCPARAMS_H_ */ + +/** @} */ diff --git a/os/ports/GCC/PPC/SPC560Bxx/vectors.h b/os/ports/GCC/PPC/SPC560Bxx/vectors.h new file mode 100644 index 000000000..4cc1b47ce --- /dev/null +++ b/os/ports/GCC/PPC/SPC560Bxx/vectors.h @@ -0,0 +1,79 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, + 2011,2012,2013 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560Dxx/vectors.h + * @brief ISR vector module header. + * + * @addtogroup PPC_CORE + * @{ + */ + +#ifndef _VECTORS_H_ +#define _VECTORS_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @brief Number of ISR vectors available. + */ +#define VECTORS_NUMBER 155 + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#if !defined(_FROM_ASM_) + +#if !defined(__DOXYGEN__) +extern uint32_t _vectors[VECTORS_NUMBER]; +#endif + +#ifdef __cplusplus +extern "C" { +#endif + void _unhandled_irq(void); +#ifdef __cplusplus +} +#endif + +#endif /* !defined(_FROM_ASM_) */ + +#endif /* _OSAL_H_ */ + +/** @} */ diff --git a/os/ports/GCC/PPC/SPC560Bxx/vectors.s b/os/ports/GCC/PPC/SPC560Bxx/vectors.s new file mode 100644 index 000000000..2536e51ce --- /dev/null +++ b/os/ports/GCC/PPC/SPC560Bxx/vectors.s @@ -0,0 +1,285 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, + 2011,2012,2013 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560Dxx/vectors.s + * @brief SPC560Dxx vectors table. + * + * @addtogroup PPC_CORE + * @{ + */ + +#if !defined(__DOXYGEN__) + + /* Software vectors table. The vectors are accessed from the IVOR4 + handler only. In order to declare an interrupt handler just create + a function withe the same name of a vector, the symbol will + override the weak symbol declared here.*/ + .section .vectors, "ax" + .align 4 + .globl _vectors +_vectors: + .long vector0, vector1, vector2, vector3 + .long vector4, vector5, vector6, vector7 + .long vector8, vector9, vector10, vector11 + .long vector12, vector13, vector14, vector15 + .long vector16, vector17, vector18, vector19 + .long vector20, vector21, vector22, vector23 + .long vector24, vector25, vector26, vector27 + .long vector28, vector29, vector30, vector31 + .long vector32, vector33, vector34, vector35 + .long vector36, vector37, vector38, vector39 + .long vector40, vector41, vector42, vector43 + .long vector44, vector45, vector46, vector47 + .long vector48, vector49, vector50, vector51 + .long vector52, vector53, vector54, vector55 + .long vector56, vector57, vector58, vector59 + .long vector60, vector61, vector62, vector63 + .long vector64, vector65, vector66, vector67 + .long vector68, vector69, vector70, vector71 + .long vector72, vector73, vector74, vector75 + .long vector76, vector77, vector78, vector79 + .long vector80, vector81, vector82, vector83 + .long vector84, vector85, vector86, vector87 + .long vector88, vector89, vector90, vector91 + .long vector92, vector93, vector94, vector95 + .long vector96, vector97, vector98, vector99 + .long vector100, vector101, vector102, vector103 + .long vector104, vector105, vector106, vector107 + .long vector108, vector109, vector110, vector111 + .long vector112, vector113, vector114, vector115 + .long vector116, vector117, vector118, vector119 + .long vector120, vector121, vector122, vector123 + .long vector124, vector125, vector126, vector127 + .long vector128, vector129, vector130, vector131 + .long vector132, vector133, vector134, vector135 + .long vector136, vector137, vector138, vector139 + .long vector140, vector141, vector142, vector143 + .long vector144, vector145, vector146, vector147 + .long vector148, vector149, vector150, vector151 + .long vector152, vector153, vector154 + + .text + .align 2 + + .weak vector0, vector1, vector2, vector3 + .weak vector4, vector5, vector6, vector7 + .weak vector8, vector9, vector10, vector11 + .weak vector12, vector13, vector14, vector15 + .weak vector16, vector17, vector18, vector19 + .weak vector20, vector21, vector22, vector23 + .weak vector24, vector25, vector26, vector27 + .weak vector28, vector29, vector30, vector31 + .weak vector32, vector33, vector34, vector35 + .weak vector36, vector37, vector38, vector39 + .weak vector40, vector41, vector42, vector43 + .weak vector44, vector45, vector46, vector47 + .weak vector48, vector49, vector50, vector51 + .weak vector52, vector53, vector54, vector55 + .weak vector56, vector57, vector58, vector59 + .weak vector60, vector61, vector62, vector63 + .weak vector64, vector65, vector66, vector67 + .weak vector68, vector69, vector70, vector71 + .weak vector72, vector73, vector74, vector75 + .weak vector76, vector77, vector78, vector79 + .weak vector80, vector81, vector82, vector83 + .weak vector84, vector85, vector86, vector87 + .weak vector88, vector89, vector90, vector91 + .weak vector92, vector93, vector94, vector95 + .weak vector96, vector97, vector98, vector99 + .weak vector100, vector101, vector102, vector103 + .weak vector104, vector105, vector106, vector107 + .weak vector108, vector109, vector110, vector111 + .weak vector112, vector113, vector114, vector115 + .weak vector116, vector117, vector118, vector119 + .weak vector120, vector121, vector122, vector123 + .weak vector124, vector125, vector126, vector127 + .weak vector128, vector129, vector130, vector131 + .weak vector132, vector133, vector134, vector135 + .weak vector136, vector137, vector138, vector139 + .weak vector140, vector141, vector142, vector143 + .weak vector144, vector145, vector146, vector147 + .weak vector148, vector149, vector150, vector151 + .weak vector152, vector153, vector154 + +vector0: +vector1: +vector2: +vector3: +vector4: +vector5: +vector6: +vector7: +vector8: +vector9: +vector10: +vector11: +vector12: +vector13: +vector14: +vector15: +vector16: +vector17: +vector18: +vector19: +vector20: +vector21: +vector22: +vector23: +vector24: +vector25: +vector26: +vector27: +vector28: +vector29: +vector30: +vector31: +vector32: +vector33: +vector34: +vector35: +vector36: +vector37: +vector38: +vector39: +vector40: +vector41: +vector42: +vector43: +vector44: +vector45: +vector46: +vector47: +vector48: +vector49: +vector50: +vector51: +vector52: +vector53: +vector54: +vector55: +vector56: +vector57: +vector58: +vector59: +vector60: +vector61: +vector62: +vector63: +vector64: +vector65: +vector66: +vector67: +vector68: +vector69: +vector70: +vector71: +vector72: +vector73: +vector74: +vector75: +vector76: +vector77: +vector78: +vector79: +vector80: +vector81: +vector82: +vector83: +vector84: +vector85: +vector86: +vector87: +vector88: +vector89: +vector90: +vector91: +vector92: +vector93: +vector94: +vector95: +vector96: +vector97: +vector98: +vector99: +vector100: +vector101: +vector102: +vector103: +vector104: +vector105: +vector106: +vector107: +vector108: +vector109: +vector110: +vector111: +vector112: +vector113: +vector114: +vector115: +vector116: +vector117: +vector118: +vector119: +vector120: +vector121: +vector122: +vector123: +vector124: +vector125: +vector126: +vector127: +vector128: +vector129: +vector130: +vector131: +vector132: +vector133: +vector134: +vector135: +vector136: +vector137: +vector138: +vector139: +vector140: +vector141: +vector142: +vector143: +vector144: +vector145: +vector146: +vector147: +vector148: +vector149: +vector150: +vector151: +vector152: +vector153: +vector154: + + .weak _unhandled_irq + .type _unhandled_irq, @function +_unhandled_irq: + b _unhandled_irq + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */