aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-09-14 13:25:36 +0200
committerBad Diode <bd@badd10de.dev>2021-09-14 13:25:36 +0200
commit3a763cf3761ec01b8eb5b54c0e4f12a7a870f135 (patch)
tree23e4ac869eb91c3ac0babe8b7fffd36041e58646
parent162a1ee7f91aac21329d7acf290f9d350fb083bd (diff)
downloaduxnrpi-3a763cf3761ec01b8eb5b54c0e4f12a7a870f135.tar.gz
uxnrpi-3a763cf3761ec01b8eb5b54c0e4f12a7a870f135.zip
Move bss initialization to C code
-rw-r--r--src/common.h2
-rw-r--r--src/main.c12
-rw-r--r--src/start.s6
3 files changed, 10 insertions, 10 deletions
diff --git a/src/common.h b/src/common.h
index 0057950..c71455d 100644
--- a/src/common.h
+++ b/src/common.h
@@ -23,7 +23,7 @@
23void delay(u64 ticks); 23void delay(u64 ticks);
24 24
25// Clear N bytes at the given address 8 bytes at a time. Implemented in start.s. 25// Clear N bytes at the given address 8 bytes at a time. Implemented in start.s.
26void memzero64(void * src, u32 n); 26void memzero64(void *src, u64 n);
27 27
28// 28//
29// GPIO Registers. 29// GPIO Registers.
diff --git a/src/main.c b/src/main.c
index 1853192..8ab3cf5 100644
--- a/src/main.c
+++ b/src/main.c
@@ -126,8 +126,6 @@ file_talk(Device *d, u8 b0, u8 w) {
126 126
127void 127void
128init_uxn() { 128init_uxn() {
129 uart_init();
130
131 uart_puts("Initializing UXN.\n"); 129 uart_puts("Initializing UXN.\n");
132 130
133 // Clear UXN memory. 131 // Clear UXN memory.
@@ -162,8 +160,16 @@ init_uxn() {
162 mempoke16(devscreen->dat, 4, ppu.height); 160 mempoke16(devscreen->dat, 4, ppu.height);
163} 161}
164 162
163void
164clear_bss(void) {
165 extern u64 __bss_start;
166 extern u64 __bss_end;
167 memzero64(&__bss_start, &__bss_end - &__bss_start);
168}
169
165void main(void) { 170void main(void) {
166 // Initialize uart. 171 clear_bss();
172 uart_init();
167 init_uxn(); 173 init_uxn();
168 174
169 uxn_eval(&u, 0x0100); 175 uxn_eval(&u, 0x0100);
diff --git a/src/start.s b/src/start.s
index ecedeb4..b6a6d0f 100644
--- a/src/start.s
+++ b/src/start.s
@@ -29,12 +29,6 @@ master:
29 ldr x0, =__stack_end 29 ldr x0, =__stack_end
30 mov sp, x0 30 mov sp, x0
31 31
32 // Clear .bss memory.
33 ldr x0, =__bss_start
34 ldr x1, =__bss_end
35 sub x1, x1, x0
36 bl memzero64
37
38 // Start C code, should not return. 32 // Start C code, should not return.
39 bl main 33 bl main
40 b halt 34 b halt