summaryrefslogtreecommitdiffstats
path: root/ape/vectors.c
diff options
context:
space:
mode:
authorEvan Lojewski <github@meklort.com>2019-04-01 19:45:23 -0600
committerEvan Lojewski <github@meklort.com>2019-04-01 19:45:23 -0600
commit74eac40c0c1676a233b97e27d76f2243c5ca58ff (patch)
tree7b3d407b9b7b3cf00d75db8365150dbf64a7bf33 /ape/vectors.c
parentfdb828a18c7ef906708dfb27add4d422426c5ac1 (diff)
downloadbcm5719-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.c97
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,
+ }
+};
OpenPOWER on IntegriCloud