blob: e8d647e879194ad7e6ec81aea87d615ca080052a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
OUTPUT_FORMAT(elf64-x86-64)
KERNEL_LMA = 0x00100000;
KERNEL_VMA = 0xffff800000000000;
ENTRY(_start)
STARTUP(entry/entry.o)
SECTIONS {
. = KERNEL_VMA + KERNEL_LMA;
k_start = .;
.text : AT(ADDR(.text) - KERNEL_VMA) {
_code = .;
*(.multiboot)
*(.text)
. = ALIGN(0x1000);
}
csd_start = .;
.csd : AT(ADDR(.csd) - KERNEL_VMA) {
*(.csd)
. = ALIGN(0x1000);
}
csd_end = .;
.init : AT(ADDR(.init) - KERNEL_VMA) {
kernel_start_init = .;
*(.init)
. = ALIGN(0x1000);
kernel_end_init = .;
}
.rodata : AT(ADDR(.rodata) - KERNEL_VMA) {
_rodata = .;
*(.rodata)
. = ALIGN(0x1000);
}
.data : AT(ADDR(.data) - KERNEL_VMA) {
_data = .;
*(.data)
. = ALIGN(0x1000);
}
_edata = .;
.bss : AT(ADDR(.bss) - KERNEL_VMA) {
_bss = .;
*(.bss)
*(COMMON)
. = ALIGN(0x1000);
}
_end = .;
/DISCARD/ : {
*(.comment)
*(note.*)
}
kernel_phys_off = k_start - KERNEL_LMA;
kernel_phys_base = k_start - kernel_phys_off;
kernel_phys_end = _end - kernel_phys_off;
kernel_page_tables = ((_end - k_start) / 0x80000) + 1; /* XXX might be 0x200000 */
kernel_text_sectors = ((_end - k_start) / 512) + 1;
}
|