diff options
author | Evan Lojewski <github@meklort.com> | 2019-04-01 19:45:23 -0600 |
---|---|---|
committer | Evan Lojewski <github@meklort.com> | 2019-04-01 19:45:23 -0600 |
commit | 74eac40c0c1676a233b97e27d76f2243c5ca58ff (patch) | |
tree | 7b3d407b9b7b3cf00d75db8365150dbf64a7bf33 /ape/vectors.c | |
parent | fdb828a18c7ef906708dfb27add4d422426c5ac1 (diff) | |
download | bcm5719-ortega-74eac40c0c1676a233b97e27d76f2243c5ca58ff.tar.gz bcm5719-ortega-74eac40c0c1676a233b97e27d76f2243c5ca58ff.zip |
Add a dummy ape implimentation that just increments a SHM value.
Diffstat (limited to 'ape/vectors.c')
-rw-r--r-- | ape/vectors.c | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/ape/vectors.c b/ape/vectors.c new file mode 100644 index 0000000..0c41bd0 --- /dev/null +++ b/ape/vectors.c @@ -0,0 +1,97 @@ +//////////////////////////////////////////////////////////////////////////////// +/// +/// @file vectors.c +/// +/// @project +/// +/// @brief APE vector table +/// +//////////////////////////////////////////////////////////////////////////////// +/// +//////////////////////////////////////////////////////////////////////////////// +/// +/// @copyright Copyright (c) 2019, Evan Lojewski +/// @cond +/// +/// All rights reserved. +/// +/// 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 of the copyright holder 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 HOLDER 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. +/// @endcond +//////////////////////////////////////////////////////////////////////////////// + +#include <stdint.h> + +// Function pointer for vectors +typedef void (*vector_t)(void) __attribute__((interrupt)); + +// Vector table +typedef struct { + uint32_t* sp; + vector_t* __start; + vector_t* vectors[46]; +} vector_table_t; + +extern uint32_t _estack; + +extern vector_t __start; + +#pragma weak Vector_NMI +#pragma weak Vector_HardFault +#pragma weak Vector_MemoryManagmentFault +#pragma weak Vector_BusFault +#pragma weak Vector_UsageFault +#pragma weak Vector_SVCall +#pragma weak Vector_Debug +#pragma weak Vector_PendSV +#pragma weak Vector_Systick + +extern vector_t Vector_NMI; +extern vector_t Vector_HardFault; +extern vector_t Vector_MemoryManagmentFault; +extern vector_t Vector_BusFault; +extern vector_t Vector_UsageFault; +extern vector_t Vector_SVCall; +extern vector_t Vector_Debug; +extern vector_t Vector_PendSV; +extern vector_t Vector_Systick; + +vector_table_t gVectors __attribute__((section(".init"))) = { + .sp = &_estack, + .__start = &__start, + .vectors = { + [0] = &Vector_NMI, + [1] = &Vector_HardFault, + [2] = &Vector_MemoryManagmentFault, + [3] = &Vector_BusFault, + [4] = &Vector_UsageFault, + + [9] = &Vector_SVCall, + [10] = &Vector_Debug, + + [12] = &Vector_PendSV, + [13] = &Vector_Systick, + } +}; |