xref: /openbmc/linux/arch/x86/boot/setup.ld (revision f5ad1c74)
1/*
2 * setup.ld
3 *
4 * Linker script for the i386 setup code
5 */
6OUTPUT_FORMAT("elf32-i386")
7OUTPUT_ARCH(i386)
8ENTRY(_start)
9
10SECTIONS
11{
12	. = 0;
13	.bstext		: { *(.bstext) }
14	.bsdata		: { *(.bsdata) }
15
16	. = 495;
17	.header		: { *(.header) }
18	.entrytext	: { *(.entrytext) }
19	.inittext	: { *(.inittext) }
20	.initdata	: { *(.initdata) }
21	__end_init = .;
22
23	.text		: { *(.text .text.*) }
24	.text32		: { *(.text32) }
25
26	. = ALIGN(16);
27	.rodata		: { *(.rodata*) }
28
29	.videocards	: {
30		video_cards = .;
31		*(.videocards)
32		video_cards_end = .;
33	}
34
35	. = ALIGN(16);
36	.data		: { *(.data*) }
37
38	.signature	: {
39		setup_sig = .;
40		LONG(0x5a5aaa55)
41	}
42
43
44	. = ALIGN(16);
45	.bss		:
46	{
47		__bss_start = .;
48		*(.bss)
49		__bss_end = .;
50	}
51	. = ALIGN(16);
52	_end = .;
53
54	/DISCARD/	: {
55		*(.note*)
56	}
57
58	/*
59	 * The ASSERT() sink to . is intentional, for binutils 2.14 compatibility:
60	 */
61	. = ASSERT(_end <= 0x8000, "Setup too big!");
62	. = ASSERT(hdr == 0x1f1, "The setup header has the wrong offset!");
63	/* Necessary for the very-old-loader check to work... */
64	. = ASSERT(__end_init <= 5*512, "init sections too big!");
65
66}
67