diff src/entry-clang.S @ 13:f28daf1e47c1

clang-arm
author mir3636
date Fri, 16 Feb 2018 17:44:49 +0900
parents src/entry.S@ad95e7f82f1e
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/entry-clang.S	Fri Feb 16 17:44:49 2018 +0900
@@ -0,0 +1,34 @@
+#include "arm.h"
+#include "memlayout.h"
+
+.text
+.code 32
+
+.global _start
+
+_start:
+    # clear the entry bss section, the svc stack, and kernel page table
+    LDR     r1, =edata_entry
+    LDR     r2, =end_entry
+    MOV     r3, #0x00
+
+1:
+    CMP     r1, r2
+#    STMLTIA r1!, {r3}
+    STMIALT r1!, {r3}
+    BLT     1b
+
+    # initialize stack pointers for svc modes
+    MSR     CPSR_cxsf, #(SVC_MODE|NO_INT)
+    LDR     sp, =svc_stktop
+
+    BL      start
+    B .
+
+# during startup, kernel stack uses user address, now switch it to kernel addr
+.global jump_stack
+jump_stack:
+    MOV     r0, sp
+    ADD     r0, r0, #KERNBASE
+    MOV     sp, r0
+    MOV     pc, lr