STATIC EFI_STATUS EFIAPI WinNtInit ( IN EFI_CPU_ARCH_PROTOCOL *This, IN EFI_CPU_INIT_TYPE InitType ) /*++ Routine Description: This routine would support generation of a CPU INIT. At present, this code does not provide emulation. Arguments: Pointer to CPU Architectural Protocol interface INIT Type Returns: Status EFI_UNSUPPORTED - not yet implemented --*/ // TODO: This - add argument and description to function comment // TODO: InitType - add argument and description to function comment { CPU_ARCH_PROTOCOL_PRIVATE *Private; Private = CPU_ARCH_PROTOCOL_PRIVATE_DATA_FROM_THIS (This); return EFI_UNSUPPORTED; }
STATIC EFI_STATUS EFIAPI WinNtDisableInterrupt ( IN EFI_CPU_ARCH_PROTOCOL *This ) /*++ Routine Description: This routine provides support for emulation of the interrupt disable of the the system. For our purposes, CPU enable is just a BOOLEAN that the Timer Architectural Protocol observes in order to defer behaviour while in its emulated interrupt, or timer tick. Arguments: Pointer to CPU Architectural Protocol interface Returns: Status EFI_SUCCESS --*/ // TODO: This - add argument and description to function comment { CPU_ARCH_PROTOCOL_PRIVATE *Private; Private = CPU_ARCH_PROTOCOL_PRIVATE_DATA_FROM_THIS (This); Private->InterruptState = FALSE; return EFI_SUCCESS; }
EFI_STATUS EFIAPI EmuInit ( IN EFI_CPU_ARCH_PROTOCOL *This, IN EFI_CPU_INIT_TYPE InitType ) { CPU_ARCH_PROTOCOL_PRIVATE *Private; Private = CPU_ARCH_PROTOCOL_PRIVATE_DATA_FROM_THIS (This); return EFI_UNSUPPORTED; }
EFI_STATUS EFIAPI EmuDisableInterrupt ( IN EFI_CPU_ARCH_PROTOCOL *This ) { CPU_ARCH_PROTOCOL_PRIVATE *Private; Private = CPU_ARCH_PROTOCOL_PRIVATE_DATA_FROM_THIS (This); Private->InterruptState = FALSE; gEmuThunk->DisableInterrupt (); return EFI_SUCCESS; }
EFI_STATUS EFIAPI EmuGetInterruptState ( IN EFI_CPU_ARCH_PROTOCOL *This, OUT BOOLEAN *State ) { CPU_ARCH_PROTOCOL_PRIVATE *Private; if (State == NULL) { return EFI_INVALID_PARAMETER; } Private = CPU_ARCH_PROTOCOL_PRIVATE_DATA_FROM_THIS (This); *State = Private->InterruptState; return EFI_SUCCESS; }
STATIC EFI_STATUS EFIAPI WinNtRegisterInterruptHandler ( IN EFI_CPU_ARCH_PROTOCOL *This, IN EFI_EXCEPTION_TYPE InterruptType, IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler ) /*++ Routine Description: This routine would support registration of an interrupt handler. At present, this code does not provide emulation. Arguments: Pointer to CPU Architectural Protocol interface Pointer to interrupt handlers Interrupt type Returns: Status EFI_UNSUPPORTED - not yet implemented --*/ // TODO: This - add argument and description to function comment // TODO: InterruptType - add argument and description to function comment // TODO: InterruptHandler - add argument and description to function comment { CPU_ARCH_PROTOCOL_PRIVATE *Private; // // Do parameter checking for EFI spec conformance // if (InterruptType < 0 || InterruptType > 0xff) { return EFI_UNSUPPORTED; } // // Do nothing for Nt32 emulation // Private = CPU_ARCH_PROTOCOL_PRIVATE_DATA_FROM_THIS (This); return EFI_UNSUPPORTED; }
EFI_STATUS EFIAPI EmuRegisterInterruptHandler ( IN EFI_CPU_ARCH_PROTOCOL *This, IN EFI_EXCEPTION_TYPE InterruptType, IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler ) { CPU_ARCH_PROTOCOL_PRIVATE *Private; // // Do parameter checking for EFI spec conformance // if (InterruptType < 0 || InterruptType > 0xff) { return EFI_UNSUPPORTED; } // // Do nothing for Emu emulation // Private = CPU_ARCH_PROTOCOL_PRIVATE_DATA_FROM_THIS (This); return EFI_UNSUPPORTED; }