blob: 2bcbcbc59662e689f7365efbcc609f1dd7c074cc (
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
|
OUTPUT_FORMAT("elf32-i386")
ENTRY(entry)
addr_phys = 0x00100000;
addr_virt = 0xc0000000;
addr_virt_end = ADDR(.bss) + SIZEOF(.bss);
addr_load_virt = LOADADDR(.text);
addr_load_virt_end = LOADADDR(.bss) + SIZEOF(.bss);
SECTIONS {
.text_low addr_phys : {
LONG(0x1badb002);
LONG(0x00000003);
LONG(-0x1badb002 -0x00000003);
kernel/entry.o(.text)
kernel/entry.o(.rodata*)
. = ALIGN(0x1000);
}
.data_low : {
kernel/entry.o(.data)
. = ALIGN(0x1000);
}
.bss_low : {
kernel/entry.o(.bss)
. = ALIGN(0x1000);
entry_pagedir = .; . += 0x1000;
entry_pagetable_low = .; . += 0x1000;
entry_pagetable_high = .; . += 0x1000;
entry_stack = .; . += 0x1000; entry_stack_top = .;
}
.text addr_virt : AT(LOADADDR(.bss_low) + SIZEOF(.bss_low)) {
magic_text = .; LONG(0x0f00ba02);
*(.text)
*(.rodata*)
. = ALIGN(0x1000);
}
.data : AT(LOADADDR(.text) + SIZEOF(.text)) {
magic_data = .; LONG(0x0f00ba03);
*(.data)
*(.ctors)
. = ALIGN(0x1000);
}
.bss : AT(LOADADDR(.data) + SIZEOF(.data)) {
*(.bss)
*(COMMON)
. = ALIGN(0x1000);
}
}
|