summaryrefslogtreecommitdiff
path: root/src/boot/boot2.S
diff options
context:
space:
mode:
Diffstat (limited to 'src/boot/boot2.S')
-rw-r--r--src/boot/boot2.S38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/boot/boot2.S b/src/boot/boot2.S
new file mode 100644
index 0000000..0b61084
--- /dev/null
+++ b/src/boot/boot2.S
@@ -0,0 +1,38 @@
+ .thumb
+
+ .section .boot2, "ax"
+
+ // Disable SSI
+ ldr r0, =SSI_SSIENR
+ ldr r1, =0
+ str r1, [r0]
+
+ // Set baud rate
+ ldr r0, =SSI_BAUDR
+ ldr r1, =4
+ str r1, [r0]
+
+ // Enter XIP
+ ldr r0, =SSI_CTRLR0
+ ldr r1, =(3 << 8) | (31 << 16)
+ str r1, [r0]
+
+ // CTRLR0
+ ldr r0, =SSI_SPI_CTRLR0
+ ldr r1, =(6 << 2) | (2 << 8) | (0x03 << 24)
+ str r1, [r0]
+
+ // Enable back SSI
+ ldr r0, =SSI_SSIENR
+ ldr r1, =1
+ str r1, [r0]
+
+ // Jump to crt0.S
+ ldr r0, =0x10000101
+ bx r0
+
+ .set SSI_BASE, 0x18000000
+ .set SSI_CTRLR0, SSI_BASE + 0x00
+ .set SSI_SSIENR, SSI_BASE + 0x08
+ .set SSI_BAUDR, SSI_BASE + 0x14
+ .set SSI_SPI_CTRLR0, SSI_BASE + 0xF4