Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

105 lines
1.7 KiB

/*++
Copyright (c) 1993 Digital Equipment Corporation
Module Name:
bios.c
Abstract:
This module implements ROM BIOS call support for Alpha AXP NT.
Author:
Eric Rehm ([email protected]) 9-December-1993
Revision History:
--*/
#include "halp.h"
#include "arccodes.h"
#include "alpharef.h"
#include "fwcallbk.h"
//
// Static data.
//
// none.
BOOLEAN
HalCallBios (
IN ULONG BiosCommand,
IN OUT PULONG pEax,
IN OUT PULONG pEbx,
IN OUT PULONG pEcx,
IN OUT PULONG pEdx,
IN OUT PULONG pEsi,
IN OUT PULONG pEdi,
IN OUT PULONG pEbp
)
/*++
Routine Description:
This function invokes specified ROM BIOS code by executing
"INT BiosCommand." A callback to the i386 emulator loaded by
the firmware accomplishes this task. This function always
returns success reguardless of the result of the BIOS call.
Arguments:
BiosCommand - specifies which ROM BIOS function to invoke.
BiosArguments - specifies a pointer to the context which will be used
to invoke ROM BIOS.
Return Value:
TRUE if function succees, FALSE otherwise.
--*/
{
X86_BIOS_ARGUMENTS context;
context.Edi = *pEdi;
context.Esi = *pEsi;
context.Eax = *pEax;
context.Ebx = *pEbx;
context.Ecx = *pEcx;
context.Edx = *pEdx;
context.Ebp = *pEbp;
//
// Now call the firmware to actually perform the int 10 operation.
//
VenCallBios(BiosCommand, &context);
//
// fill in struct with any return values from the context
//
*pEdi = context.Edi;
*pEsi = context.Esi;
*pEax = context.Eax;
*pEbx = context.Ebx;
*pEcx = context.Ecx;
*pEdx = context.Edx;
*pEbp = context.Ebp;
//
// Indicate success
//
return TRUE;
}