ChibiOS/RT
2.5.1
vectors.s
Go to the documentation of this file.
00001 /*
00002     ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
00003                  2011,2012 Giovanni Di Sirio.
00004 
00005     This file is part of ChibiOS/RT.
00006 
00007     ChibiOS/RT is free software; you can redistribute it and/or modify
00008     it under the terms of the GNU General Public License as published by
00009     the Free Software Foundation; either version 3 of the License, or
00010     (at your option) any later version.
00011 
00012     ChibiOS/RT is distributed in the hope that it will be useful,
00013     but WITHOUT ANY WARRANTY; without even the implied warranty of
00014     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015     GNU General Public License for more details.
00016 
00017     You should have received a copy of the GNU General Public License
00018     along with this program.  If not, see <http://www.gnu.org/licenses/>.
00019 */
00020 
00021 /**
00022  * @file    ARM/AT91SAM7/vectors.s
00023  * @brief   Interrupt vectors for the AT91SAM7 family.
00024  *
00025  * @defgroup ARM_AT91SAM7_VECTORS AT91SAM7 Interrupt Vectors
00026  * @ingroup ARM_SPECIFIC
00027  * @details Interrupt vectors for the AT91SAM7 family.
00028  * @{
00029  */
00030 
00031 #if defined(__DOXYGEN__)
00032 /**
00033  * @brief   Unhandled exceptions handler.
00034  * @details Any undefined exception vector points to this function by default.
00035  *          This function simply stops the system into an infinite loop.
00036  *
00037  * @notapi
00038  */
00039 void _unhandled_exception(void) {}
00040 #endif
00041 
00042 #if !defined(__DOXYGEN__)
00043 
00044 .section vectors
00045 .code 32
00046 .balign 4
00047 /*
00048  * System entry points.
00049  */
00050 _start:
00051         ldr     pc, _reset
00052         ldr     pc, _undefined
00053         ldr     pc, _swi
00054         ldr     pc, _prefetch
00055         ldr     pc, _abort
00056         nop
00057         ldr     pc, [pc,#-0xF20]        /* AIC - AIC_IVR */
00058         ldr     pc, [pc,#-0xF20]        /* AIC - AIC_FVR */
00059 
00060 _reset:
00061         .word   ResetHandler            /* In crt0.s */
00062 _undefined:
00063         .word   UndHandler
00064 _swi:
00065         .word   SwiHandler
00066 _prefetch:
00067         .word   PrefetchHandler
00068 _abort:
00069         .word   AbortHandler
00070         .word   0
00071         .word   0
00072         .word   0
00073 
00074 .text
00075 .code 32
00076 .balign 4
00077 
00078 /*
00079  * Default exceptions handlers. The handlers are declared weak in order to be
00080  * replaced by the real handling code. Everything is defaulted to an infinite
00081  * loop.
00082  */
00083 .weak UndHandler
00084 UndHandler:
00085 
00086 .weak SwiHandler
00087 SwiHandler:
00088 
00089 .weak PrefetchHandler
00090 PrefetchHandler:
00091 
00092 .weak AbortHandler
00093 AbortHandler:
00094 
00095 .weak FiqHandler
00096 FiqHandler:
00097 
00098 .global _unhandled_exception
00099 _unhandled_exception:
00100         b       _unhandled_exception
00101 
00102 #endif
00103 
00104 /** @} */