Thank you very much!
On Friday, January 24, 2014 4:43 PM, Andrew Fish <af...@apple.com> wrote:
On Jan 24, 2014, at 4:25 PM, Toto Lebolo <toto_leb...@yahoo.com> wrote:
Hello team,
>
>I am looking for an example of a UEFI shell program that has an exception
>handler.
>
>
>More specifically I am interested in hooking up a routine on top of the CMCI
>(Corrected machine-check error interrupt) on an x86 platfrom (Haswell).
>
>
>Any example using Interrupt, NMI, SMI, err[0] will be helpfull.
>Thanks for the help…
The PI Cpu Architectural Protocol is all you need. Do a
RegisterInterruptHandler() and your handler will get called with the system
context and can just return when it is done. the CPU driver handles all the
magic.
https://svn.code.sf.net/p/edk2/code/trunk/edk2/MdePkg/Include/Protocol/Cpu.h
/** EFI_CPU_INTERRUPT_HANDLER that is called when a processor interrupt occurs.
@param InterruptType Defines the type of interrupt or exception that
occurred on the processor.This parameter is processor architecture specific.
@param SystemContext A pointer to the processor context when the interrupt
occurred on the processor. @return None **/
typedef
VOID
(EFIAPI *EFI_CPU_INTERRUPT_HANDLER)( IN CONST EFI_EXCEPTION_TYPE
InterruptType, IN CONST EFI_SYSTEM_CONTEXT SystemContext );
/** This function registers and enables the handler specified by
InterruptHandler for a processor interrupt or exception type specified by
InterruptType. If InterruptHandler is NULL, then the handler for the processor
interrupt or exception type specified by InterruptType is uninstalled. The
installed handler is called once for each processor interrupt or exception.
@param This The EFI_CPU_ARCH_PROTOCOL instance. @param
InterruptType A pointer to the processor's current interrupt state. Set to
TRUE if interrupts are enabled and FALSE if interrupts are disabled. @param
InterruptHandler A pointer to a function of type EFI_CPU_INTERRUPT_HANDLER that
is called when a processor interrupt occurs. If this parameter is NULL, then
the handler will be uninstalled. @retval EFI_SUCCESS The handler for
the processor interrupt was successfully installed or uninstalled. @retval
EFI_ALREADY_STARTED InterruptHandler is not NULL, and a
handler for InterruptType was previously installed. @retval
EFI_INVALID_PARAMETER InterruptHandler is NULL, and a handler for InterruptType
was not previously installed. @retval EFI_UNSUPPORTED The interrupt
specified by InterruptType is not supported. **/
typedef
EFI_STATUS
(EFIAPI *EFI_CPU_REGISTER_INTERRUPT_HANDLER)( IN EFI_CPU_ARCH_PROTOCOL
*This, IN EFI_EXCEPTION_TYPE InterruptType, IN
EFI_CPU_INTERRUPT_HANDLER InterruptHandler );
SMM is very very different.
Thanks,
Andrew Fish
MiKL~
>
>
>
>
>------------------------------------------------------------------------------
>CenturyLink Cloud: The Leader in Enterprise Cloud Services.
>Learn Why More Businesses Are Choosing CenturyLink Cloud For
>Critical Workloads, Development Environments & Everything In Between.
>Get a Quote or Start a Free Trial Today.
>http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk_______________________________________________
>edk2-devel mailing list
>edk2-devel@lists.sourceforge.net
>https://lists.sourceforge.net/lists/listinfo/edk2-devel
>
>
------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today.
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today.
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel