aboutsummaryrefslogtreecommitdiff
path: root/src/arch/x86/bootblock.ld
blob: ad9c2efaa1b35fcd8874e6762ffea958970de7d7 (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
/* SPDX-License-Identifier: GPL-2.0-only */

gdtptr_offset = gdtptr & 0xffff;
nullidt_offset = nullidt & 0xffff;

/* Symbol _start16bit must be aligned to 4kB to start AP CPUs with
 * Startup IPI message without RAM.
 */
#if CONFIG(SIPI_VECTOR_IN_ROM)
_bogus = ASSERT((_start16bit & 0xfff) == 0, "Symbol _start16bit is not at 4 KiB boundary");
ap_sipi_vector_in_rom = (_start16bit >> 12) & 0xff;
#endif

SECTIONS {
	/* Trigger an error if I have an unusable start address */
	_bogus = ASSERT(_start16bit >= 0xffff0000, "_start16bit too low. Please report.");

	. = _ID_SECTION;
	.id (.): {
		KEEP(*(.id));
	}
	_ID_SECTION = 0xffffff80 - SIZEOF(.id);

	. = 0xffffffc0;
	.fit_pointer (.): {
		KEEP(*(.fit_pointer));
	}

	. = 0xfffffff0;
	.reset . : {
		*(.reset);
		. = 15;
		BYTE(0x00);
	}
}