Kernel - General fixing after ARM7 changes
[tpg/acess2.git] / Kernel / arch / arm7 / start.s
1 KERNEL_BASE =   0x80000000
2
3 interrupt_vector_table:
4         b . @ Reset
5         b .
6         b SyscallHandler @ SWI instruction
7         b . 
8         b .
9         b .
10         b .
11         b .
12
13 .comm stack, 0x10000    @ ; 64KiB Stack
14
15 .globl _start
16 _start:
17         ldr r0, _ptr_kerneltable0
18         mcr p15, 0, r0, c2, c0, 1       @ Set TTBR1 to r0
19         mov r0, #1
20         mcr p15, 0, r0, c2, c0, 2       @ Set TTCR to 1 (50/50 split)
21
22         mrc p15, 0, r0, c1, c0, 0
23         orr r0, r0, #1
24         mcr p15, 0, r0, c1, c0, 0
25
26         ldr sp, =stack+0x10000  @ Set up stack
27         bl kmain
28 1:      b 1b    @ Infinite loop
29 _ptr_kerneltable0:
30         .long kernel_table0-0x80000000
31
32 SyscallHandler:
33         
34 .section .padata
35 .globl kernel_table0
36 kernel_table0:
37         .rept 0x800
38                 .long 0
39         .endr
40         .long 0x00000002        @ Identity map the first 4 MiB
41         .long 0x00100002        @ 
42         .long 0x00200002        @ 
43         .long 0x00300002        @ 
44         .rept 0xF00 - 0x800 - 4
45                 .long 0
46         .endr
47         .long hwmap_table_0 + 0x000 - KERNEL_BASE + 1
48         .long hwmap_table_0 + 0x400 - KERNEL_BASE + 1
49         .long hwmap_table_0 + 0x800 - KERNEL_BASE + 1
50         .long hwmap_table_0 + 0xC00 - KERNEL_BASE + 1
51         .rept 0xFF8 - 0xF00 - 4
52                 .long 0
53         .endr
54         .long kernel_table1_map + 0x000 - KERNEL_BASE + 1
55         .long kernel_table1_map + 0x400 - KERNEL_BASE + 1
56         .long kernel_table1_map + 0x800 - KERNEL_BASE + 1
57         .long kernel_table1_map + 0xC00 - KERNEL_BASE + 1
58         .long kernel_table0 - KERNEL_BASE + 2   @ Sure it maps too much, but fuck that
59         .rept 0x1000 - 0xFF8 - 5
60                 .long 0
61         .endr
62
63 .globl kernel_table1_map
64 kernel_table1_map:
65         .rept 0xF00/4
66                 .long 0
67         .endr
68         .long hwmap_table_0 - KERNEL_BASE + (1 << 4) + 3
69         .rept 0xFF8/4 - 0xF00/4 - 1
70                 .long 0
71         .endr
72         .long kernel_table1_map - KERNEL_BASE + (1 << 4) + 3
73         .long 0
74
75 .globl hwmap_table_0
76 hwmap_table_0:
77         .long 0x16000000 + (1 << 4) + 3 @ Serial Port
78         .rept 1024 - 1
79                 .long 0
80         .endr
81         

UCC git Repository :: git.ucc.asn.au