aboutsummaryrefslogtreecommitdiff
path: root/src/kern/init.c
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2022-12-08 14:01:09 -0700
committerJosh Rahm <joshuarahm@gmail.com>2022-12-08 14:01:09 -0700
commit12845efe524e2262e19fcb1e85697c4664e22b2f (patch)
treec5c9ef906cf25d1c2bfe0fb61832111e61784b4c /src/kern/init.c
parente9a6c87abab80e83c690b4f695cf4fef27c78702 (diff)
downloadstm32l4-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.c44
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)();
}
}