summaryrefslogtreecommitdiff
path: root/demo/start.S
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2023-10-03 23:16:08 -0600
committerAlejandro Soto <alejandro@34project.org>2023-10-03 23:16:08 -0600
commit3de42a19661a3d6d24de46ca2920b06e1dc88fe0 (patch)
treeacdd022a14d43d60dbfec1f4df8c634e0d080ec0 /demo/start.S
parent1094451235282af6a9daba2b2a460577f82d289c (diff)
demo: initial commit
Diffstat (limited to '')
-rw-r--r--demo/start.S57
1 files changed, 57 insertions, 0 deletions
diff --git a/demo/start.S b/demo/start.S
new file mode 100644
index 0000000..6e5e457
--- /dev/null
+++ b/demo/start.S
@@ -0,0 +1,57 @@
+.section .interrupt_vector
+
+__reset:
+ b _start
+
+__undefined:
+ b undefined
+
+__swi:
+ b swi
+
+__prefetch_abort:
+ b prefetch_abort
+
+__data_abort:
+ b data_abort
+
+__reserved:
+ b .
+
+__irq:
+ b irq
+
+__fiq:
+ b .
+
+.text
+
+.global _start
+_start:
+ ldr r0, =_boot_num
+ ldr r1, [r0]
+ add r2, r1, #1
+ str r2, [r0]
+ ldr r2, =__cpus
+ lsl r3, r1, #2
+ ldr ip, [r2, r3]
+ str r1, [ip]
+ ldr r2, =_stack_shift
+ lsl r1, r1, r2
+ ldr sp, =_stack_begin
+ add sp, sp, r1
+ mov lr, #0
+ bl reset
+ b .
+
+_boot_num:
+ .word 0
+
+irq:
+ subs pc, lr, #4
+
+.weak undefined, swi, data_abort, prefetch_abort, irq
+.set swi, __swi
+.set undefined, __undefined
+.set data_abort, __data_abort
+.set prefetch_abort, __prefetch_abort