xref: /openbmc/linux/arch/x86/boot/setup.ld (revision c731fbcf)
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	: {
14		*(.bstext)
15		. = 495;
16	} =0xffffffff
17
18	.header		: { *(.header) }
19	.entrytext	: { *(.entrytext) }
20	.inittext	: { *(.inittext) }
21	.initdata	: { *(.initdata) }
22	__end_init = .;
23
24	.text		: { *(.text .text.*) }
25	.text32		: { *(.text32) }
26
27	. = ALIGN(16);
28	.rodata		: { *(.rodata*) }
29
30	.videocards	: {
31		video_cards = .;
32		*(.videocards)
33		video_cards_end = .;
34	}
35
36	. = ALIGN(16);
37	.data		: { *(.data*) }
38
39	.signature	: {
40		setup_sig = .;
41		LONG(0x5a5aaa55)
42
43		/* Reserve some extra space for the reloc and compat sections */
44		setup_size = ALIGN(ABSOLUTE(.) + 64, 512);
45		setup_sects = ABSOLUTE(setup_size / 512);
46	}
47
48
49	. = ALIGN(16);
50	.bss		:
51	{
52		__bss_start = .;
53		*(.bss)
54		__bss_end = .;
55	}
56	. = ALIGN(16);
57	_end = .;
58
59	/DISCARD/	: {
60		*(.note*)
61	}
62
63	/*
64	 * The ASSERT() sink to . is intentional, for binutils 2.14 compatibility:
65	 */
66	. = ASSERT(_end <= 0x8000, "Setup too big!");
67	. = ASSERT(hdr == 0x1f1, "The setup header has the wrong offset!");
68	/* Necessary for the very-old-loader check to work... */
69	. = ASSERT(__end_init <= 5*512, "init sections too big!");
70
71}
72