diff options
author | vetch <vetch97@gmail.com> | 2019-12-17 11:46:24 +0100 |
---|---|---|
committer | vetch <vetch97@gmail.com> | 2019-12-17 11:46:24 +0100 |
commit | 0929e37e54cb7c52d8d3696a24aac5e421fb0660 (patch) | |
tree | 483083f97792cabdff053262fe7239ca3ea1a52a /demo_functionality.c | |
parent | f87b0105a0ac411b0d64d89a9ea92e9b07087aa2 (diff) | |
parent | 1a75b3f08e28876896ea90f85b1e8101ef55dd5d (diff) | |
download | rpi-MMU-example-0929e37e54cb7c52d8d3696a24aac5e421fb0660.tar.gz rpi-MMU-example-0929e37e54cb7c52d8d3696a24aac5e421fb0660.zip |
Merge branch 'bob' of https://repo.or.cz/RPi-MMU-example into alice
# Conflicts:
# Makefile
# PL0_test.c
# kernel.c
# linker.ld
Diffstat (limited to 'demo_functionality.c')
-rw-r--r-- | demo_functionality.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/demo_functionality.c b/demo_functionality.c index 7bba6a6..d4b86db 100644 --- a/demo_functionality.c +++ b/demo_functionality.c @@ -113,3 +113,25 @@ void demo_go_unprivileged(void) "movt r5, #"PL0_SECTION_NUMBER_STR"0000\n\r" "blx r5\n\r"); } + +extern char + __interrupt_vectors_start, + __interrupt_vectors_end, + __interrupt_vectors_size; + +extern void (*volatile system_reentry_point)(void); + +void system_reentry(void) +{ + uart_puts("re-entered system"); + while(1); +} + +void demo_setup_interrupts(void) +{ + system_reentry_point = system_reentry; + + for (size_t i = 0; i < (size_t) &__interrupt_vectors_size; i++) + ((volatile char*) 0)[i] = + (&__interrupt_vectors_start)[i]; +} |