aboutsummaryrefslogtreecommitdiff
path: root/demo_functionality.c
diff options
context:
space:
mode:
authorWojtek Kosior <kwojtus@protonmail.com>2019-12-28 21:54:42 +0100
committerWojtek Kosior <kwojtus@protonmail.com>2019-12-28 21:54:42 +0100
commit700f4c412d42c9b9811269045c0e363a0331bba9 (patch)
tree260feed1ca657843d993c1ae73e93f25a17cede1 /demo_functionality.c
parent80c9af17330ac442a4c3d6d55b4041cbe923e9b4 (diff)
downloadrpi-MMU-example-700f4c412d42c9b9811269045c0e363a0331bba9.tar.gz
rpi-MMU-example-700f4c412d42c9b9811269045c0e363a0331bba9.zip
split kernel into 2 stages; second stage gets copied to 0x0 and runs from there
Diffstat (limited to 'demo_functionality.c')
-rw-r--r--demo_functionality.c26
1 files changed, 2 insertions, 24 deletions
diff --git a/demo_functionality.c b/demo_functionality.c
index 4b002d6..420639b 100644
--- a/demo_functionality.c
+++ b/demo_functionality.c
@@ -53,7 +53,7 @@ void demo_current_mode(void)
uart_puts(mode_name);
}
-#define TRANSLATION_TABLE \
+#define TRANSLATION_TABLE \
((short_section_descriptor_t volatile*) TRANSLATION_TABLE_BASE)
extern char
@@ -144,29 +144,7 @@ void demo_go_unprivileged(void)
write_SPSR(new_SPSR);
uart_puts("All ready, jumping to PL0 code\n\r");
-
+
asm volatile("ldm %0, {r0 - r15} ^" ::
"r" (PL0_regs));
}
-
-extern char
- __interrupts_start,
- __interrupts_end,
- __interrupts_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) &__interrupts_size; i++)
- ((volatile char*) 0)[i] =
- (&__interrupts_start)[i];
-}