1 KERNEL_BASE = 0x80000000
2 PCI_PADDR = 0x60000000 @ Realview
3 UART0_PADDR = 0x10009000 @ Realview
5 @ Exception defs taken from ARM DDI 0406B
8 interrupt_vector_table:
11 b SyscallHandler @ SVC (SWI assume)
16 b . @ FIQ (Fast interrupt)
20 ldr r0, =kernel_table0-KERNEL_BASE
21 mcr p15, 0, r0, c2, c0, 1 @ Set TTBR1 to r0
22 mcr p15, 0, r0, c2, c0, 0 @ Set TTBR0 to r0 too (for identity)
25 mcr p15, 0, r0, c2, c0, 2 @ Set TTCR to 1 (50/50 split)
28 mcr p15, 0, r0, c3, c0, 0 @ Set Domain 0 to Manager
30 mrc p15, 0, r0, c1, c0, 0
33 mcr p15, 0, r0, c1, c0, 0
35 ldr sp, =stack+0x10000 @ Set up stack
38 1: b 1b @ Infinite loop
42 .comm stack, 0x10000 @ ; 64KiB Stack
54 .long 0x00000002 @ Identity map the first 1 MiB
58 .long 0x00000002 @ Map first 4 MiB to 2GiB
62 .rept 0xF00 - 0x800 - 4
66 .long PCI_PADDR + 0*(1 << 20) + 2 @ Map PCI config space
67 .long PCI_PADDR + 1*(1 << 20) + 2
68 .long PCI_PADDR + 2*(1 << 20) + 2
69 .long PCI_PADDR + 3*(1 << 20) + 2
70 .long PCI_PADDR + 4*(1 << 20) + 2
71 .long PCI_PADDR + 5*(1 << 20) + 2
72 .long PCI_PADDR + 6*(1 << 20) + 2
73 .long PCI_PADDR + 7*(1 << 20) + 2
74 .long PCI_PADDR + 8*(1 << 20) + 2
75 .long PCI_PADDR + 9*(1 << 20) + 2
76 .long PCI_PADDR + 10*(1 << 20) + 2
77 .long PCI_PADDR + 11*(1 << 20) + 2
78 .long PCI_PADDR + 12*(1 << 20) + 2
79 .long PCI_PADDR + 13*(1 << 20) + 2
80 .long PCI_PADDR + 14*(1 << 20) + 2
81 .long PCI_PADDR + 15*(1 << 20) + 2
87 .long hwmap_table_0 + 0x000 - KERNEL_BASE + 1
88 .long hwmap_table_0 + 0x400 - KERNEL_BASE + 1
89 .long hwmap_table_0 + 0x800 - KERNEL_BASE + 1
90 .long hwmap_table_0 + 0xC00 - KERNEL_BASE + 1
91 .rept 0xFF8 - 0xF00 - 16 - 4
95 .long kernel_table1_map + 0x000 - KERNEL_BASE + 1
96 .long kernel_table1_map + 0x400 - KERNEL_BASE + 1
97 .long kernel_table1_map + 0x800 - KERNEL_BASE + 1
98 .long kernel_table1_map + 0xC00 - KERNEL_BASE + 1
100 .long 0 @ removed for alignment constraints, using the KERNEL_BASE identity mapping instead
101 .rept 0x1000 - 0xFF8 - 5
105 .globl kernel_table1_map
106 kernel_table1_map: @ Size = 4KiB
110 .long hwmap_table_0 - KERNEL_BASE + (1 << 4) + 3
111 .rept 0xFF8/4 - 0xF00/4 - 1
114 .long kernel_table1_map - KERNEL_BASE + (1 << 4) + 3
120 .long UART0_PADDR + (1 << 4) + 3 @ UART0