2020-09-30 17:12:29 +02:00

80 lines
1.7 KiB
ArmAsm
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//#pragma comment(exestr, "$Header: /usr4/winnt/SOURCES/halpcims/src/hal/halsnipm/mips/RCS/xxidle.s,v 1.3 1995/11/02 11:04:33 flo Exp $")
// TITLE("Processor Idle")
//++
//
// Copyright (c) 1994 Microsoft Corporation
//
// Module Name:
//
// xxidle.s
//
// Abstract:
//
// This module implements system platform dependent power management
// support.
//
// Environment:
//
// Kernel mode only.
//
// Revision History:
//
//--
#include "halmips.h"
SBTTL("Processor Idle")
//++
//
// VOID
// HalProcessorIdle(
// VOID
// )
//
// Routine Description:
//
// 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 IE in PSR clear. This routine
// must do any power management enabling necessary, set the IE
// bit in PSR, then either return or wait for an interrupt.
//
// Arguments:
//
// None.
//
// Return Value:
//
// None.
//
//--
LEAF_ENTRY(HalProcessorIdle)
//
// Perform power management enabling.
//
.set noreorder
.set noat
mfc0 v0,psr // get current PSR
nop // fill
or v0,v0,1 << PSR_IE // set interrupt enable.
mtc0 v0,psr // enable interrupts
.set at
.set reorder
//
// Wait for an interrupt if supported.
//
li a0,0x01
j HalpCheckSpuriousInt // return
10: j ra
.end HalProcessorIdle