blob: f59e5b15d065b06e4d8bd74d7274e546e9f996d3 (
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
/*
* Linker script for the SYSLINUX core
*/
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
OUTPUT_ARCH(i386)
EXTERN(_start)
ENTRY(_start)
STACK_LEN = 4096;
SECTIONS
{
/* "Early" sections (before the load) */
. = 0x0800;
.earlybss : {
__earlybss_start = .;
*(.earlybss)
__earlybss_end = .;
}
__earlybss_len = __earlybss_end - __earlybss_start;
__earlybss_dwords = (__earlybss_len + 3) >> 2;
.bcopy32 : AT (__bcopy32_lma) {
FILL(0x90909090)
__bcopy32_start = .;
*(.bcopy32)
__bcopy32_end = .;
}
__bcopy32_len = __bcopy32_end - __bcopy32_start;
__bcopy32_dwords = (__bcopy32_len + 3) >> 2;
.config : AT (__config_lma) {
__config_start = .;
*(.config)
__config_end = .;
}
__config_len = __config_end - __config_start;
__config_dwords = (__config_len + 3) >> 2;
.bss : AT(__bss_start) {
__bss_start = .;
*(.bss)
*(.bss2)
__bss_end = .;
}
__bss_len = __bss_end - __bss_start;
__bss_dwords = (__bss_len + 3) >> 2;
/* Stack */
. = 0x7c00 - STACK_LEN;
.stack : {
__stack_start = .;
. += STACK_LEN;
__stack_end = .;
}
__stack_len = __stack_end - __stack_start;
__stack_dwords = (__stack_len + 3) >> 2;
/* Initialized sections */
. = 0x7c00;
.text : {
FILL(0x90909090)
__text_start = .;
*(.text)
__text_end = .;
}
__text_len = __text_end - __text_start;
__text_dwords = (__text_len + 3) >> 2;
. = ALIGN(4);
__bcopy32_lma = .;
. += SIZEOF(.bcopy32);
. = ALIGN(4);
.data : {
__data_start = .;
*(.data)
__data_end = .;
}
__data_len = __data_end - __data_start;
__data_dwords = (__data_len + 3) >> 2;
. = ALIGN(4);
__config_lma = .;
. += SIZEOF(.config);
/* ADV, must be the last intialized section */
. = ALIGN(512);
.adv : {
__adv_start = .;
*(.adv)
__adv_end = .;
}
__adv_len = __adv_end - __adv_start;
__adv_dwords = (__adv_len + 3) >> 2;
/* Late uninitialized sections */
.uibss : {
__uibss_start = .;
*(.uibss)
__uibss_end = .;
}
__uibss_len = __uibss_end - __uibss_start;
__uibss_dwords = (__uibss_len + 3) >> 2;
.bss1 : {
__bss1_start = .;
*(.bss1)
__bss1_end = .;
}
__bss1_len = __bss1_end - __bss1_start;
__bss1_dwords = (__bss1_len + 3) >> 2;
. = ASSERT(__bss1_end <= 0x10000, "64K overflow");
. = 0x100000;
.com32 : {
*(.com32)
}
}
|