1 KERNEL_BASE = 0x80000000
3 interrupt_vector_table:
6 b SyscallHandler @ SWI instruction
13 .comm stack, 0x10000 @ ; 64KiB Stack
17 ldr sp, =stack+0x10000 @ Set up stack
19 1: b 1b @ Infinite loop
29 .long 0x00000002 @ Identity map the first 4 MiB
33 .rept 0xF00 - 0x800 - 4
36 .long hwmap_table_0 + 0x000 - KERNEL_BASE + 1
37 .long hwmap_table_0 + 0x400 - KERNEL_BASE + 1
38 .long hwmap_table_0 + 0x800 - KERNEL_BASE + 1
39 .long hwmap_table_0 + 0xC00 - KERNEL_BASE + 1
40 .rept 0xFF8 - 0xF00 - 4
43 .long kernel_table1_map + 0x000 - KERNEL_BASE + 1
44 .long kernel_table1_map + 0x400 - KERNEL_BASE + 1
45 .long kernel_table1_map + 0x800 - KERNEL_BASE + 1
46 .long kernel_table1_map + 0xC00 - KERNEL_BASE + 1
47 .long kernel_table0 - KERNEL_BASE + 2 @ Sure it maps too much, but fuck that
48 .rept 0x1000 - 0xFF8 - 5
52 .globl kernel_table1_map
57 .long hwmap_table_0 - KERNEL_BASE + (1 << 4) + 3
58 .rept 0xFF8/4 - 0xF00/4 - 1
61 .long kernel_table1_map - KERNEL_BASE + (1 << 4) + 3
66 .long 0x16000000 + (1 << 4) + 3 @ Serial Port