mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-11-03 21:17:23 +01:00 
			
		
		
		
	Add BasePalCallLibNull instance in MdePkg. It is useful when building IPF components in open source packages.
Use meaningful arguments defined in PalLib.h when invoking PalCall(). git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4094 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
		
							parent
							
								
									a021b849f2
								
							
						
					
					
						commit
						4199d92d1c
					
				@ -55,6 +55,8 @@
 | 
			
		||||
 | 
			
		||||
[LibraryClasses.IPF]
 | 
			
		||||
  IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
 | 
			
		||||
  TimerLib|MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
 | 
			
		||||
  PalCallLib|MdePkg/Library/BasePalCallLibNull/BasePalCallLibNull.inf
 | 
			
		||||
 | 
			
		||||
[LibraryClasses.EBC.DXE_DRIVER]
 | 
			
		||||
  IoLib|IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.inf
 | 
			
		||||
@ -242,30 +244,6 @@
 | 
			
		||||
[LibraryClasses.X64.UEFI_APPLICATION]
 | 
			
		||||
  TimerLib|MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
 | 
			
		||||
 | 
			
		||||
[LibraryClasses.IPF.BASE]
 | 
			
		||||
  TimerLib|MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
 | 
			
		||||
 | 
			
		||||
[LibraryClasses.IPF.SEC]
 | 
			
		||||
  TimerLib|MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
 | 
			
		||||
 | 
			
		||||
[LibraryClasses.IPF.PEI_CORE]
 | 
			
		||||
  TimerLib|MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
 | 
			
		||||
 | 
			
		||||
[LibraryClasses.IPF.PEIM]
 | 
			
		||||
  TimerLib|MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
 | 
			
		||||
 | 
			
		||||
[LibraryClasses.IPF.DXE_DRIVER]
 | 
			
		||||
  TimerLib|MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
 | 
			
		||||
 | 
			
		||||
[LibraryClasses.IPF.DXE_SAL_DRIVER]
 | 
			
		||||
  TimerLib|MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
 | 
			
		||||
 | 
			
		||||
[LibraryClasses.IPF.UEFI_DRIVER]
 | 
			
		||||
  TimerLib|MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
 | 
			
		||||
 | 
			
		||||
[LibraryClasses.IPF.UEFI_APPLICATION]
 | 
			
		||||
  TimerLib|MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
 | 
			
		||||
 | 
			
		||||
[LibraryClasses.IA32.DXE_RUNTIME_DRIVER]
 | 
			
		||||
  UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -36,7 +36,7 @@ InvalidateInstructionCache (
 | 
			
		||||
  VOID
 | 
			
		||||
  )
 | 
			
		||||
{
 | 
			
		||||
  PalCall (1, 1, 1, 0);
 | 
			
		||||
  PalCall (PAL_CACHE_FLUSH, PAL_CACHE_FLUSH_INSTRUCTION_ALL, PAL_CACHE_FLUSH_INVALIDATE_LINES, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -90,7 +90,7 @@ WriteBackInvalidateDataCache (
 | 
			
		||||
  VOID
 | 
			
		||||
  )
 | 
			
		||||
{
 | 
			
		||||
  PalCall (1, 2, 1, 0);
 | 
			
		||||
  PalCall (PAL_CACHE_FLUSH, PAL_CACHE_FLUSH_DATA_ALL, PAL_CACHE_FLUSH_INVALIDATE_LINES, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -147,7 +147,7 @@ WriteBackDataCache (
 | 
			
		||||
  VOID
 | 
			
		||||
  )
 | 
			
		||||
{
 | 
			
		||||
  PalCall (1, 2, 0, 0);
 | 
			
		||||
  PalCall (PAL_CACHE_FLUSH, PAL_CACHE_FLUSH_DATA_ALL, PAL_CACHE_FLUSH_NO_INVALIDATE_LINES | PAL_CACHE_FLUSH_NO_INTERRUPT, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										42
									
								
								MdePkg/Library/BasePalCallLibNull/BasePalCallLibNull.inf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								MdePkg/Library/BasePalCallLibNull/BasePalCallLibNull.inf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,42 @@
 | 
			
		||||
#/** @file
 | 
			
		||||
# Component description file for NULL Debug Library
 | 
			
		||||
#
 | 
			
		||||
# Debug Library with empty functions.
 | 
			
		||||
# Copyright (c) 2007, Intel Corporation.
 | 
			
		||||
#
 | 
			
		||||
#  All rights reserved. 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.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
#**/
 | 
			
		||||
 | 
			
		||||
[Defines]
 | 
			
		||||
  INF_VERSION                    = 0x00010005
 | 
			
		||||
  BASE_NAME                      = BasePalCallLibNull
 | 
			
		||||
  FILE_GUID                      = 632D5625-B73D-43b8-AF30-8D225D96168E
 | 
			
		||||
  MODULE_TYPE                    = BASE
 | 
			
		||||
  VERSION_STRING                 = 1.0
 | 
			
		||||
  LIBRARY_CLASS                  = PalCallLib 
 | 
			
		||||
  EDK_RELEASE_VERSION            = 0x00020000
 | 
			
		||||
  EFI_SPECIFICATION_VERSION      = 0x00020000
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
#  VALID_ARCHITECTURES           = IPF
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
[Sources.common]
 | 
			
		||||
  PalCall.c
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[Packages]
 | 
			
		||||
  MdePkg/MdePkg.dec
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[LibraryClasses]
 | 
			
		||||
  DebugLib
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										58
									
								
								MdePkg/Library/BasePalCallLibNull/PalCall.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								MdePkg/Library/BasePalCallLibNull/PalCall.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,58 @@
 | 
			
		||||
/** @file
 | 
			
		||||
  
 | 
			
		||||
  Template and Sample instance of PalCallLib.
 | 
			
		||||
  
 | 
			
		||||
  Copyright (c) 2006 - 2007, Intel Corporation
 | 
			
		||||
  All rights reserved. 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 <Base.h>
 | 
			
		||||
#include <Library/PalCallLib.h>
 | 
			
		||||
#include <Library/DebugLib.h>
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  Makes a PAL procedure call.
 | 
			
		||||
 | 
			
		||||
  This is a wrapper function to make a PAL procedure call.  Based on the Index value,
 | 
			
		||||
  this API will make static or stacked PAL call. Architected procedures may be designated
 | 
			
		||||
  as required or optional.  If a PAL procedure is specified as optional, a unique return
 | 
			
		||||
  code of 0xFFFFFFFFFFFFFFFF is returned in the Status field of the PAL_CALL_RETURN structure.
 | 
			
		||||
  This indicates that the procedure is not present in this PAL implementation.  It is the
 | 
			
		||||
  caller¡¯s responsibility to check for this return code after calling any optional PAL
 | 
			
		||||
  procedure. No parameter checking is performed on the 4 input parameters, but there are
 | 
			
		||||
  some common rules that the caller should follow when making a PAL call.  Any address
 | 
			
		||||
  passed to PAL as buffers for return parameters must be 8-byte aligned.  Unaligned addresses
 | 
			
		||||
  may cause undefined results.  For those parameters defined as reserved or some fields
 | 
			
		||||
  defined as reserved must be zero filled or the invalid argument return value may be
 | 
			
		||||
  returned or undefined result may occur during the execution of the procedure.
 | 
			
		||||
  This function is only available on IPF.
 | 
			
		||||
 | 
			
		||||
  @param Index - The PAL procedure Index number.
 | 
			
		||||
  @param Arg2  - The 2nd parameter for PAL procedure calls.
 | 
			
		||||
  @param Arg3  - The 3rd parameter for PAL procedure calls.
 | 
			
		||||
  @param Arg4  - The 4th parameter for PAL procedure calls.
 | 
			
		||||
 | 
			
		||||
  @return structure returned from the PAL Call procedure, including the status and return value.
 | 
			
		||||
 | 
			
		||||
**/
 | 
			
		||||
PAL_CALL_RETURN
 | 
			
		||||
EFIAPI
 | 
			
		||||
PalCall (
 | 
			
		||||
  IN UINT64                  Index,
 | 
			
		||||
  IN UINT64                  Arg2,
 | 
			
		||||
  IN UINT64                  Arg3,
 | 
			
		||||
  IN UINT64                  Arg4
 | 
			
		||||
  )
 | 
			
		||||
{
 | 
			
		||||
  PAL_CALL_RETURN Ret;
 | 
			
		||||
 | 
			
		||||
  Ret.Status = (UINT64) -1;
 | 
			
		||||
  ASSERT (!RETURN_ERROR (RETURN_UNSUPPORTED));
 | 
			
		||||
  return Ret;
 | 
			
		||||
}
 | 
			
		||||
@ -161,13 +161,13 @@ GetPerformanceCounterProperties (
 | 
			
		||||
    *EndValue = (UINT64)(-1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  PalRet = PalCall (13, 0, 0, 0);
 | 
			
		||||
  PalRet = PalCall (PAL_FREQ_BASE, 0, 0, 0);
 | 
			
		||||
  if (PalRet.Status != 0) {
 | 
			
		||||
    return 1000000;
 | 
			
		||||
  }
 | 
			
		||||
  BaseFrequence = PalRet.r9;
 | 
			
		||||
 | 
			
		||||
  PalRet = PalCall (14, 0, 0, 0);
 | 
			
		||||
  PalRet = PalCall (PAL_FREQ_RATIOS, 0, 0, 0);
 | 
			
		||||
  if (PalRet.Status != 0) {
 | 
			
		||||
    return 1000000;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -128,3 +128,4 @@
 | 
			
		||||
[Components.IPF]
 | 
			
		||||
  MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
 | 
			
		||||
  MdePkg/Library/PeiServicesTablePointerLibKr7/PeiServicesTablePointerLibKr7.inf
 | 
			
		||||
  MdePkg/Library/BasePalCallLibNull/BasePalCallLibNull.inf
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user