REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the OvmfPkg 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: Andrew Fish <afish@apple.com>
		
			
				
	
	
		
			91 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Xen Hypercall Library implementation for Intel architecture
 | 
						|
 | 
						|
Copyright (c) 2014, Linaro Ltd. All rights reserved.<BR>
 | 
						|
SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#include <PiDxe.h>
 | 
						|
#include <Library/HobLib.h>
 | 
						|
#include <Library/DebugLib.h>
 | 
						|
#include <Guid/XenInfo.h>
 | 
						|
 | 
						|
STATIC VOID  *HyperPage;
 | 
						|
 | 
						|
/**
 | 
						|
  Check if the Xen Hypercall library is able to make calls to the Xen
 | 
						|
  hypervisor.
 | 
						|
 | 
						|
  Client code should call further functions in this library only if, and after,
 | 
						|
  this function returns TRUE.
 | 
						|
 | 
						|
  @retval TRUE   Hypercalls are available.
 | 
						|
  @retval FALSE  Hypercalls are not available.
 | 
						|
**/
 | 
						|
BOOLEAN
 | 
						|
EFIAPI
 | 
						|
XenHypercallIsAvailable (
 | 
						|
  VOID
 | 
						|
  )
 | 
						|
{
 | 
						|
  return HyperPage != NULL;
 | 
						|
}
 | 
						|
 | 
						|
//
 | 
						|
// Interface exposed by the ASM implementation of the core hypercall
 | 
						|
//
 | 
						|
INTN
 | 
						|
EFIAPI
 | 
						|
__XenHypercall2 (
 | 
						|
  IN     VOID  *HypercallAddr,
 | 
						|
  IN OUT INTN  Arg1,
 | 
						|
  IN OUT INTN  Arg2
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Library constructor: retrieves the Hyperpage address
 | 
						|
  from the gEfiXenInfoGuid HOB
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
XenHypercallLibInit (
 | 
						|
  VOID
 | 
						|
  )
 | 
						|
{
 | 
						|
  EFI_HOB_GUID_TYPE  *GuidHob;
 | 
						|
  EFI_XEN_INFO       *XenInfo;
 | 
						|
 | 
						|
  GuidHob = GetFirstGuidHob (&gEfiXenInfoGuid);
 | 
						|
  if (GuidHob == NULL) {
 | 
						|
    return RETURN_NOT_FOUND;
 | 
						|
  }
 | 
						|
 | 
						|
  XenInfo   = (EFI_XEN_INFO *)GET_GUID_HOB_DATA (GuidHob);
 | 
						|
  HyperPage = XenInfo->HyperPages;
 | 
						|
  return RETURN_SUCCESS;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
  This function will put the two arguments in the right place (registers) and
 | 
						|
  invoke the hypercall identified by HypercallID.
 | 
						|
 | 
						|
  @param HypercallID    The symbolic ID of the hypercall to be invoked
 | 
						|
  @param Arg1           First argument.
 | 
						|
  @param Arg2           Second argument.
 | 
						|
 | 
						|
  @return   Return 0 if success otherwise it return an errno.
 | 
						|
**/
 | 
						|
INTN
 | 
						|
EFIAPI
 | 
						|
XenHypercall2 (
 | 
						|
  IN     UINTN  HypercallID,
 | 
						|
  IN OUT INTN   Arg1,
 | 
						|
  IN OUT INTN   Arg2
 | 
						|
  )
 | 
						|
{
 | 
						|
  ASSERT (HyperPage != NULL);
 | 
						|
 | 
						|
  return __XenHypercall2 ((UINT8 *)HyperPage + HypercallID * 32, Arg1, Arg2);
 | 
						|
}
 |