Home | History | Annotate | Download | only in SmmCpuFeaturesLib
      1 /** @file
      2 The CPU specific programming for PiSmmCpuDxeSmm module when STM support
      3 is not included.
      4 
      5 Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.<BR>
      6 This program and the accompanying materials
      7 are licensed and made available under the terms and conditions of the BSD License
      8 which accompanies this distribution.  The full text of the license may be found at
      9 http://opensource.org/licenses/bsd-license.php
     10 
     11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     13 
     14 **/
     15 
     16 #include <PiSmm.h>
     17 #include <Library/SmmCpuFeaturesLib.h>
     18 
     19 /**
     20   Internal worker function that is called to complete CPU initialization at the
     21   end of SmmCpuFeaturesInitializeProcessor().
     22 
     23 **/
     24 VOID
     25 FinishSmmCpuFeaturesInitializeProcessor (
     26   VOID
     27   )
     28 {
     29 }
     30 
     31 /**
     32   Return the size, in bytes, of a custom SMI Handler in bytes.  If 0 is
     33   returned, then a custom SMI handler is not provided by this library,
     34   and the default SMI handler must be used.
     35 
     36   @retval 0    Use the default SMI handler.
     37   @retval > 0  Use the SMI handler installed by SmmCpuFeaturesInstallSmiHandler()
     38                The caller is required to allocate enough SMRAM for each CPU to
     39                support the size of the custom SMI handler.
     40 **/
     41 UINTN
     42 EFIAPI
     43 SmmCpuFeaturesGetSmiHandlerSize (
     44   VOID
     45   )
     46 {
     47   return 0;
     48 }
     49 
     50 /**
     51   Install a custom SMI handler for the CPU specified by CpuIndex.  This function
     52   is only called if SmmCpuFeaturesGetSmiHandlerSize() returns a size is greater
     53   than zero and is called by the CPU that was elected as monarch during System
     54   Management Mode initialization.
     55 
     56   @param[in] CpuIndex   The index of the CPU to install the custom SMI handler.
     57                         The value must be between 0 and the NumberOfCpus field
     58                         in the System Management System Table (SMST).
     59   @param[in] SmBase     The SMBASE address for the CPU specified by CpuIndex.
     60   @param[in] SmiStack   The stack to use when an SMI is processed by the
     61                         the CPU specified by CpuIndex.
     62   @param[in] StackSize  The size, in bytes, if the stack used when an SMI is
     63                         processed by the CPU specified by CpuIndex.
     64   @param[in] GdtBase    The base address of the GDT to use when an SMI is
     65                         processed by the CPU specified by CpuIndex.
     66   @param[in] GdtSize    The size, in bytes, of the GDT used when an SMI is
     67                         processed by the CPU specified by CpuIndex.
     68   @param[in] IdtBase    The base address of the IDT to use when an SMI is
     69                         processed by the CPU specified by CpuIndex.
     70   @param[in] IdtSize    The size, in bytes, of the IDT used when an SMI is
     71                         processed by the CPU specified by CpuIndex.
     72   @param[in] Cr3        The base address of the page tables to use when an SMI
     73                         is processed by the CPU specified by CpuIndex.
     74 **/
     75 VOID
     76 EFIAPI
     77 SmmCpuFeaturesInstallSmiHandler (
     78   IN UINTN   CpuIndex,
     79   IN UINT32  SmBase,
     80   IN VOID    *SmiStack,
     81   IN UINTN   StackSize,
     82   IN UINTN   GdtBase,
     83   IN UINTN   GdtSize,
     84   IN UINTN   IdtBase,
     85   IN UINTN   IdtSize,
     86   IN UINT32  Cr3
     87   )
     88 {
     89 }
     90