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

Reply via email to