blob: 1f53bf8c0f3e966eae86831b8e1cf44f112f9f82 (
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
69
70
71
72
73
74
75
76
77
78
79
80
|
/* defs for Multiboot headers */
MB_MAGIC = 0x1badb002;
MB_FLAGS = 0x3;
MB_CHKSUM = 0x100000000 - (MB_MAGIC + MB_FLAGS);
SECTIONS
{
. = 0x100000; /* system's start address */
.boot :
{
header_start = .; LONG(MB_MAGIC)
LONG(MB_FLAGS)
LONG(MB_CHKSUM)
LONG(0)
LONG(0)
LONG(0)
LONG(0)
LONG(0)
LONG(0)
LONG(0)
LONG(0)
LONG(0)
header_end = .;
}
PROVIDE (___KERNEL_START__ = .);
.text :
{
*(".text")
*(".text.*")
*(".text$")
}
.data :
{
*(".data")
*(".data.*")
*(".data$")
}
.reserved : {
*(".reserved")
*(".reserved.*")
}
/*
* basically the same as BSS, but I want some flexibility and I don't care
* for zeroing because it's explicitly overwritten anyways. I KNOW WHAT I'M
* DOING! An example is the idt.
*/
.reserved_0 (NOLOAD) : {
*(".reserved_0")
*(".reserved_0.*")
}
.rodata :
{
*(".rodata")
*(".rodata$")
*(".rodata.*")
}
.bss :
{
PROVIDE (___BSS_START__ = .);
*(".bss")
*(".bss.*")
PROVIDE (___BSS_END__ = .);
}
/* global page table for 64-bit long mode */
.global_pagetable ALIGN(4096) (NOLOAD) :
{
*(".global_pagetable")
}
. = ALIGN(4096);
PROVIDE (___KERNEL_END__ = .);
}
|