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