diff options
author | Josh Rahm <joshuarahm@gmail.com> | 2022-12-08 14:01:09 -0700 |
---|---|---|
committer | Josh Rahm <joshuarahm@gmail.com> | 2022-12-08 14:01:09 -0700 |
commit | 12845efe524e2262e19fcb1e85697c4664e22b2f (patch) | |
tree | c5c9ef906cf25d1c2bfe0fb61832111e61784b4c /src/kern/init.c | |
parent | e9a6c87abab80e83c690b4f695cf4fef27c78702 (diff) | |
download | stm32l4-12845efe524e2262e19fcb1e85697c4664e22b2f.tar.gz stm32l4-12845efe524e2262e19fcb1e85697c4664e22b2f.tar.bz2 stm32l4-12845efe524e2262e19fcb1e85697c4664e22b2f.zip |
Add broken linker stuff to test on desktop.
Diffstat (limited to 'src/kern/init.c')
-rw-r--r-- | src/kern/init.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/kern/init.c b/src/kern/init.c index 5120745..2af3877 100644 --- a/src/kern/init.c +++ b/src/kern/init.c @@ -21,6 +21,8 @@ int main(); extern uint32_t INIT_DATA_VALUES; extern uint32_t DATA_SEGMENT_START; extern uint32_t DATA_SEGMENT_STOP; +extern uint32_t TEXT_START; +extern uint32_t TEXT_STOP; extern uint32_t BSS_START; extern uint32_t BSS_END; @@ -36,6 +38,12 @@ extern uint32_t INIT_5_END; extern uint32_t INIT_6_END; extern uint32_t INIT_7_END; +extern uint32_t WAT; + +#define MAGIC_COOKIE 0xDEADBEEF +/* Test that data segment is properly set. */ +static uint32_t magic_cookie = MAGIC_COOKIE; + init2() { volatile uint32_t bss_start_ptr = (uint32_t)&BSS_START; @@ -84,6 +92,10 @@ init2() *(dest++) = 0; } + if (magic_cookie != MAGIC_COOKIE) { + panic("Data Segment Initialization Failed!"); + } + klogf("Done!\n"); } @@ -109,11 +121,42 @@ void run_init_routines() void (**initfn)(); + klogf("WAT: %p\n", &WAT); + klogf( "Init routines at (%p - %p)\n", &INIT_ROUTINES_FLASH_START, &INIT_ROUTINES_FLASH_STOP); + klogf( + "Data segment at (%p - %p) from (%p)\n", + &DATA_SEGMENT_START, + &DATA_SEGMENT_STOP, + &INIT_DATA_VALUES); + + klogf( + "Bss segment at (%p - %p)\n", + &BSS_START, + &BSS_END); + + klogf( + "Heap at (%p - %p)\n", + &HEAP_START, + &HEAP_STOP); + + klogf( + "Text at (%p - %p)\n", + &TEXT_START, + &TEXT_STOP); + + klogf( "Init Boundary 0: %p\n", &INIT_0_END); + klogf( "Init Boundary 1: %p\n", &INIT_1_END); + klogf( "Init Boundary 2: %p\n", &INIT_2_END); + + // for (size_t i = 0; i < sizeof(init_boundaries) / sizeof(void*); ++ i) { + // klogf("Init Boundary %d at %p\n", i, init_boundaries[i]); + // } + /* Enable a higher clock speed. This is the first thing we do * beacuse it will boost the boot up time. */ set_system_clock_MHz(80); @@ -126,6 +169,7 @@ void run_init_routines() klogf("[Init Level %d]\n", initlevel); } + klogf("Calling (%p)\n", initfn); (*initfn)(); } } |