aboutsummaryrefslogtreecommitdiff
path: root/libgloss/or1k/exceptions.c
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2014-12-15 20:17:39 +0000
committerJeff Johnston <jjohnstn@redhat.com>2014-12-15 20:17:39 +0000
commit68a910123726e7868baf89cac9038b4dbb22f612 (patch)
tree108b63e655003a7d58a3cc6f252ab2e6ace706d1 /libgloss/or1k/exceptions.c
parentd1219c0e89d2dc4ac865889cbd23f5e4c64d86e5 (diff)
downloadnewlib-68a910123726e7868baf89cac9038b4dbb22f612.zip
newlib-68a910123726e7868baf89cac9038b4dbb22f612.tar.gz
newlib-68a910123726e7868baf89cac9038b4dbb22f612.tar.bz2
2014-12-15 Stefan Wallentowitz <stefan.wallentowitz@tum.de>
* or1k/Makefile.in: Add libor1k * or1k/README: New file * or1k/caches-asm.S: New file * or1k/exceptions-asm.S: New file * or1k/exceptions.c: New file * or1k/impure.c: New file * or1k/include/or1k-nop.h: New file * or1k/include/or1k-support.h: New file * or1k/interrupts-asm.S: New file * or1k/interrupts.c: New file * or1k/mmu-asm.S: New file * or1k/or1k-internals.h: New file * or1k/or1k_uart.c: New file * or1k/or1k_uart.h: New file * or1k/outbyte.S: New file * or1k/sbrk.c: New file * or1k/sync-asm.S: New file * or1k/syscalls.c: New file * or1k/timer.c: New file * or1k/util.c: New file
Diffstat (limited to 'libgloss/or1k/exceptions.c')
-rw-r--r--libgloss/or1k/exceptions.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/libgloss/or1k/exceptions.c b/libgloss/or1k/exceptions.c
new file mode 100644
index 0000000..8240d09
--- /dev/null
+++ b/libgloss/or1k/exceptions.c
@@ -0,0 +1,21 @@
+#include "include/or1k-support.h"
+
+#include "or1k-internals.h"
+
+#ifdef __OR1K_MULTICORE__
+or1k_exception_handler_table_t *_or1k_exception_handler_table;
+#else
+or1k_exception_handler_table_t _or1k_exception_handler_table;
+#endif
+
+void or1k_exception_handler_add(int id, or1k_exception_handler_fptr handler)
+{
+ // Subtract 2 as we do not have a vector at 0 and reset is static
+ id = id - 2;
+#ifdef __OR1K_MULTICORE__
+ _or1k_exception_handler_table[or1k_coreid()][id] = handler;
+
+#else
+ _or1k_exception_handler_table[id] = handler;
+#endif
+}