78 lines
1.4 KiB
C
78 lines
1.4 KiB
C
/*
|
|
* Copyright (c) 1995 FirePower Systems, Inc.
|
|
* DO NOT DISTRIBUTE without permission
|
|
*
|
|
* $RCSfile: pxidle.c $
|
|
* $Revision: 1.9 $
|
|
* $Date: 1996/01/11 07:10:47 $
|
|
* $Locker: $
|
|
*/
|
|
|
|
/*++
|
|
TITLE("Processor Idle")
|
|
|
|
|
|
Copyright (c) 1994 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
pxidle.c
|
|
|
|
abstract:
|
|
|
|
This module implements system platform dependent power management
|
|
support.
|
|
|
|
Author:
|
|
|
|
Jim Wooldridge
|
|
|
|
Environment:
|
|
|
|
Kernel mode only.
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#include "fpdebug.h"
|
|
#include "halp.h"
|
|
#include "phsystem.h"
|
|
#include "fpcpu.h"
|
|
ULONG HalpGetStack( VOID );
|
|
extern ULONG registeredInts[];
|
|
|
|
/*++
|
|
|
|
Routine Description: VOID HalProcessorIdle( VOID )
|
|
|
|
|
|
This function is called when the current processor is idle with
|
|
interrupts disabled. There is no thread active and there are no
|
|
DPCs to process. Therefore, power can be switched to a standby
|
|
mode until the the next interrupt occurs on the current processor.
|
|
|
|
N.B. This routine is entered with EE in MSR clear. This routine
|
|
must do any power management enabling necessary, set the EE
|
|
bit in MSR, then either return or wait for an interrupt.
|
|
|
|
Arguments:
|
|
|
|
None.
|
|
|
|
Return Value:
|
|
|
|
None.
|
|
|
|
|
|
--*/
|
|
|
|
VOID
|
|
HalProcessorIdle(VOID)
|
|
{
|
|
HASSERTMSG(PCR->CurrentIrql <= DISPATCH_LEVEL, "Wrong Dispatch Level");
|
|
HASSERT(RInterruptMask(GetCpuId()) == registeredInts[GetCpuId()]);
|
|
|
|
HalpEnableInterrupts();
|
|
}
|