xref: /linux/arch/x86/boot/setup.ld (revision ca55b2fef3a9373fcfc30f82fd26bc7fccbda732)
1/*
2 * setup.ld
3 *
4 * Linker script for the i386 setup code
5 */
6OUTPUT_FORMAT("elf32-i386", "elf32-i386", "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) }
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/ : { *(.note*) }
55
56	/*
57	 * The ASSERT() sink to . is intentional, for binutils 2.14 compatibility:
58	 */
59	. = ASSERT(_end <= 0x8000, "Setup too big!");
60	. = ASSERT(hdr == 0x1f1, "The setup header has the wrong offset!");
61	/* Necessary for the very-old-loader check to work... */
62	. = ASSERT(__end_init <= 5*512, "init sections too big!");
63
64}
65