Leaked source code of windows server 2003
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.
|
|
/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
ixreboot.c
Abstract:
Provides the interface to the firmware for x86. Since there is no firmware to speak of on x86, this is just reboot support.
Author:
John Vert (jvert) 12-Aug-1991
Revision History:
--*/ #include "halp.h"
//
// Defines to let us diddle the CMOS clock and the keyboard
//
#define CMOS_CTRL (PUCHAR )0x70
#define CMOS_DATA (PUCHAR )0x71
#define RESET 0xfe
#define KEYBPORT (PUCHAR )0x64
//
// Private function prototypes
//
VOID HalpReboot ( VOID );
VOID HalpReboot ( VOID )
/*++
Routine Description:
This procedure resets the CMOS clock to the standard timer settings so the bios will work, and then issues a reset command to the keyboard to cause a warm boot.
It is very machine dependent, this implementation is intended for PC-AT like machines.
This code copied from the "old debugger" sources.
N.B.
Will NOT return.
--*/
{ UCHAR Scratch; PUSHORT Magic; EFI_STATUS status;
//
// Disable IA64 Errror Handling
//
HalpMCADisable();
//
// Instead of the previous code we will use Efi's reset proc (RESET_TYPE = cold boot).
//
status = HalpCallEfi ( EFI_RESET_SYSTEM_INDEX, (ULONGLONG)EfiResetCold, EFI_SUCCESS, 0, 0, 0, 0, 0, 0 );
HalDebugPrint(( HAL_INFO, "HAL: HalpReboot - returned from HalpCallEfi: %I64X\n", status )); //
// If we return, send the reset command to the keyboard controller
//
WRITE_PORT_UCHAR(KEYBPORT, RESET);
}
|