2006-11-15 00:08:51 +00:00
|
|
|
/*
|
|
|
|
* PROJECT: ReactOS HAL
|
|
|
|
* LICENSE: GPL - See COPYING in the top level directory
|
2006-11-29 08:28:20 +00:00
|
|
|
* FILE: hal/halx86/up/processor.c
|
2006-11-15 00:08:51 +00:00
|
|
|
* PURPOSE: HAL Processor Routines
|
|
|
|
* PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
|
2004-12-03 20:10:45 +00:00
|
|
|
*/
|
|
|
|
|
2006-11-15 00:08:51 +00:00
|
|
|
/* INCLUDES ******************************************************************/
|
2004-12-03 20:10:45 +00:00
|
|
|
|
2005-06-18 14:29:31 +00:00
|
|
|
#include <hal.h>
|
2005-06-19 22:53:49 +00:00
|
|
|
#define NDEBUG
|
|
|
|
#include <debug.h>
|
2004-12-03 20:10:45 +00:00
|
|
|
|
2006-11-15 00:08:51 +00:00
|
|
|
LONG HalpActiveProcessors;
|
|
|
|
KAFFINITY HalpDefaultInterruptAffinity;
|
|
|
|
|
2004-12-03 20:10:45 +00:00
|
|
|
/* FUNCTIONS *****************************************************************/
|
|
|
|
|
2006-11-14 20:59:48 +00:00
|
|
|
/*
|
|
|
|
* @implemented
|
|
|
|
*/
|
2006-10-01 20:27:36 +00:00
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
HalInitializeProcessor(IN ULONG ProcessorNumber,
|
|
|
|
IN PLOADER_PARAMETER_BLOCK LoaderBlock)
|
2004-12-03 20:10:45 +00:00
|
|
|
{
|
2006-11-15 00:08:51 +00:00
|
|
|
/* Set default IDR and stall count */
|
2006-08-25 00:30:26 +00:00
|
|
|
KeGetPcr()->IDR = 0xFFFFFFFB;
|
|
|
|
KeGetPcr()->StallScaleFactor = INITIAL_STALL_COUNT;
|
2006-11-15 00:08:51 +00:00
|
|
|
|
|
|
|
/* Update the interrupt affinity and processor mask */
|
|
|
|
InterlockedBitTestAndSet(&HalpActiveProcessors, ProcessorNumber);
|
2006-11-29 22:12:50 +00:00
|
|
|
InterlockedBitTestAndSet((PLONG)&HalpDefaultInterruptAffinity,
|
|
|
|
ProcessorNumber);
|
2006-11-15 00:08:51 +00:00
|
|
|
|
2006-11-29 22:12:50 +00:00
|
|
|
/* Register routines for KDCOM */
|
|
|
|
HalpRegisterKdSupportFunctions();
|
2004-12-03 20:10:45 +00:00
|
|
|
}
|
|
|
|
|
2006-11-14 20:59:48 +00:00
|
|
|
/*
|
|
|
|
* @implemented
|
|
|
|
*/
|
|
|
|
BOOLEAN
|
|
|
|
NTAPI
|
|
|
|
HalAllProcessorsStarted(VOID)
|
2004-12-03 20:10:45 +00:00
|
|
|
{
|
2006-11-14 20:59:48 +00:00
|
|
|
/* Do nothing */
|
|
|
|
return TRUE;
|
2004-12-03 20:10:45 +00:00
|
|
|
}
|
|
|
|
|
2006-11-14 20:59:48 +00:00
|
|
|
/*
|
|
|
|
* @implemented
|
|
|
|
*/
|
|
|
|
BOOLEAN
|
|
|
|
NTAPI
|
|
|
|
HalStartNextProcessor(IN PLOADER_PARAMETER_BLOCK LoaderBlock,
|
|
|
|
IN PKPROCESSOR_STATE ProcessorState)
|
2004-12-03 20:10:45 +00:00
|
|
|
{
|
2006-11-14 20:59:48 +00:00
|
|
|
/* Ready to start */
|
|
|
|
return FALSE;
|
2004-12-03 20:10:45 +00:00
|
|
|
}
|
|
|
|
|
2006-11-14 20:59:48 +00:00
|
|
|
/*
|
|
|
|
* @implemented
|
|
|
|
*/
|
2006-09-11 06:50:19 +00:00
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
HalProcessorIdle(VOID)
|
|
|
|
{
|
2006-11-15 00:08:51 +00:00
|
|
|
/* Enable interrupts and halt the processor */
|
2006-11-14 20:59:48 +00:00
|
|
|
_enable();
|
2006-11-17 04:18:41 +00:00
|
|
|
Ke386HaltProcessor();
|
2006-09-11 06:50:19 +00:00
|
|
|
}
|
|
|
|
|
2006-11-14 20:59:48 +00:00
|
|
|
/*
|
|
|
|
* @implemented
|
|
|
|
*/
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
HalRequestIpi(ULONG Reserved)
|
|
|
|
{
|
|
|
|
/* Not implemented on NT */
|
|
|
|
__debugbreak();
|
|
|
|
}
|
|
|
|
|
2004-12-03 20:10:45 +00:00
|
|
|
/* EOF */
|