CRBNMI.C里面有function
VOID CRBGpi8SmiHandler (
IN EFI_HANDLE DispatchHandle,
IN EFI_SMM_GPI_DISPATCH_CONTEXT *DispatchContext )
{
// Porting if needed
}
为什么通过相应的GPIO会产生一个SMI信号?
l The corresponding GPI must be routed in the GPI_ROUT register to cause an SMI.
l MmPci32(LPC_BUS, LPC_DEVICE, LPC_FUNC, ICH_REG_LPC_GPI_ROUT) |= 1 << (2 * GpiNo);
将配对的GPI在GPI_POUT中设置,SMI信号就可以rout到相应的GPIO
软件触发NMI的流程:
在SMI的Handle处理程序中设置相应的寄存器来触发NMI,流程如下(参考SBSMI.C里的SBGpi14SmiHandler() ):
TCO_BASE_ADDRESS=0x0460
ICH_IOREG_TCO1_CNT=0x08
ICH_IOREG_TCO1_STS=0x04
ALIAS