annotate src/kernel-cmake.ld @ 57:450ee0f18709

add kernel-cmake.ld
author anatofu
date Thu, 06 Jun 2019 19:50:24 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
57
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
1 OUTPUT_FORMAT("elf32-littlearm")
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
2 OUTPUT_ARCH(arm)
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
3 ENTRY(_start)
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
4
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
5 ENTRY_SVC_STACK_SIZE = 0x1000;
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
6
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
7 SECTIONS
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
8 {
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
9 /* the entry point, before enabling paging. The code to enable paing
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
10 needs to have the same virtual/physical address. entry.S and start.c
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
11 run in this initial setting.*/
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
12 . = 0x10000;
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
13 .start_sec : {
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
14 CMakeFiles/kernel.dir/entry.S.o(.text)
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
15 CMakeFiles/kernel.dir/start.c.o(.text .text.*)
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
16
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
17 CMakeFiles/kernel.dir/entry.S.o(.rodata .rodata.*)
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
18 CMakeFiles/kernel.dir/start.c.o(.rodata .rodata.*)
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
19
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
20 CMakeFiles/kernel.dir/entry.S.o(.data .data.*)
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
21 CMakeFiles/kernel.dir/start.c.o(.data .data.*)
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
22
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
23 PROVIDE(edata_entry = .);
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
24
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
25 CMakeFiles/kernel.dir/entry.S.o(.bss .bss.* COMMON)
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
26 CMakeFiles/kernel.dir/start.c.o(.bss .bss.* COMMON)
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
27
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
28 /*define a stack for the entry*/
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
29 . = ALIGN(0x1000);
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
30 . += ENTRY_SVC_STACK_SIZE;
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
31
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
32 PROVIDE (svc_stktop = .);
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
33
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
34 /* define the kernel page table, must be 16K and 16K-aligned*/
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
35 . = ALIGN(0x4000);
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
36 PROVIDE (_kernel_pgtbl = .);
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
37 . += 0x4000;
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
38
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
39 /* we also need a user page table*/
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
40 PROVIDE (_user_pgtbl = .);
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
41 . += 0x1000;
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
42
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
43 PROVIDE(end_entry = .);
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
44 }
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
45
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
46 /*the kernel executes at the higher 2GB address space, but loaded
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
47 at the lower memory (0x20000)*/
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
48 . = 0x80020000;
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
49
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
50 .text : AT(0x20000){
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
51 *(.text .text.* .gnu.linkonce.t.*)
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
52 }
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
53
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
54 PROVIDE(etext = .); /* Define the 'etext' symbol to this value */
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
55
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
56 .rodata : {
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
57 *(.rodata .rodata.* .gnu.linkonce.r.*)
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
58 }
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
59
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
60 /* aligned the data to a (4K) page, so it can be assigned
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
61 different protection than the code*/
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
62 . = ALIGN(0x1000);
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
63
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
64 PROVIDE (data_start = .);
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
65
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
66 .data : {
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
67 *(.data .data.*)
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
68 }
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
69
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
70 PROVIDE (edata = .);
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
71
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
72 .bss : {
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
73 *(.bss .bss.* COMMON)
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
74 }
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
75
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
76 . = ALIGN(0x1000);
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
77 PROVIDE (end = .);
450ee0f18709 add kernel-cmake.ld
anatofu
parents:
diff changeset
78 }