aboutsummaryrefslogtreecommitdiff
path: root/interrupts.c
diff options
context:
space:
mode:
authorWojtek Kosior <kwojtus@protonmail.com>2019-12-10 16:46:56 +0100
committerWojtek Kosior <kwojtus@protonmail.com>2019-12-10 16:46:56 +0100
commit3f1cd2050271dbf548e053f0a67e365b277cfcb3 (patch)
treecef57f71beddb9bb97d35390deb29a09b2d7d98b /interrupts.c
parentc76b34db77f06450ba1c957e87a0b1df3c6c29b4 (diff)
downloadrpi-MMU-example-3f1cd2050271dbf548e053f0a67e365b277cfcb3.tar.gz
rpi-MMU-example-3f1cd2050271dbf548e053f0a67e365b277cfcb3.zip
re-enter system mode on invalid data access from PL0 code
Diffstat (limited to 'interrupts.c')
-rw-r--r--interrupts.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/interrupts.c b/interrupts.c
index 3dc3d6f..191ce40 100644
--- a/interrupts.c
+++ b/interrupts.c
@@ -12,4 +12,15 @@ void __attribute__((interrupt("UNDEF"))) undefined_instruction_vector(void)
{
/* Do Nothing! */
}
-} \ No newline at end of file
+}
+
+void __attribute__((section(".interrupt_vectors.data")))
+(*system_reentry_point) (void);
+
+void
+__attribute__((interrupt("ABORT")))
+__attribute__((section(".interrupt_vectors.text")))
+abort_handler(void)
+{
+ system_reentry_point();
+}