blob: f92819ed4be0c620a636fc3487a89be564afce55 (
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
/* $NetBSD: kern.ldscript,v 1.31 2020/01/09 00:42:24 manu Exp $ */
#include "assym.h"
/*
* PAE is enabled by default on amd64, the large page size is therefore
* 2MB (and not 4MB!).
*/
__PAGE_SIZE = 0x1000 ;
__LARGE_PAGE_SIZE = 0x200000 ;
ENTRY(_start)
SECTIONS
{
.text : AT (ADDR(.text) & 0x0fffffff)
{
. = ALIGN(__PAGE_SIZE);
__text_user_start = . ;
*(.text.user)
. = ALIGN(__PAGE_SIZE);
__text_user_end = . ;
*(.text)
*(.text.*)
*(.stub)
. = ALIGN(__LARGE_PAGE_SIZE);
} =0xCC
_etext = . ;
PROVIDE (etext = .) ;
/*
* Push the rodata segment up to the next large page boundary so that we
* can map the text segment with large pages.
*/
. = ALIGN(__LARGE_PAGE_SIZE);
__rodata_start = . ;
.rodata.hotpatch :
{
__rodata_hotpatch_start = . ;
*(.rodata.hotpatch)
__rodata_hotpatch_end = . ;
}
.rodata :
{
*(.rodata)
*(.rodata.*)
. = ALIGN(COHERENCY_UNIT);
__CTOR_LIST__ = .;
*(.ctors)
__CTOR_END__ = .;
}
. = ALIGN(__LARGE_PAGE_SIZE);
__data_start = . ;
.data :
{
*(.data)
}
. = ALIGN(COHERENCY_UNIT);
.data.cacheline_aligned :
{
*(.data.cacheline_aligned)
}
. = ALIGN(COHERENCY_UNIT);
.data.read_mostly :
{
*(.data.read_mostly)
}
. = ALIGN(COHERENCY_UNIT);
_edata = . ;
PROVIDE (edata = .) ;
__bss_start = . ;
.bss :
{
*(.bss)
*(.bss.*)
*(COMMON)
. = ALIGN(__LARGE_PAGE_SIZE);
}
. = ALIGN(__PAGE_SIZE);
/* End of the kernel image */
__kernel_end = . ;
_end = . ;
PROVIDE (end = .) ;
.note.netbsd.ident :
{
KEEP(*(.note.netbsd.ident));
}
}
|