Signed-off-by: lgao4 Reviewed-by: rsun3 Reviewed-by: ftian git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12792 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			106 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Support for S3 boot script lib. This file defined some internal macro and internal 
 | 
						|
  data structure
 | 
						|
 
 | 
						|
  Copyright (c) 2006 - 2011, 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.
 | 
						|
 | 
						|
**/
 | 
						|
#ifndef __INTERNAL_BOOT_SCRIPT_LIB__
 | 
						|
#define __INTERNAL_BOOT_SCRIPT_LIB__
 | 
						|
 | 
						|
#include <PiDxe.h>
 | 
						|
 | 
						|
#include <Guid/EventGroup.h>
 | 
						|
#include <Protocol/SmmBase2.h>
 | 
						|
#include <Protocol/DxeSmmReadyToLock.h>
 | 
						|
#include <Protocol/SmmReadyToLock.h>
 | 
						|
 | 
						|
#include <Library/S3BootScriptLib.h>
 | 
						|
 | 
						|
#include <Library/UefiBootServicesTableLib.h>
 | 
						|
#include <Library/BaseLib.h>
 | 
						|
#include <Library/PcdLib.h>
 | 
						|
#include <Library/SmbusLib.h>
 | 
						|
#include <Library/IoLib.h>
 | 
						|
#include <Library/PciLib.h>
 | 
						|
#include <Library/DebugLib.h>
 | 
						|
#include <Library/BaseMemoryLib.h>
 | 
						|
#include <Library/TimerLib.h>
 | 
						|
#include <Library/UefiLib.h>
 | 
						|
#include <Library/LockBoxLib.h>
 | 
						|
 | 
						|
#include "BootScriptInternalFormat.h"
 | 
						|
 | 
						|
#define MAX_IO_ADDRESS 0xFFFF
 | 
						|
 | 
						|
//
 | 
						|
// Macro to convert a UEFI PCI address to a PCI Library PCI address
 | 
						|
//
 | 
						|
#define PCI_ADDRESS_ENCODE(A) (UINTN)PCI_LIB_ADDRESS( \
 | 
						|
        ((((UINTN)(A))& 0xff000000) >> 24), ((((UINTN)(A)) &0x00ff0000) >> 16), ((((UINTN)(A)) & 0xff00) >> 8), ((RShiftU64 ((A), 32) & 0xfff) | ((A)& 0xff)) \
 | 
						|
        )
 | 
						|
        
 | 
						|
 | 
						|
 | 
						|
typedef union {
 | 
						|
  UINT8 volatile  *Buf;
 | 
						|
  UINT8 volatile  *Uint8;
 | 
						|
  UINT16 volatile *Uint16;
 | 
						|
  UINT32 volatile *Uint32;
 | 
						|
  UINT64 volatile *Uint64;
 | 
						|
  UINTN volatile   Uint;
 | 
						|
} PTR;
 | 
						|
 | 
						|
 | 
						|
// Minimum and maximum length for SMBus bus block protocols defined in SMBus spec 2.0.
 | 
						|
//
 | 
						|
#define MIN_SMBUS_BLOCK_LEN               1
 | 
						|
#define MAX_SMBUS_BLOCK_LEN               32
 | 
						|
 | 
						|
//
 | 
						|
// The boot script private data.
 | 
						|
//
 | 
						|
typedef struct {
 | 
						|
  UINT8           *TableBase;
 | 
						|
  UINT32          TableLength;               // Record the actual memory length 
 | 
						|
  UINT16          TableMemoryPageNumber;     // Record the page number Allocated for the table 
 | 
						|
  BOOLEAN         AtRuntime;                 // Record if current state is after SmmReadyToLock
 | 
						|
  BOOLEAN         InSmm;                     // Record if this library is in SMM.
 | 
						|
} SCRIPT_TABLE_PRIVATE_DATA;
 | 
						|
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *DISPATCH_ENTRYPOINT_FUNC) (
 | 
						|
  IN EFI_HANDLE ImageHandle,
 | 
						|
  IN VOID       *Context
 | 
						|
  );
 | 
						|
 | 
						|
extern SCRIPT_TABLE_PRIVATE_DATA       *mS3BootScriptTablePtr;
 | 
						|
 | 
						|
//
 | 
						|
// Define Opcode for Label which is implementation specific and no standard spec define.
 | 
						|
//
 | 
						|
#define  S3_BOOT_SCRIPT_LIB_LABEL_OPCODE    0xFE
 | 
						|
 | 
						|
///
 | 
						|
/// The opcode indicate the start of the boot script table.
 | 
						|
///
 | 
						|
#define S3_BOOT_SCRIPT_LIB_TABLE_OPCODE                  0xAA
 | 
						|
///
 | 
						|
/// The opcode indicate the end of the boot script table.
 | 
						|
///
 | 
						|
#define S3_BOOT_SCRIPT_LIB_TERMINATE_OPCODE              0xFF
 | 
						|
 | 
						|
 | 
						|
#endif //__INTERNAL_BOOT_SCRIPT_LIB__
 | 
						|
 |