mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-23 11:04:44 +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>
30 lines
843 B
C
30 lines
843 B
C
/* -----------------------------------------------------------------------
|
|
*
|
|
* Copyright 2009 Intel Corporation; author H. Peter Anvin
|
|
*
|
|
* This file is part of the Linux kernel, and is made available under
|
|
* the terms of the GNU General Public License version 2 or (at your
|
|
* option) any later version; incorporated herein by reference.
|
|
*
|
|
* ----------------------------------------------------------------------- */
|
|
|
|
/*
|
|
* Simple helper function for initializing a register set.
|
|
*
|
|
* Note that this sets EFLAGS_CF in the input register set; this
|
|
* makes it easier to catch functions which do nothing but don't
|
|
* explicitly set CF.
|
|
*/
|
|
|
|
#include "boot.h"
|
|
|
|
void initregs(struct biosregs *reg)
|
|
{
|
|
memset(reg, 0, sizeof *reg);
|
|
reg->eflags |= X86_EFLAGS_CF;
|
|
reg->ds = ds();
|
|
reg->es = ds();
|
|
reg->fs = fs();
|
|
reg->gs = gs();
|
|
}
|