mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 21:54:11 +08:00
7a734e7dd9
Impact: new interfaces (not yet used) For all the platforms out there, there is an infinite number of buggy BIOSes. This adds infrastructure to treat BIOS interrupts more like toxic waste and "glove box" them -- we switch out the register set, perform the BIOS interrupt, and then restore the previous state. LKML-Reference: <49DE7F79.4030106@zytor.com> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> Cc: Pavel Machek <pavel@ucw.cz> Cc: Rafael J. Wysocki <rjw@sisk.pl>
62 lines
1017 B
Plaintext
62 lines
1017 B
Plaintext
/*
|
|
* setup.ld
|
|
*
|
|
* Linker script for the i386 setup code
|
|
*/
|
|
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
|
OUTPUT_ARCH(i386)
|
|
ENTRY(_start)
|
|
|
|
SECTIONS
|
|
{
|
|
. = 0;
|
|
.bstext : { *(.bstext) }
|
|
.bsdata : { *(.bsdata) }
|
|
|
|
. = 497;
|
|
.header : { *(.header) }
|
|
.entrytext : { *(.entrytext) }
|
|
.inittext : { *(.inittext) }
|
|
.initdata : { *(.initdata) }
|
|
__end_init = .;
|
|
|
|
.text : { *(.text) }
|
|
.text32 : { *(.text32) }
|
|
|
|
. = ALIGN(16);
|
|
.rodata : { *(.rodata*) }
|
|
|
|
.videocards : {
|
|
video_cards = .;
|
|
*(.videocards)
|
|
video_cards_end = .;
|
|
}
|
|
|
|
. = ALIGN(16);
|
|
.data : { *(.data*) }
|
|
|
|
.signature : {
|
|
setup_sig = .;
|
|
LONG(0x5a5aaa55)
|
|
}
|
|
|
|
|
|
. = ALIGN(16);
|
|
.bss :
|
|
{
|
|
__bss_start = .;
|
|
*(.bss)
|
|
__bss_end = .;
|
|
}
|
|
. = ALIGN(16);
|
|
_end = .;
|
|
|
|
/DISCARD/ : { *(.note*) }
|
|
|
|
. = ASSERT(_end <= 0x8000, "Setup too big!");
|
|
. = ASSERT(hdr == 0x1f1, "The setup header has the wrong offset!");
|
|
/* Necessary for the very-old-loader check to work... */
|
|
. = ASSERT(__end_init <= 5*512, "init sections too big!");
|
|
|
|
}
|