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