This patch adds IsNodeInList() to BaseLib, which verifies the given
Node is part of the doubly-linked List provided.
V2:
  - Rename "List" to "FirstEntry" and "Node" to "SecondEntry" to clarify that
    "FirstEntry" does not need to be the doubly-linked list's head node.
V3:
  - Remove ASSERTs from IsNodeInList() which are present in
    InternalBaseLibIsListValid().
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Marvin Haeuser <Marvin.Haeuser@outlook.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
		
	
		
			
				
	
	
		
			1838 lines
		
	
	
		
			45 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1838 lines
		
	
	
		
			45 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Declaration of internal functions in BaseLib.
 | 
						|
 | 
						|
  Copyright (c) 2006 - 2017, 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 __BASE_LIB_INTERNALS__
 | 
						|
#define __BASE_LIB_INTERNALS__
 | 
						|
 | 
						|
#include <Base.h>
 | 
						|
#include <Library/BaseLib.h>
 | 
						|
#include <Library/BaseMemoryLib.h>
 | 
						|
#include <Library/DebugLib.h>
 | 
						|
#include <Library/PcdLib.h>
 | 
						|
 | 
						|
//
 | 
						|
// Math functions
 | 
						|
//
 | 
						|
 | 
						|
/**
 | 
						|
  Shifts a 64-bit integer left between 0 and 63 bits. The low bits
 | 
						|
  are filled with zeros. The shifted value is returned.
 | 
						|
 | 
						|
  This function shifts the 64-bit value Operand to the left by Count bits. The
 | 
						|
  low Count bits are set to zero. The shifted value is returned.
 | 
						|
 | 
						|
  @param  Operand The 64-bit operand to shift left.
 | 
						|
  @param  Count   The number of bits to shift left.
 | 
						|
 | 
						|
  @return Operand << Count
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
InternalMathLShiftU64 (
 | 
						|
  IN      UINT64                    Operand,
 | 
						|
  IN      UINTN                     Count
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Shifts a 64-bit integer right between 0 and 63 bits. The high bits
 | 
						|
  are filled with zeros. The shifted value is returned.
 | 
						|
 | 
						|
  This function shifts the 64-bit value Operand to the right by Count bits. The
 | 
						|
  high Count bits are set to zero. The shifted value is returned.
 | 
						|
 | 
						|
  @param  Operand The 64-bit operand to shift right.
 | 
						|
  @param  Count   The number of bits to shift right.
 | 
						|
 | 
						|
  @return Operand >> Count
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
InternalMathRShiftU64 (
 | 
						|
  IN      UINT64                    Operand,
 | 
						|
  IN      UINTN                     Count
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Shifts a 64-bit integer right between 0 and 63 bits. The high bits
 | 
						|
  are filled with original integer's bit 63. The shifted value is returned.
 | 
						|
 | 
						|
  This function shifts the 64-bit value Operand to the right by Count bits. The
 | 
						|
  high Count bits are set to bit 63 of Operand.  The shifted value is returned.
 | 
						|
 | 
						|
  @param  Operand The 64-bit operand to shift right.
 | 
						|
  @param  Count   The number of bits to shift right.
 | 
						|
 | 
						|
  @return Operand arithmetically shifted right by Count
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
InternalMathARShiftU64 (
 | 
						|
  IN      UINT64                    Operand,
 | 
						|
  IN      UINTN                     Count
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Rotates a 64-bit integer left between 0 and 63 bits, filling
 | 
						|
  the low bits with the high bits that were rotated.
 | 
						|
 | 
						|
  This function rotates the 64-bit value Operand to the left by Count bits. The
 | 
						|
  low Count bits are filled with the high Count bits of Operand. The rotated
 | 
						|
  value is returned.
 | 
						|
 | 
						|
  @param  Operand The 64-bit operand to rotate left.
 | 
						|
  @param  Count   The number of bits to rotate left.
 | 
						|
 | 
						|
  @return Operand <<< Count
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
InternalMathLRotU64 (
 | 
						|
  IN      UINT64                    Operand,
 | 
						|
  IN      UINTN                     Count
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Rotates a 64-bit integer right between 0 and 63 bits, filling
 | 
						|
  the high bits with the high low bits that were rotated.
 | 
						|
 | 
						|
  This function rotates the 64-bit value Operand to the right by Count bits.
 | 
						|
  The high Count bits are filled with the low Count bits of Operand. The rotated
 | 
						|
  value is returned.
 | 
						|
 | 
						|
  @param  Operand The 64-bit operand to rotate right.
 | 
						|
  @param  Count   The number of bits to rotate right.
 | 
						|
 | 
						|
  @return Operand >>> Count
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
InternalMathRRotU64 (
 | 
						|
  IN      UINT64                    Operand,
 | 
						|
  IN      UINTN                     Count
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Switches the endianess of a 64-bit integer.
 | 
						|
 | 
						|
  This function swaps the bytes in a 64-bit unsigned value to switch the value
 | 
						|
  from little endian to big endian or vice versa. The byte swapped value is
 | 
						|
  returned.
 | 
						|
 | 
						|
  @param  Operand A 64-bit unsigned value.
 | 
						|
 | 
						|
  @return The byte swapped Operand.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
InternalMathSwapBytes64 (
 | 
						|
  IN      UINT64                    Operand
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Multiplies a 64-bit unsigned integer by a 32-bit unsigned integer
 | 
						|
  and generates a 64-bit unsigned result.
 | 
						|
 | 
						|
  This function multiplies the 64-bit unsigned value Multiplicand by the 32-bit
 | 
						|
  unsigned value Multiplier and generates a 64-bit unsigned result. This 64-
 | 
						|
  bit unsigned result is returned.
 | 
						|
 | 
						|
  @param  Multiplicand  A 64-bit unsigned value.
 | 
						|
  @param  Multiplier    A 32-bit unsigned value.
 | 
						|
 | 
						|
  @return Multiplicand * Multiplier
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
InternalMathMultU64x32 (
 | 
						|
  IN      UINT64                    Multiplicand,
 | 
						|
  IN      UINT32                    Multiplier
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Multiplies a 64-bit unsigned integer by a 64-bit unsigned integer
 | 
						|
  and generates a 64-bit unsigned result.
 | 
						|
 | 
						|
  This function multiples the 64-bit unsigned value Multiplicand by the 64-bit
 | 
						|
  unsigned value Multiplier and generates a 64-bit unsigned result. This 64-
 | 
						|
  bit unsigned result is returned.
 | 
						|
 | 
						|
  @param  Multiplicand  A 64-bit unsigned value.
 | 
						|
  @param  Multiplier    A 64-bit unsigned value.
 | 
						|
 | 
						|
  @return Multiplicand * Multiplier
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
InternalMathMultU64x64 (
 | 
						|
  IN      UINT64                    Multiplicand,
 | 
						|
  IN      UINT64                    Multiplier
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Divides a 64-bit unsigned integer by a 32-bit unsigned integer and
 | 
						|
  generates a 64-bit unsigned result.
 | 
						|
 | 
						|
  This function divides the 64-bit unsigned value Dividend by the 32-bit
 | 
						|
  unsigned value Divisor and generates a 64-bit unsigned quotient. This
 | 
						|
  function returns the 64-bit unsigned quotient.
 | 
						|
 | 
						|
  @param  Dividend  A 64-bit unsigned value.
 | 
						|
  @param  Divisor   A 32-bit unsigned value.
 | 
						|
 | 
						|
  @return Dividend / Divisor
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
InternalMathDivU64x32 (
 | 
						|
  IN      UINT64                    Dividend,
 | 
						|
  IN      UINT32                    Divisor
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Divides a 64-bit unsigned integer by a 32-bit unsigned integer and
 | 
						|
  generates a 32-bit unsigned remainder.
 | 
						|
 | 
						|
  This function divides the 64-bit unsigned value Dividend by the 32-bit
 | 
						|
  unsigned value Divisor and generates a 32-bit remainder. This function
 | 
						|
  returns the 32-bit unsigned remainder.
 | 
						|
 | 
						|
  @param  Dividend  A 64-bit unsigned value.
 | 
						|
  @param  Divisor   A 32-bit unsigned value.
 | 
						|
 | 
						|
  @return Dividend % Divisor
 | 
						|
 | 
						|
**/
 | 
						|
UINT32
 | 
						|
EFIAPI
 | 
						|
InternalMathModU64x32 (
 | 
						|
  IN      UINT64                    Dividend,
 | 
						|
  IN      UINT32                    Divisor
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Divides a 64-bit unsigned integer by a 32-bit unsigned integer and
 | 
						|
  generates a 64-bit unsigned result and an optional 32-bit unsigned remainder.
 | 
						|
 | 
						|
  This function divides the 64-bit unsigned value Dividend by the 32-bit
 | 
						|
  unsigned value Divisor and generates a 64-bit unsigned quotient. If Remainder
 | 
						|
  is not NULL, then the 32-bit unsigned remainder is returned in Remainder.
 | 
						|
  This function returns the 64-bit unsigned quotient.
 | 
						|
 | 
						|
  @param  Dividend  A 64-bit unsigned value.
 | 
						|
  @param  Divisor   A 32-bit unsigned value.
 | 
						|
  @param  Remainder A pointer to a 32-bit unsigned value. This parameter is
 | 
						|
                    optional and may be NULL.
 | 
						|
 | 
						|
  @return Dividend / Divisor
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
InternalMathDivRemU64x32 (
 | 
						|
  IN      UINT64                    Dividend,
 | 
						|
  IN      UINT32                    Divisor,
 | 
						|
  OUT     UINT32                    *Remainder OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Divides a 64-bit unsigned integer by a 64-bit unsigned integer and
 | 
						|
  generates a 64-bit unsigned result and an optional 64-bit unsigned remainder.
 | 
						|
 | 
						|
  This function divides the 64-bit unsigned value Dividend by the 64-bit
 | 
						|
  unsigned value Divisor and generates a 64-bit unsigned quotient. If Remainder
 | 
						|
  is not NULL, then the 64-bit unsigned remainder is returned in Remainder.
 | 
						|
  This function returns the 64-bit unsigned quotient.
 | 
						|
 | 
						|
  @param  Dividend  A 64-bit unsigned value.
 | 
						|
  @param  Divisor   A 64-bit unsigned value.
 | 
						|
  @param  Remainder A pointer to a 64-bit unsigned value. This parameter is
 | 
						|
                    optional and may be NULL.
 | 
						|
 | 
						|
  @return Dividend / Divisor
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
InternalMathDivRemU64x64 (
 | 
						|
  IN      UINT64                    Dividend,
 | 
						|
  IN      UINT64                    Divisor,
 | 
						|
  OUT     UINT64                    *Remainder OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Divides a 64-bit signed integer by a 64-bit signed integer and
 | 
						|
  generates a 64-bit signed result and an optional 64-bit signed remainder.
 | 
						|
 | 
						|
  This function divides the 64-bit signed value Dividend by the 64-bit
 | 
						|
  signed value Divisor and generates a 64-bit signed quotient. If Remainder
 | 
						|
  is not NULL, then the 64-bit signed remainder is returned in Remainder.
 | 
						|
  This function returns the 64-bit signed quotient.
 | 
						|
 | 
						|
  @param  Dividend  A 64-bit signed value.
 | 
						|
  @param  Divisor   A 64-bit signed value.
 | 
						|
  @param  Remainder A pointer to a 64-bit signed value. This parameter is
 | 
						|
                    optional and may be NULL.
 | 
						|
 | 
						|
  @return Dividend / Divisor
 | 
						|
 | 
						|
**/
 | 
						|
INT64
 | 
						|
EFIAPI
 | 
						|
InternalMathDivRemS64x64 (
 | 
						|
  IN      INT64                     Dividend,
 | 
						|
  IN      INT64                     Divisor,
 | 
						|
  OUT     INT64                     *Remainder  OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Transfers control to a function starting with a new stack.
 | 
						|
 | 
						|
  Transfers control to the function specified by EntryPoint using the
 | 
						|
  new stack specified by NewStack and passing in the parameters specified
 | 
						|
  by Context1 and Context2.  Context1 and Context2 are optional and may
 | 
						|
  be NULL.  The function EntryPoint must never return.
 | 
						|
  Marker will be ignored on IA-32, x64, and EBC.
 | 
						|
  IPF CPUs expect one additional parameter of type VOID * that specifies
 | 
						|
  the new backing store pointer.
 | 
						|
 | 
						|
  If EntryPoint is NULL, then ASSERT().
 | 
						|
  If NewStack is NULL, then ASSERT().
 | 
						|
 | 
						|
  @param  EntryPoint  A pointer to function to call with the new stack.
 | 
						|
  @param  Context1    A pointer to the context to pass into the EntryPoint
 | 
						|
                      function.
 | 
						|
  @param  Context2    A pointer to the context to pass into the EntryPoint
 | 
						|
                      function.
 | 
						|
  @param  NewStack    A pointer to the new stack to use for the EntryPoint
 | 
						|
                      function.
 | 
						|
  @param  Marker      VA_LIST marker for the variable argument list.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
InternalSwitchStack (
 | 
						|
  IN      SWITCH_STACK_ENTRY_POINT  EntryPoint,
 | 
						|
  IN      VOID                      *Context1,   OPTIONAL
 | 
						|
  IN      VOID                      *Context2,   OPTIONAL
 | 
						|
  IN      VOID                      *NewStack,
 | 
						|
  IN      VA_LIST                   Marker
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Worker function that returns a bit field from Operand.
 | 
						|
 | 
						|
  Returns the bitfield specified by the StartBit and the EndBit from Operand.
 | 
						|
 | 
						|
  @param  Operand   Operand on which to perform the bitfield operation.
 | 
						|
  @param  StartBit  The ordinal of the least significant bit in the bit field.
 | 
						|
  @param  EndBit    The ordinal of the most significant bit in the bit field.
 | 
						|
 | 
						|
  @return The bit field read.
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EFIAPI
 | 
						|
BitFieldReadUint (
 | 
						|
  IN      UINTN                     Operand,
 | 
						|
  IN      UINTN                     StartBit,
 | 
						|
  IN      UINTN                     EndBit
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Worker function that reads a bit field from Operand, performs a bitwise OR,
 | 
						|
  and returns the result.
 | 
						|
 | 
						|
  Performs a bitwise OR between the bit field specified by StartBit and EndBit
 | 
						|
  in Operand and the value specified by AndData. All other bits in Operand are
 | 
						|
  preserved. The new value is returned.
 | 
						|
 | 
						|
  @param  Operand   Operand on which to perform the bitfield operation.
 | 
						|
  @param  StartBit  The ordinal of the least significant bit in the bit field.
 | 
						|
  @param  EndBit    The ordinal of the most significant bit in the bit field.
 | 
						|
  @param  OrData    The value to OR with the read value from the value
 | 
						|
 | 
						|
  @return The new value.
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EFIAPI
 | 
						|
BitFieldOrUint (
 | 
						|
  IN      UINTN                     Operand,
 | 
						|
  IN      UINTN                     StartBit,
 | 
						|
  IN      UINTN                     EndBit,
 | 
						|
  IN      UINTN                     OrData
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Worker function that reads a bit field from Operand, performs a bitwise AND,
 | 
						|
  and returns the result.
 | 
						|
 | 
						|
  Performs a bitwise AND between the bit field specified by StartBit and EndBit
 | 
						|
  in Operand and the value specified by AndData. All other bits in Operand are
 | 
						|
  preserved. The new value is returned.
 | 
						|
 | 
						|
  @param  Operand   Operand on which to perform the bitfield operation.
 | 
						|
  @param  StartBit  The ordinal of the least significant bit in the bit field.
 | 
						|
  @param  EndBit    The ordinal of the most significant bit in the bit field.
 | 
						|
  @param  AndData    The value to And with the read value from the value
 | 
						|
 | 
						|
  @return The new value.
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EFIAPI
 | 
						|
BitFieldAndUint (
 | 
						|
  IN      UINTN                     Operand,
 | 
						|
  IN      UINTN                     StartBit,
 | 
						|
  IN      UINTN                     EndBit,
 | 
						|
  IN      UINTN                     AndData
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Worker function that checks ASSERT condition for JumpBuffer
 | 
						|
 | 
						|
  Checks ASSERT condition for JumpBuffer.
 | 
						|
 | 
						|
  If JumpBuffer is NULL, then ASSERT().
 | 
						|
  For IPF CPUs, if JumpBuffer is not aligned on a 16-byte boundary, then ASSERT().
 | 
						|
 | 
						|
  @param  JumpBuffer    A pointer to CPU context buffer.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
InternalAssertJumpBuffer (
 | 
						|
  IN      BASE_LIBRARY_JUMP_BUFFER  *JumpBuffer
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Restores the CPU context that was saved with SetJump().
 | 
						|
 | 
						|
  Restores the CPU context from the buffer specified by JumpBuffer.
 | 
						|
  This function never returns to the caller.
 | 
						|
  Instead is resumes execution based on the state of JumpBuffer.
 | 
						|
 | 
						|
  @param  JumpBuffer    A pointer to CPU context buffer.
 | 
						|
  @param  Value         The value to return when the SetJump() context is restored.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
InternalLongJump (
 | 
						|
  IN      BASE_LIBRARY_JUMP_BUFFER  *JumpBuffer,
 | 
						|
  IN      UINTN                     Value
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Check if a Unicode character is a decimal character.
 | 
						|
 | 
						|
  This internal function checks if a Unicode character is a
 | 
						|
  decimal character. The valid decimal character is from
 | 
						|
  L'0' to L'9'.
 | 
						|
 | 
						|
  @param  Char  The character to check against.
 | 
						|
 | 
						|
  @retval TRUE  If the Char is a decmial character.
 | 
						|
  @retval FALSE If the Char is not a decmial character.
 | 
						|
 | 
						|
**/
 | 
						|
BOOLEAN
 | 
						|
EFIAPI
 | 
						|
InternalIsDecimalDigitCharacter (
 | 
						|
  IN      CHAR16                    Char
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Convert a Unicode character to upper case only if
 | 
						|
  it maps to a valid small-case ASCII character.
 | 
						|
 | 
						|
  This internal function only deal with Unicode character
 | 
						|
  which maps to a valid small-case ASCII character, i.e.
 | 
						|
  L'a' to L'z'. For other Unicode character, the input character
 | 
						|
  is returned directly.
 | 
						|
 | 
						|
  @param  Char  The character to convert.
 | 
						|
 | 
						|
  @retval LowerCharacter   If the Char is with range L'a' to L'z'.
 | 
						|
  @retval Unchanged        Otherwise.
 | 
						|
 | 
						|
**/
 | 
						|
CHAR16
 | 
						|
EFIAPI
 | 
						|
InternalCharToUpper (
 | 
						|
  IN      CHAR16                    Char
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Convert a Unicode character to numerical value.
 | 
						|
 | 
						|
  This internal function only deal with Unicode character
 | 
						|
  which maps to a valid hexadecimal ASII character, i.e.
 | 
						|
  L'0' to L'9', L'a' to L'f' or L'A' to L'F'. For other
 | 
						|
  Unicode character, the value returned does not make sense.
 | 
						|
 | 
						|
  @param  Char  The character to convert.
 | 
						|
 | 
						|
  @return The numerical value converted.
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EFIAPI
 | 
						|
InternalHexCharToUintn (
 | 
						|
  IN      CHAR16                    Char
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Check if a Unicode character is a hexadecimal character.
 | 
						|
 | 
						|
  This internal function checks if a Unicode character is a
 | 
						|
  decimal character.  The valid hexadecimal character is
 | 
						|
  L'0' to L'9', L'a' to L'f', or L'A' to L'F'.
 | 
						|
 | 
						|
 | 
						|
  @param  Char  The character to check against.
 | 
						|
 | 
						|
  @retval TRUE  If the Char is a hexadecmial character.
 | 
						|
  @retval FALSE If the Char is not a hexadecmial character.
 | 
						|
 | 
						|
**/
 | 
						|
BOOLEAN
 | 
						|
EFIAPI
 | 
						|
InternalIsHexaDecimalDigitCharacter (
 | 
						|
  IN      CHAR16                    Char
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Check if a ASCII character is a decimal character.
 | 
						|
 | 
						|
  This internal function checks if a Unicode character is a
 | 
						|
  decimal character. The valid decimal character is from
 | 
						|
  '0' to '9'.
 | 
						|
 | 
						|
  @param  Char  The character to check against.
 | 
						|
 | 
						|
  @retval TRUE  If the Char is a decmial character.
 | 
						|
  @retval FALSE If the Char is not a decmial character.
 | 
						|
 | 
						|
**/
 | 
						|
BOOLEAN
 | 
						|
EFIAPI
 | 
						|
InternalAsciiIsDecimalDigitCharacter (
 | 
						|
  IN      CHAR8                     Char
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Converts a lowercase Ascii character to upper one.
 | 
						|
 | 
						|
  If Chr is lowercase Ascii character, then converts it to upper one.
 | 
						|
 | 
						|
  If Value >= 0xA0, then ASSERT().
 | 
						|
  If (Value & 0x0F) >= 0x0A, then ASSERT().
 | 
						|
 | 
						|
  @param  Chr   one Ascii character
 | 
						|
 | 
						|
  @return The uppercase value of Ascii character
 | 
						|
 | 
						|
**/
 | 
						|
CHAR8
 | 
						|
EFIAPI
 | 
						|
InternalBaseLibAsciiToUpper (
 | 
						|
  IN      CHAR8                     Chr
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Check if a ASCII character is a hexadecimal character.
 | 
						|
 | 
						|
  This internal function checks if a ASCII character is a
 | 
						|
  decimal character.  The valid hexadecimal character is
 | 
						|
  L'0' to L'9', L'a' to L'f', or L'A' to L'F'.
 | 
						|
 | 
						|
 | 
						|
  @param  Char  The character to check against.
 | 
						|
 | 
						|
  @retval TRUE  If the Char is a hexadecmial character.
 | 
						|
  @retval FALSE If the Char is not a hexadecmial character.
 | 
						|
 | 
						|
**/
 | 
						|
BOOLEAN
 | 
						|
EFIAPI
 | 
						|
InternalAsciiIsHexaDecimalDigitCharacter (
 | 
						|
  IN      CHAR8                    Char
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Convert a ASCII character to numerical value.
 | 
						|
 | 
						|
  This internal function only deal with Unicode character
 | 
						|
  which maps to a valid hexadecimal ASII character, i.e.
 | 
						|
  '0' to '9', 'a' to 'f' or 'A' to 'F'. For other
 | 
						|
  ASCII character, the value returned does not make sense.
 | 
						|
 | 
						|
  @param  Char  The character to convert.
 | 
						|
 | 
						|
  @return The numerical value converted.
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EFIAPI
 | 
						|
InternalAsciiHexCharToUintn (
 | 
						|
  IN      CHAR8                    Char
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
//
 | 
						|
// Ia32 and x64 specific functions
 | 
						|
//
 | 
						|
#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
 | 
						|
 | 
						|
/**
 | 
						|
  Reads the current Global Descriptor Table Register(GDTR) descriptor.
 | 
						|
 | 
						|
  Reads and returns the current GDTR descriptor and returns it in Gdtr. This
 | 
						|
  function is only available on IA-32 and x64.
 | 
						|
 | 
						|
  @param  Gdtr  The pointer to a GDTR descriptor.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
InternalX86ReadGdtr (
 | 
						|
  OUT     IA32_DESCRIPTOR           *Gdtr
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Writes the current Global Descriptor Table Register (GDTR) descriptor.
 | 
						|
 | 
						|
  Writes and the current GDTR descriptor specified by Gdtr. This function is
 | 
						|
  only available on IA-32 and x64.
 | 
						|
 | 
						|
  @param  Gdtr  The pointer to a GDTR descriptor.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
InternalX86WriteGdtr (
 | 
						|
  IN      CONST IA32_DESCRIPTOR     *Gdtr
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Reads the current Interrupt Descriptor Table Register(GDTR) descriptor.
 | 
						|
 | 
						|
  Reads and returns the current IDTR descriptor and returns it in Idtr. This
 | 
						|
  function is only available on IA-32 and x64.
 | 
						|
 | 
						|
  @param  Idtr  The pointer to an IDTR descriptor.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
InternalX86ReadIdtr (
 | 
						|
  OUT     IA32_DESCRIPTOR           *Idtr
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Writes the current Interrupt Descriptor Table Register(GDTR) descriptor.
 | 
						|
 | 
						|
  Writes the current IDTR descriptor and returns it in Idtr. This function is
 | 
						|
  only available on IA-32 and x64.
 | 
						|
 | 
						|
  @param  Idtr  The pointer to an IDTR descriptor.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
InternalX86WriteIdtr (
 | 
						|
  IN      CONST IA32_DESCRIPTOR     *Idtr
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Save the current floating point/SSE/SSE2 context to a buffer.
 | 
						|
 | 
						|
  Saves the current floating point/SSE/SSE2 state to the buffer specified by
 | 
						|
  Buffer. Buffer must be aligned on a 16-byte boundary. This function is only
 | 
						|
  available on IA-32 and x64.
 | 
						|
 | 
						|
  @param  Buffer  The pointer to a buffer to save the floating point/SSE/SSE2 context.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
InternalX86FxSave (
 | 
						|
  OUT     IA32_FX_BUFFER            *Buffer
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Restores the current floating point/SSE/SSE2 context from a buffer.
 | 
						|
 | 
						|
  Restores the current floating point/SSE/SSE2 state from the buffer specified
 | 
						|
  by Buffer. Buffer must be aligned on a 16-byte boundary. This function is
 | 
						|
  only available on IA-32 and x64.
 | 
						|
 | 
						|
  @param  Buffer  The pointer to a buffer to save the floating point/SSE/SSE2 context.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
InternalX86FxRestore (
 | 
						|
  IN      CONST IA32_FX_BUFFER      *Buffer
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Enables the 32-bit paging mode on the CPU.
 | 
						|
 | 
						|
  Enables the 32-bit paging mode on the CPU. CR0, CR3, CR4, and the page tables
 | 
						|
  must be properly initialized prior to calling this service. This function
 | 
						|
  assumes the current execution mode is 32-bit protected mode. This function is
 | 
						|
  only available on IA-32. After the 32-bit paging mode is enabled, control is
 | 
						|
  transferred to the function specified by EntryPoint using the new stack
 | 
						|
  specified by NewStack and passing in the parameters specified by Context1 and
 | 
						|
  Context2. Context1 and Context2 are optional and may be NULL. The function
 | 
						|
  EntryPoint must never return.
 | 
						|
 | 
						|
  There are a number of constraints that must be followed before calling this
 | 
						|
  function:
 | 
						|
  1)  Interrupts must be disabled.
 | 
						|
  2)  The caller must be in 32-bit protected mode with flat descriptors. This
 | 
						|
      means all descriptors must have a base of 0 and a limit of 4GB.
 | 
						|
  3)  CR0 and CR4 must be compatible with 32-bit protected mode with flat
 | 
						|
      descriptors.
 | 
						|
  4)  CR3 must point to valid page tables that will be used once the transition
 | 
						|
      is complete, and those page tables must guarantee that the pages for this
 | 
						|
      function and the stack are identity mapped.
 | 
						|
 | 
						|
  @param  EntryPoint  A pointer to function to call with the new stack after
 | 
						|
                      paging is enabled.
 | 
						|
  @param  Context1    A pointer to the context to pass into the EntryPoint
 | 
						|
                      function as the first parameter after paging is enabled.
 | 
						|
  @param  Context2    A pointer to the context to pass into the EntryPoint
 | 
						|
                      function as the second parameter after paging is enabled.
 | 
						|
  @param  NewStack    A pointer to the new stack to use for the EntryPoint
 | 
						|
                      function after paging is enabled.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
InternalX86EnablePaging32 (
 | 
						|
  IN      SWITCH_STACK_ENTRY_POINT  EntryPoint,
 | 
						|
  IN      VOID                      *Context1,  OPTIONAL
 | 
						|
  IN      VOID                      *Context2,  OPTIONAL
 | 
						|
  IN      VOID                      *NewStack
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Disables the 32-bit paging mode on the CPU.
 | 
						|
 | 
						|
  Disables the 32-bit paging mode on the CPU and returns to 32-bit protected
 | 
						|
  mode. This function assumes the current execution mode is 32-paged protected
 | 
						|
  mode. This function is only available on IA-32. After the 32-bit paging mode
 | 
						|
  is disabled, control is transferred to the function specified by EntryPoint
 | 
						|
  using the new stack specified by NewStack and passing in the parameters
 | 
						|
  specified by Context1 and Context2. Context1 and Context2 are optional and
 | 
						|
  may be NULL. The function EntryPoint must never return.
 | 
						|
 | 
						|
  There are a number of constraints that must be followed before calling this
 | 
						|
  function:
 | 
						|
  1)  Interrupts must be disabled.
 | 
						|
  2)  The caller must be in 32-bit paged mode.
 | 
						|
  3)  CR0, CR3, and CR4 must be compatible with 32-bit paged mode.
 | 
						|
  4)  CR3 must point to valid page tables that guarantee that the pages for
 | 
						|
      this function and the stack are identity mapped.
 | 
						|
 | 
						|
  @param  EntryPoint  A pointer to function to call with the new stack after
 | 
						|
                      paging is disabled.
 | 
						|
  @param  Context1    A pointer to the context to pass into the EntryPoint
 | 
						|
                      function as the first parameter after paging is disabled.
 | 
						|
  @param  Context2    A pointer to the context to pass into the EntryPoint
 | 
						|
                      function as the second parameter after paging is
 | 
						|
                      disabled.
 | 
						|
  @param  NewStack    A pointer to the new stack to use for the EntryPoint
 | 
						|
                      function after paging is disabled.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
InternalX86DisablePaging32 (
 | 
						|
  IN      SWITCH_STACK_ENTRY_POINT  EntryPoint,
 | 
						|
  IN      VOID                      *Context1,  OPTIONAL
 | 
						|
  IN      VOID                      *Context2,  OPTIONAL
 | 
						|
  IN      VOID                      *NewStack
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Enables the 64-bit paging mode on the CPU.
 | 
						|
 | 
						|
  Enables the 64-bit paging mode on the CPU. CR0, CR3, CR4, and the page tables
 | 
						|
  must be properly initialized prior to calling this service. This function
 | 
						|
  assumes the current execution mode is 32-bit protected mode with flat
 | 
						|
  descriptors. This function is only available on IA-32. After the 64-bit
 | 
						|
  paging mode is enabled, control is transferred to the function specified by
 | 
						|
  EntryPoint using the new stack specified by NewStack and passing in the
 | 
						|
  parameters specified by Context1 and Context2. Context1 and Context2 are
 | 
						|
  optional and may be 0. The function EntryPoint must never return.
 | 
						|
 | 
						|
  @param  Cs          The 16-bit selector to load in the CS before EntryPoint
 | 
						|
                      is called. The descriptor in the GDT that this selector
 | 
						|
                      references must be setup for long mode.
 | 
						|
  @param  EntryPoint  The 64-bit virtual address of the function to call with
 | 
						|
                      the new stack after paging is enabled.
 | 
						|
  @param  Context1    The 64-bit virtual address of the context to pass into
 | 
						|
                      the EntryPoint function as the first parameter after
 | 
						|
                      paging is enabled.
 | 
						|
  @param  Context2    The 64-bit virtual address of the context to pass into
 | 
						|
                      the EntryPoint function as the second parameter after
 | 
						|
                      paging is enabled.
 | 
						|
  @param  NewStack    The 64-bit virtual address of the new stack to use for
 | 
						|
                      the EntryPoint function after paging is enabled.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
InternalX86EnablePaging64 (
 | 
						|
  IN      UINT16                    Cs,
 | 
						|
  IN      UINT64                    EntryPoint,
 | 
						|
  IN      UINT64                    Context1,  OPTIONAL
 | 
						|
  IN      UINT64                    Context2,  OPTIONAL
 | 
						|
  IN      UINT64                    NewStack
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Disables the 64-bit paging mode on the CPU.
 | 
						|
 | 
						|
  Disables the 64-bit paging mode on the CPU and returns to 32-bit protected
 | 
						|
  mode. This function assumes the current execution mode is 64-paging mode.
 | 
						|
  This function is only available on x64. After the 64-bit paging mode is
 | 
						|
  disabled, control is transferred to the function specified by EntryPoint
 | 
						|
  using the new stack specified by NewStack and passing in the parameters
 | 
						|
  specified by Context1 and Context2. Context1 and Context2 are optional and
 | 
						|
  may be 0. The function EntryPoint must never return.
 | 
						|
 | 
						|
  @param  Cs          The 16-bit selector to load in the CS before EntryPoint
 | 
						|
                      is called. The descriptor in the GDT that this selector
 | 
						|
                      references must be setup for 32-bit protected mode.
 | 
						|
  @param  EntryPoint  The 64-bit virtual address of the function to call with
 | 
						|
                      the new stack after paging is disabled.
 | 
						|
  @param  Context1    The 64-bit virtual address of the context to pass into
 | 
						|
                      the EntryPoint function as the first parameter after
 | 
						|
                      paging is disabled.
 | 
						|
  @param  Context2    The 64-bit virtual address of the context to pass into
 | 
						|
                      the EntryPoint function as the second parameter after
 | 
						|
                      paging is disabled.
 | 
						|
  @param  NewStack    The 64-bit virtual address of the new stack to use for
 | 
						|
                      the EntryPoint function after paging is disabled.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
InternalX86DisablePaging64 (
 | 
						|
  IN      UINT16                    Cs,
 | 
						|
  IN      UINT32                    EntryPoint,
 | 
						|
  IN      UINT32                    Context1,  OPTIONAL
 | 
						|
  IN      UINT32                    Context2,  OPTIONAL
 | 
						|
  IN      UINT32                    NewStack
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Generates a 16-bit random number through RDRAND instruction.
 | 
						|
 | 
						|
  @param[out]  Rand     Buffer pointer to store the random result.
 | 
						|
 | 
						|
  @retval TRUE          RDRAND call was successful.
 | 
						|
  @retval FALSE         Failed attempts to call RDRAND.
 | 
						|
 | 
						|
 **/
 | 
						|
BOOLEAN
 | 
						|
EFIAPI
 | 
						|
InternalX86RdRand16 (
 | 
						|
  OUT     UINT16                    *Rand
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Generates a 32-bit random number through RDRAND instruction.
 | 
						|
 | 
						|
  @param[out]  Rand     Buffer pointer to store the random result.
 | 
						|
 | 
						|
  @retval TRUE          RDRAND call was successful.
 | 
						|
  @retval FALSE         Failed attempts to call RDRAND.
 | 
						|
 | 
						|
**/
 | 
						|
BOOLEAN
 | 
						|
EFIAPI
 | 
						|
InternalX86RdRand32 (
 | 
						|
  OUT     UINT32                    *Rand
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Generates a 64-bit random number through RDRAND instruction.
 | 
						|
 | 
						|
 | 
						|
  @param[out]  Rand     Buffer pointer to store the random result.
 | 
						|
 | 
						|
  @retval TRUE          RDRAND call was successful.
 | 
						|
  @retval FALSE         Failed attempts to call RDRAND.
 | 
						|
 | 
						|
**/
 | 
						|
BOOLEAN
 | 
						|
EFIAPI
 | 
						|
InternalX86RdRand64  (
 | 
						|
  OUT     UINT64                    *Rand
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
#elif defined (MDE_CPU_IPF)
 | 
						|
//
 | 
						|
//
 | 
						|
// IPF specific functions
 | 
						|
//
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register DCR.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_DCR.
 | 
						|
 | 
						|
  @return The 64-bit control register DCR.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterDcr (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register ITM.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_ITM.
 | 
						|
 | 
						|
  @return The 64-bit control register ITM.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterItm (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register IVA.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_IVA.
 | 
						|
 | 
						|
  @return The 64-bit control register IVA.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterIva (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register PTA.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_PTA.
 | 
						|
 | 
						|
  @return The 64-bit control register PTA.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterPta (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register IPSR.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_IPSR.
 | 
						|
 | 
						|
  @return The 64-bit control register IPSR.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterIpsr (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register ISR.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_ISR.
 | 
						|
 | 
						|
  @return The 64-bit control register ISR.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterIsr (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register IIP.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_IIP.
 | 
						|
 | 
						|
  @return The 64-bit control register IIP.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterIip (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register IFA.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_IFA.
 | 
						|
 | 
						|
  @return The 64-bit control register IFA.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterIfa (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register ITIR.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_ITIR.
 | 
						|
 | 
						|
  @return The 64-bit control register ITIR.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterItir (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register IIPA.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_IIPA.
 | 
						|
 | 
						|
  @return The 64-bit control register IIPA.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterIipa (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register IFS.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_IFS.
 | 
						|
 | 
						|
  @return The 64-bit control register IFS.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterIfs (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register IIM.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_IIM.
 | 
						|
 | 
						|
  @return The 64-bit control register IIM.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterIim (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register IHA.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_IHA.
 | 
						|
 | 
						|
  @return The 64-bit control register IHA.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterIha (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register LID.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_LID.
 | 
						|
 | 
						|
  @return The 64-bit control register LID.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterLid (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register IVR.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_IVR.
 | 
						|
 | 
						|
  @return The 64-bit control register IVR.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterIvr (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register TPR.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_TPR.
 | 
						|
 | 
						|
  @return The 64-bit control register TPR.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterTpr (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register EOI.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_EOI.
 | 
						|
 | 
						|
  @return The 64-bit control register EOI.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterEoi (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register IRR0.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_IRR0.
 | 
						|
 | 
						|
  @return The 64-bit control register IRR0.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterIrr0 (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register IRR1.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_IRR1.
 | 
						|
 | 
						|
  @return The 64-bit control register IRR1.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterIrr1 (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register IRR2.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_IRR2.
 | 
						|
 | 
						|
  @return The 64-bit control register IRR2.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterIrr2 (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register IRR3.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_IRR3.
 | 
						|
 | 
						|
  @return The 64-bit control register IRR3.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterIrr3 (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register ITV.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_ITV.
 | 
						|
 | 
						|
  @return The 64-bit control register ITV.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterItv (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register PMV.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_PMV.
 | 
						|
 | 
						|
  @return The 64-bit control register PMV.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterPmv (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register CMCV.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_CMCV.
 | 
						|
 | 
						|
  @return The 64-bit control register CMCV.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterCmcv (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register LRR0.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_LRR0.
 | 
						|
 | 
						|
  @return The 64-bit control register LRR0.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterLrr0 (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads control register LRR1.
 | 
						|
 | 
						|
  This is a worker function for AsmReadControlRegister()
 | 
						|
  when its parameter Index is IPF_CONTROL_REGISTER_LRR1.
 | 
						|
 | 
						|
  @return The 64-bit control register LRR1.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadControlRegisterLrr1 (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register K0.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_K0.
 | 
						|
 | 
						|
  @return The 64-bit application register K0.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterK0 (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register K1.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_K1.
 | 
						|
 | 
						|
  @return The 64-bit application register K1.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterK1 (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register K2.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_K2.
 | 
						|
 | 
						|
  @return The 64-bit application register K2.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterK2 (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register K3.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_K3.
 | 
						|
 | 
						|
  @return The 64-bit application register K3.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterK3 (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register K4.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_K4.
 | 
						|
 | 
						|
  @return The 64-bit application register K4.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterK4 (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register K5.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_K5.
 | 
						|
 | 
						|
  @return The 64-bit application register K5.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterK5 (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register K6.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_K6.
 | 
						|
 | 
						|
  @return The 64-bit application register K6.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterK6 (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register K7.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_K7.
 | 
						|
 | 
						|
  @return The 64-bit application register K7.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterK7 (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register RSC.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_RSC.
 | 
						|
 | 
						|
  @return The 64-bit application register RSC.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterRsc (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register BSP.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_BSP.
 | 
						|
 | 
						|
  @return The 64-bit application register BSP.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterBsp (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register BSPSTORE.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_BSPSTORE.
 | 
						|
 | 
						|
  @return The 64-bit application register BSPSTORE.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterBspstore (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register RNAT.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_RNAT.
 | 
						|
 | 
						|
  @return The 64-bit application register RNAT.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterRnat (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register FCR.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_FCR.
 | 
						|
 | 
						|
  @return The 64-bit application register FCR.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterFcr (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register EFLAG.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_EFLAG.
 | 
						|
 | 
						|
  @return The 64-bit application register EFLAG.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterEflag (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register CSD.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_CSD.
 | 
						|
 | 
						|
  @return The 64-bit application register CSD.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterCsd (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register SSD.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_SSD.
 | 
						|
 | 
						|
  @return The 64-bit application register SSD.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterSsd (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register CFLG.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_CFLG.
 | 
						|
 | 
						|
  @return The 64-bit application register CFLG.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterCflg (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register FSR.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_FSR.
 | 
						|
 | 
						|
  @return The 64-bit application register FSR.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterFsr (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register FIR.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_FIR.
 | 
						|
 | 
						|
  @return The 64-bit application register FIR.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterFir (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register FDR.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_FDR.
 | 
						|
 | 
						|
  @return The 64-bit application register FDR.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterFdr (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register CCV.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_CCV.
 | 
						|
 | 
						|
  @return The 64-bit application register CCV.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterCcv (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register UNAT.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_UNAT.
 | 
						|
 | 
						|
  @return The 64-bit application register UNAT.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterUnat (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register FPSR.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_FPSR.
 | 
						|
 | 
						|
  @return The 64-bit application register FPSR.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterFpsr (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register ITC.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_ITC.
 | 
						|
 | 
						|
  @return The 64-bit application register ITC.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterItc (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register PFS.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_PFS.
 | 
						|
 | 
						|
  @return The 64-bit application register PFS.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterPfs (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register LC.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_LC.
 | 
						|
 | 
						|
  @return The 64-bit application register LC.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterLc (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Reads application register EC.
 | 
						|
 | 
						|
  This is a worker function for AsmReadApplicationRegister()
 | 
						|
  when its parameter Index is IPF_APPLICATION_REGISTER_EC.
 | 
						|
 | 
						|
  @return The 64-bit application register EC.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
EFIAPI
 | 
						|
AsmReadApplicationRegisterEc (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Transfers control to a function starting with a new stack.
 | 
						|
 | 
						|
  Transfers control to the function specified by EntryPoint using the new stack
 | 
						|
  specified by NewStack and passing in the parameters specified by Context1 and
 | 
						|
  Context2. Context1 and Context2 are optional and may be NULL. The function
 | 
						|
  EntryPoint must never return.
 | 
						|
 | 
						|
  If EntryPoint is NULL, then ASSERT().
 | 
						|
  If NewStack is NULL, then ASSERT().
 | 
						|
 | 
						|
  @param  EntryPoint  A pointer to function to call with the new stack.
 | 
						|
  @param  Context1    A pointer to the context to pass into the EntryPoint
 | 
						|
                      function.
 | 
						|
  @param  Context2    A pointer to the context to pass into the EntryPoint
 | 
						|
                      function.
 | 
						|
  @param  NewStack    A pointer to the new stack to use for the EntryPoint
 | 
						|
                      function.
 | 
						|
  @param  NewBsp      A pointer to the new memory location for RSE backing
 | 
						|
                      store.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
AsmSwitchStackAndBackingStore (
 | 
						|
  IN      SWITCH_STACK_ENTRY_POINT  EntryPoint,
 | 
						|
  IN      VOID                      *Context1,  OPTIONAL
 | 
						|
  IN      VOID                      *Context2,  OPTIONAL
 | 
						|
  IN      VOID                      *NewStack,
 | 
						|
  IN      VOID                      *NewBsp
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Internal worker function to invalidate a range of instruction cache lines
 | 
						|
  in the cache coherency domain of the calling CPU.
 | 
						|
 | 
						|
  Internal worker function to invalidate the instruction cache lines specified
 | 
						|
  by Address and Length. If Address is not aligned on a cache line boundary,
 | 
						|
  then entire instruction cache line containing Address is invalidated. If
 | 
						|
  Address + Length is not aligned on a cache line boundary, then the entire
 | 
						|
  instruction cache line containing Address + Length -1 is invalidated. This
 | 
						|
  function may choose to invalidate the entire instruction cache if that is more
 | 
						|
  efficient than invalidating the specified range. If Length is 0, the no instruction
 | 
						|
  cache lines are invalidated. Address is returned.
 | 
						|
  This function is only available on IPF.
 | 
						|
 | 
						|
  @param  Address The base address of the instruction cache lines to
 | 
						|
                  invalidate. If the CPU is in a physical addressing mode, then
 | 
						|
                  Address is a physical address. If the CPU is in a virtual
 | 
						|
                  addressing mode, then Address is a virtual address.
 | 
						|
 | 
						|
  @param  Length  The number of bytes to invalidate from the instruction cache.
 | 
						|
 | 
						|
  @return Address
 | 
						|
 | 
						|
**/
 | 
						|
VOID *
 | 
						|
EFIAPI
 | 
						|
InternalFlushCacheRange (
 | 
						|
  IN      VOID                      *Address,
 | 
						|
  IN      UINTN                     Length
 | 
						|
  );
 | 
						|
 | 
						|
#else
 | 
						|
 | 
						|
#endif
 | 
						|
 | 
						|
#endif
 |