1 /* $Id: reboot.c,v 1.1 2004/12/03 20:10:43 gvg Exp $
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: ntoskrnl/hal/x86/reboot.c
6 * PURPOSE: Reboot functions.
7 * PROGRAMMER: Eric Kohl (ekohl@abo.rhein-zeitung.de)
13 #include <ddk/ntddk.h>
21 extern PVOID HalpZeroPageMapping
;
23 /* enable warm reboot */
24 ((PUCHAR
)HalpZeroPageMapping
)[0x472] = 0x34;
25 ((PUCHAR
)HalpZeroPageMapping
)[0x473] = 0x12;
27 /* disable interrupts */
28 Ki386DisableInterrupts();
31 /* disable periodic interrupt (RTC) */
32 WRITE_PORT_UCHAR((PUCHAR
)0x70, 0x0b);
33 data
= READ_PORT_UCHAR((PUCHAR
)0x71);
34 WRITE_PORT_UCHAR((PUCHAR
)0x71, (UCHAR
)(data
& 0xbf));
37 WRITE_PORT_UCHAR((PUCHAR
)0x70, 0x0a);
38 data
= READ_PORT_UCHAR((PUCHAR
)0x71);
39 WRITE_PORT_UCHAR((PUCHAR
)0x71, (UCHAR
)((data
& 0xf0) | 0x06));
42 WRITE_PORT_UCHAR((PUCHAR
)0x70, 0x15);
44 /* generate RESET signal via keyboard controller */
45 WRITE_PORT_UCHAR((PUCHAR
)0x64, 0xfe);
47 /* stop the processor */
60 if (Action
== FIRMWARE_HALT
)
62 DbgPrint ("HalReturnToFirmware called!\n");
65 else if (Action
== FIRMWARE_REBOOT
)
67 HalReleaseDisplayOwnership();