X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Farm7%2Fstart.s;h=1897ecd6220aa8c2344577a3639a89eab8b6a728;hb=28eafc7611ec3d3f840845ec2b54025affd7bc1e;hp=4fb371b49725c5952dfb42455b0bb555844c5ef3;hpb=7b122b34446686ff465b673cfb91419e4e98491d;p=tpg%2Facess2.git diff --git a/Kernel/arch/arm7/start.s b/Kernel/arch/arm7/start.s index 4fb371b4..1897ecd6 100644 --- a/Kernel/arch/arm7/start.s +++ b/Kernel/arch/arm7/start.s @@ -1,3 +1,5 @@ +KERNEL_BASE = 0x80000000 + interrupt_vector_table: b . @ Reset b . @@ -13,12 +15,56 @@ interrupt_vector_table: .globl _start _start: ldr sp, =stack+0x10000 @ Set up stack - bl main + bl kmain 1: b 1b @ Infinite loop SyscallHandler: .section .padata .globl kernel_table0 +kernel_table0: + .rept 0x800 + .long 0 + .endr + .long 0x00000002 @ Identity map the first 4 MiB + .long 0x00100002 @ + .long 0x00200002 @ + .long 0x00300002 @ + .rept 0xF00 - 0x800 - 4 + .long 0 + .endr + .long hwmap_table_0 + 0x000 - KERNEL_BASE + 1 + .long hwmap_table_0 + 0x400 - KERNEL_BASE + 1 + .long hwmap_table_0 + 0x800 - KERNEL_BASE + 1 + .long hwmap_table_0 + 0xC00 - KERNEL_BASE + 1 + .rept 0xFF8 - 0xF00 - 4 + .long 0 + .endr + .long kernel_table1_map + 0x000 - KERNEL_BASE + 1 + .long kernel_table1_map + 0x400 - KERNEL_BASE + 1 + .long kernel_table1_map + 0x800 - KERNEL_BASE + 1 + .long kernel_table1_map + 0xC00 - KERNEL_BASE + 1 + .long kernel_table0 - KERNEL_BASE + 2 @ Sure it maps too much, but fuck that + .rept 0x1000 - 0xFF8 - 5 + .long 0 + .endr +.globl kernel_table1_map +kernel_table1_map: + .rept 0xF00/4 + .long 0 + .endr + .long hwmap_table_0 - KERNEL_BASE + (1 << 4) + 3 + .rept 0xFF8/4 - 0xF00/4 - 1 + .long 0 + .endr + .long kernel_table1_map - KERNEL_BASE + (1 << 4) + 3 + .long 0 +.globl hwmap_table_0 +hwmap_table_0: + .long 0x16000000 + (1 << 4) + 3 @ Serial Port + .rept 1024 - 1 + .long 0 + .endr +