mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-11-04 06:52:16 +00:00 
			
		
		
		
	REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the UefiCpuPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
		
			
				
	
	
		
			135 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
SMM profile header file.
 | 
						|
 | 
						|
Copyright (c) 2012 - 2019, Intel Corporation. All rights reserved.<BR>
 | 
						|
SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef _SMM_PROFILE_H_
 | 
						|
#define _SMM_PROFILE_H_
 | 
						|
 | 
						|
#include "SmmProfileInternal.h"
 | 
						|
 | 
						|
//
 | 
						|
// External functions
 | 
						|
//
 | 
						|
 | 
						|
/**
 | 
						|
  Initialize processor environment for SMM profile.
 | 
						|
 | 
						|
  @param  CpuIndex  The index of the processor.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
ActivateSmmProfile (
 | 
						|
  IN UINTN  CpuIndex
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Initialize SMM profile in SMM CPU entry point.
 | 
						|
 | 
						|
  @param[in] Cr3  The base address of the page tables to use in SMM.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
InitSmmProfile (
 | 
						|
  UINT32  Cr3
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Increase SMI number in each SMI entry.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
SmmProfileRecordSmiNum (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  The Page fault handler to save SMM profile data.
 | 
						|
 | 
						|
  @param  Rip        The RIP when exception happens.
 | 
						|
  @param  ErrorCode  The Error code of exception.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
SmmProfilePFHandler (
 | 
						|
  UINTN  Rip,
 | 
						|
  UINTN  ErrorCode
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Updates page table to make some memory ranges (like system memory) absent
 | 
						|
  and make some memory ranges (like MMIO) present and execute disable. It also
 | 
						|
  update 2MB-page to 4KB-page for some memory ranges.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
SmmProfileStart (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Page fault IDT handler for SMM Profile.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
PageFaultIdtHandlerSmmProfile (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Check if feature is supported by a processor.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
CheckFeatureSupported (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Update page table according to protected memory ranges and the 4KB-page mapped memory ranges.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
InitPaging (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Get CPU Index from APIC ID.
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
GetCpuIndex (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Handler for Page Fault triggered by Guard page.
 | 
						|
 | 
						|
  @param  ErrorCode  The Error code of exception.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
GuardPagePFHandler (
 | 
						|
  UINTN  ErrorCode
 | 
						|
  );
 | 
						|
 | 
						|
//
 | 
						|
// The flag indicates if execute-disable is supported by processor.
 | 
						|
//
 | 
						|
extern BOOLEAN  mXdSupported;
 | 
						|
//
 | 
						|
// The flag indicates if execute-disable is enabled on processor.
 | 
						|
//
 | 
						|
extern BOOLEAN  mXdEnabled;
 | 
						|
//
 | 
						|
// The flag indicates if #DB will be setup in #PF handler.
 | 
						|
//
 | 
						|
extern BOOLEAN  mSetupDebugTrap;
 | 
						|
 | 
						|
#endif // _SMM_PROFILE_H_
 |