Cc: Michael Kinney <michael.d.kinney@intel.com> Cc: Jeff Fan <jeff.fan@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>
		
			
				
	
	
		
			90 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
The CPU specific programming for PiSmmCpuDxeSmm module when STM support
 | 
						|
is not included.
 | 
						|
 | 
						|
Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.<BR>
 | 
						|
This program and the accompanying materials
 | 
						|
are licensed and made available under the terms and conditions of the BSD License
 | 
						|
which accompanies this distribution.  The full text of the license may be found at
 | 
						|
http://opensource.org/licenses/bsd-license.php
 | 
						|
 | 
						|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#include <PiSmm.h>
 | 
						|
#include <Library/SmmCpuFeaturesLib.h>
 | 
						|
 | 
						|
/**
 | 
						|
  Internal worker function that is called to complete CPU initialization at the
 | 
						|
  end of SmmCpuFeaturesInitializeProcessor().
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
FinishSmmCpuFeaturesInitializeProcessor (
 | 
						|
  VOID
 | 
						|
  )
 | 
						|
{
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
  Return the size, in bytes, of a custom SMI Handler in bytes.  If 0 is
 | 
						|
  returned, then a custom SMI handler is not provided by this library,
 | 
						|
  and the default SMI handler must be used.
 | 
						|
 | 
						|
  @retval 0    Use the default SMI handler.
 | 
						|
  @retval > 0  Use the SMI handler installed by SmmCpuFeaturesInstallSmiHandler()
 | 
						|
               The caller is required to allocate enough SMRAM for each CPU to
 | 
						|
               support the size of the custom SMI handler.
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EFIAPI
 | 
						|
SmmCpuFeaturesGetSmiHandlerSize (
 | 
						|
  VOID
 | 
						|
  )
 | 
						|
{
 | 
						|
  return 0;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
  Install a custom SMI handler for the CPU specified by CpuIndex.  This function
 | 
						|
  is only called if SmmCpuFeaturesGetSmiHandlerSize() returns a size is greater
 | 
						|
  than zero and is called by the CPU that was elected as monarch during System
 | 
						|
  Management Mode initialization.
 | 
						|
 | 
						|
  @param[in] CpuIndex   The index of the CPU to install the custom SMI handler.
 | 
						|
                        The value must be between 0 and the NumberOfCpus field
 | 
						|
                        in the System Management System Table (SMST).
 | 
						|
  @param[in] SmBase     The SMBASE address for the CPU specified by CpuIndex.
 | 
						|
  @param[in] SmiStack   The stack to use when an SMI is processed by the
 | 
						|
                        the CPU specified by CpuIndex.
 | 
						|
  @param[in] StackSize  The size, in bytes, if the stack used when an SMI is
 | 
						|
                        processed by the CPU specified by CpuIndex.
 | 
						|
  @param[in] GdtBase    The base address of the GDT to use when an SMI is
 | 
						|
                        processed by the CPU specified by CpuIndex.
 | 
						|
  @param[in] GdtSize    The size, in bytes, of the GDT used when an SMI is
 | 
						|
                        processed by the CPU specified by CpuIndex.
 | 
						|
  @param[in] IdtBase    The base address of the IDT to use when an SMI is
 | 
						|
                        processed by the CPU specified by CpuIndex.
 | 
						|
  @param[in] IdtSize    The size, in bytes, of the IDT used when an SMI is
 | 
						|
                        processed by the CPU specified by CpuIndex.
 | 
						|
  @param[in] Cr3        The base address of the page tables to use when an SMI
 | 
						|
                        is processed by the CPU specified by CpuIndex.
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
SmmCpuFeaturesInstallSmiHandler (
 | 
						|
  IN UINTN   CpuIndex,
 | 
						|
  IN UINT32  SmBase,
 | 
						|
  IN VOID    *SmiStack,
 | 
						|
  IN UINTN   StackSize,
 | 
						|
  IN UINTN   GdtBase,
 | 
						|
  IN UINTN   GdtSize,
 | 
						|
  IN UINTN   IdtBase,
 | 
						|
  IN UINTN   IdtSize,
 | 
						|
  IN UINT32  Cr3
 | 
						|
  )
 | 
						|
{
 | 
						|
}
 |