mirror of https://github.com/acidanthera/audk.git
Make MDE package pass intel IPF compiler with /W4 /WX switched on.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2312 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
ba3a1cb5bb
commit
582510249f
|
@ -351,7 +351,7 @@ DebugClearMemoryEnabled (
|
|||
are not included in a module.
|
||||
|
||||
**/
|
||||
#define DEBUG_CODE_END() __DebugCodeLocal = 0; } } while (FALSE)
|
||||
#define DEBUG_CODE_END() __DebugCodeLocal = 0; __DebugCodeLocal++; } } while (FALSE)
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -61,6 +61,19 @@ ProcessLibraryConstructorList (
|
|||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
);
|
||||
|
||||
/**
|
||||
Call destructors for all libraries. Automatics Generated by tool.
|
||||
|
||||
@param ImageHandle ImageHandle of the loaded driver.
|
||||
@param SystemTable Pointer to the EFI System Table.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
ProcessLibraryDestructorList (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
);
|
||||
|
||||
/**
|
||||
Call the list of driver entry points. Automatics Generated by tool.
|
||||
|
|
|
@ -15,6 +15,33 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||
#ifndef __MODULE_ENTRY_POINT_H__
|
||||
#define __MODULE_ENTRY_POINT_H__
|
||||
|
||||
/**
|
||||
Enrty point to PEI core.
|
||||
|
||||
@param PeiStartupDescriptor Pointer of start up information.
|
||||
|
||||
@return Status returned by entry points of core and drivers.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
_ModuleEntryPoint (
|
||||
IN EFI_PEI_STARTUP_DESCRIPTOR *PeiStartupDescriptor
|
||||
);
|
||||
|
||||
/**
|
||||
Wrapper of enrty point to PEI core.
|
||||
|
||||
@param PeiStartupDescriptor Pointer of start up information.
|
||||
|
||||
@return Status returned by entry points of core and drivers.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiMain (
|
||||
IN EFI_PEI_STARTUP_DESCRIPTOR *PeiStartupDescriptor
|
||||
);
|
||||
|
||||
/**
|
||||
Call constructs for all libraries. Automatics Generated by tool.
|
||||
|
|
|
@ -195,7 +195,7 @@ PerformanceMeasurementEnabled (
|
|||
Otherwise, the source lines between PERF_CODE_BEGIN() and PERF_CODE_END() are not included in a module.
|
||||
|
||||
**/
|
||||
#define PERF_CODE_END() __PerformanceCodeLocal = 0; } } while (FALSE)
|
||||
#define PERF_CODE_END() __PerformanceCodeLocal = 0; __PerformanceCodeLocal++; } } while (FALSE)
|
||||
|
||||
/**
|
||||
Macro that declares a section of performance measurement source code.
|
||||
|
|
|
@ -575,4 +575,219 @@ InternalX86DisablePaging64 (
|
|||
IN UINT32 NewStack
|
||||
);
|
||||
|
||||
/**
|
||||
Worker function that locates the Node in the List
|
||||
|
||||
By searching the List, finds the location of the Node in List. At the same time,
|
||||
verifies the validity of this list.
|
||||
|
||||
If List is NULL, then ASSERT().
|
||||
If List->ForwardLink is NULL, then ASSERT().
|
||||
If List->backLink is NULL, then ASSERT().
|
||||
If Node is NULL, then ASSERT();
|
||||
If PcdMaximumLinkedListLenth is not zero, and prior to insertion the number
|
||||
of nodes in ListHead, including the ListHead node, is greater than or
|
||||
equal to PcdMaximumLinkedListLength, then ASSERT().
|
||||
|
||||
@param List A pointer to a node in a linked list.
|
||||
@param Node A pointer to one nod.
|
||||
|
||||
@retval TRUE Node is in List
|
||||
@retval FALSE Node isn't in List, or List is invalid
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
IsNodeInList (
|
||||
IN CONST LIST_ENTRY *List,
|
||||
IN CONST LIST_ENTRY *Node
|
||||
);
|
||||
|
||||
/**
|
||||
Performs an atomic increment of an 32-bit unsigned integer.
|
||||
|
||||
Performs an atomic increment of the 32-bit unsigned integer specified by
|
||||
Value and returns the incremented value. The increment operation must be
|
||||
performed using MP safe mechanisms. The state of the return value is not
|
||||
guaranteed to be MP safe.
|
||||
|
||||
@param Value A pointer to the 32-bit value to increment.
|
||||
|
||||
@return The incremented value.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
InternalSyncIncrement (
|
||||
IN volatile UINT32 *Value
|
||||
);
|
||||
|
||||
/**
|
||||
Performs an atomic decrement of an 32-bit unsigned integer.
|
||||
|
||||
Performs an atomic decrement of the 32-bit unsigned integer specified by
|
||||
Value and returns the decrement value. The decrement operation must be
|
||||
performed using MP safe mechanisms. The state of the return value is not
|
||||
guaranteed to be MP safe.
|
||||
|
||||
@param Value A pointer to the 32-bit value to decrement.
|
||||
|
||||
@return The decrement value.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
InternalSyncDecrement (
|
||||
IN volatile UINT32 *Value
|
||||
);
|
||||
|
||||
/**
|
||||
Performs an atomic compare exchange operation on a 32-bit unsigned integer.
|
||||
|
||||
Performs an atomic compare exchange operation on the 32-bit unsigned integer
|
||||
specified by Value. If Value is equal to CompareValue, then Value is set to
|
||||
ExchangeValue and CompareValue is returned. If Value is not equal to CompareValue,
|
||||
then Value is returned. The compare exchange operation must be performed using
|
||||
MP safe mechanisms.
|
||||
|
||||
@param Value A pointer to the 32-bit value for the compare exchange
|
||||
operation.
|
||||
@param CompareValue 32-bit value used in compare operation.
|
||||
@param ExchangeValue 32-bit value used in exchange operation.
|
||||
|
||||
@return The original *Value before exchange.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
InternalSyncCompareExchange32 (
|
||||
IN volatile UINT32 *Value,
|
||||
IN UINT32 CompareValue,
|
||||
IN UINT32 ExchangeValue
|
||||
);
|
||||
|
||||
/**
|
||||
Performs an atomic compare exchange operation on a 64-bit unsigned integer.
|
||||
|
||||
Performs an atomic compare exchange operation on the 64-bit unsigned integer specified
|
||||
by Value. If Value is equal to CompareValue, then Value is set to ExchangeValue and
|
||||
CompareValue is returned. If Value is not equal to CompareValue, then Value is returned.
|
||||
The compare exchange operation must be performed using MP safe mechanisms.
|
||||
|
||||
@param Value A pointer to the 64-bit value for the compare exchange
|
||||
operation.
|
||||
@param CompareValue 64-bit value used in compare operation.
|
||||
@param ExchangeValue 64-bit value used in exchange operation.
|
||||
|
||||
@return The original *Value before exchange.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
InternalSyncCompareExchange64 (
|
||||
IN volatile UINT64 *Value,
|
||||
IN UINT64 CompareValue,
|
||||
IN UINT64 ExchangeValue
|
||||
);
|
||||
|
||||
/**
|
||||
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.
|
||||
|
||||
**/
|
||||
unsigned int
|
||||
BitFieldReadUint (
|
||||
IN unsigned int 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.
|
||||
|
||||
**/
|
||||
unsigned int
|
||||
BitFieldOrUint (
|
||||
IN unsigned int Operand,
|
||||
IN UINTN StartBit,
|
||||
IN UINTN EndBit,
|
||||
IN unsigned int 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.
|
||||
|
||||
**/
|
||||
unsigned int
|
||||
BitFieldAndUint (
|
||||
IN unsigned int Operand,
|
||||
IN UINTN StartBit,
|
||||
IN UINTN EndBit,
|
||||
IN unsigned int 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
|
||||
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
|
||||
);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
|
||||
**/
|
||||
|
||||
#include "BaseLibInternals.h"
|
||||
|
||||
/**
|
||||
Worker function that returns a bit field from Operand
|
||||
|
||||
|
@ -763,10 +765,16 @@ BitFieldOr64 (
|
|||
IN UINT64 OrData
|
||||
)
|
||||
{
|
||||
UINT64 Value1;
|
||||
UINT64 Value2;
|
||||
|
||||
ASSERT (EndBit < sizeof (Operand) * 8);
|
||||
ASSERT (StartBit <= EndBit);
|
||||
return Operand |
|
||||
(LShiftU64 (OrData, StartBit) & ~LShiftU64 ((UINT64)-2, EndBit));
|
||||
|
||||
Value1 = LShiftU64 (OrData, StartBit);
|
||||
Value2 = LShiftU64 ((UINT64) - 2, EndBit);
|
||||
|
||||
return Operand | (Value1 & ~Value2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -801,10 +809,16 @@ BitFieldAnd64 (
|
|||
IN UINT64 AndData
|
||||
)
|
||||
{
|
||||
UINT64 Value1;
|
||||
UINT64 Value2;
|
||||
|
||||
ASSERT (EndBit < sizeof (Operand) * 8);
|
||||
ASSERT (StartBit <= EndBit);
|
||||
return Operand &
|
||||
~(LShiftU64 (~AndData, StartBit) & ~LShiftU64 ((UINT64)-2, EndBit));
|
||||
|
||||
Value1 = LShiftU64 (~AndData, StartBit);
|
||||
Value2 = LShiftU64 ((UINT64)-2, EndBit);
|
||||
|
||||
return Operand & ~(Value1 & ~Value2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -14,30 +14,7 @@
|
|||
|
||||
**/
|
||||
|
||||
/**
|
||||
Performs an atomic compare exchange operation on a 32-bit unsigned integer.
|
||||
|
||||
Performs an atomic compare exchange operation on the 32-bit unsigned integer
|
||||
specified by Value. If Value is equal to CompareValue, then Value is set to
|
||||
ExchangeValue and CompareValue is returned. If Value is not equal to CompareValue,
|
||||
then Value is returned. The compare exchange operation must be performed using
|
||||
MP safe mechanisms.
|
||||
|
||||
@param Value A pointer to the 32-bit value for the compare exchange
|
||||
operation.
|
||||
@param CompareValue 32-bit value used in compare operation.
|
||||
@param ExchangeValue 32-bit value used in exchange operation.
|
||||
|
||||
@return The original *Value before exchange.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
InternalSyncCompareExchange32 (
|
||||
IN volatile UINT32 *Value,
|
||||
IN UINT32 CompareValue,
|
||||
IN UINT32 ExchangeValue
|
||||
);
|
||||
#include "BaseLibInternals.h"
|
||||
|
||||
/**
|
||||
Performs an atomic increment of an 32-bit unsigned integer.
|
||||
|
|
|
@ -143,12 +143,15 @@ ReadUnaligned32 (
|
|||
IN CONST UINT32 *Buffer
|
||||
)
|
||||
{
|
||||
UINT16 LowerBytes;
|
||||
UINT16 HigherBytes;
|
||||
|
||||
ASSERT (Buffer != NULL);
|
||||
|
||||
return (UINT32)(
|
||||
ReadUnaligned16 ((UINT16*)Buffer) |
|
||||
(ReadUnaligned16 ((UINT16*)Buffer + 1) << 16)
|
||||
);
|
||||
LowerBytes = ReadUnaligned16 ((UINT16*) Buffer);
|
||||
HigherBytes = ReadUnaligned16 ((UINT16*) Buffer + 1);
|
||||
|
||||
return (UINT32) (LowerBytes | (HigherBytes << 16));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -199,12 +202,15 @@ ReadUnaligned64 (
|
|||
IN CONST UINT64 *Buffer
|
||||
)
|
||||
{
|
||||
UINT32 LowerBytes;
|
||||
UINT32 HigherBytes;
|
||||
|
||||
ASSERT (Buffer != NULL);
|
||||
|
||||
return (UINT64)(
|
||||
ReadUnaligned32 ((UINT32*)Buffer) |
|
||||
LShiftU64 (ReadUnaligned32 ((UINT32*)Buffer + 1), 32)
|
||||
);
|
||||
LowerBytes = ReadUnaligned32 ((UINT32*) Buffer);
|
||||
HigherBytes = ReadUnaligned32 ((UINT32*) Buffer + 1);
|
||||
|
||||
return (UINT64) (LowerBytes | LShiftU64 (HigherBytes, 32));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
|
||||
**/
|
||||
|
||||
#include "BaseLibInternals.h"
|
||||
|
||||
/**
|
||||
Worker function that locates the Node in the List
|
||||
|
||||
|
|
|
@ -14,39 +14,7 @@
|
|||
|
||||
**/
|
||||
|
||||
/**
|
||||
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
|
||||
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
|
||||
);
|
||||
#include "BaseLibInternals.h"
|
||||
|
||||
/**
|
||||
Restores the CPU context that was saved with SetJump().
|
||||
|
|
|
@ -85,10 +85,13 @@ InternalMathARShiftU64 (
|
|||
IN UINTN Count
|
||||
)
|
||||
{
|
||||
INTN TestValue;
|
||||
|
||||
//
|
||||
// Test if this compiler supports arithmetic shift
|
||||
//
|
||||
if ((((-1) << (sizeof (-1) * 8 - 1)) >> (sizeof (-1) * 8 - 1)) == -1) {
|
||||
TestValue = (((-1) << (sizeof (-1) * 8 - 1)) >> (sizeof (-1) * 8 - 1));
|
||||
if (TestValue == -1) {
|
||||
//
|
||||
// Arithmetic shift is supported
|
||||
//
|
||||
|
@ -169,10 +172,13 @@ InternalMathSwapBytes64 (
|
|||
IN UINT64 Operand
|
||||
)
|
||||
{
|
||||
return (UINT64)(
|
||||
((UINT64)SwapBytes32 ((UINT32)Operand) << 32) |
|
||||
((UINT64)SwapBytes32 ((UINT32)(Operand >> 32)))
|
||||
);
|
||||
UINT64 LowerBytes;
|
||||
UINT64 HigherBytes;
|
||||
|
||||
LowerBytes = (UINT64) SwapBytes32 ((UINT32) Operand);
|
||||
HigherBytes = (UINT64) SwapBytes32 ((UINT32) (Operand >> 32));
|
||||
|
||||
return (LowerBytes << 32 | HigherBytes);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
|
||||
**/
|
||||
|
||||
#include "BaseLibInternals.h"
|
||||
|
||||
/**
|
||||
Worker function that checks ASSERT condition for JumpBuffer
|
||||
|
||||
|
|
|
@ -636,7 +636,7 @@ AsciiToUpper (
|
|||
IN CHAR8 Chr
|
||||
)
|
||||
{
|
||||
return (Chr >= 'a' && Chr <= 'z') ? Chr - ('a' - 'A') : Chr;
|
||||
return (UINT8) ((Chr >= 'a' && Chr <= 'z') ? Chr - ('a' - 'A') : Chr);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -675,19 +675,25 @@ AsciiStriCmp (
|
|||
IN CONST CHAR8 *SecondString
|
||||
)
|
||||
{
|
||||
CHAR8 UpperFirstString;
|
||||
CHAR8 UpperSecondString;
|
||||
|
||||
//
|
||||
// ASSERT both strings are less long than PcdMaximumAsciiStringLength
|
||||
//
|
||||
ASSERT (AsciiStrSize (FirstString));
|
||||
ASSERT (AsciiStrSize (SecondString));
|
||||
|
||||
while ((*FirstString != '\0') &&
|
||||
(AsciiToUpper (*FirstString) == AsciiToUpper (*SecondString))) {
|
||||
UpperFirstString = AsciiToUpper (*FirstString);
|
||||
UpperSecondString = AsciiToUpper (*SecondString);
|
||||
while ((*FirstString != '\0') && (UpperFirstString == UpperSecondString)) {
|
||||
FirstString++;
|
||||
SecondString++;
|
||||
UpperFirstString = AsciiToUpper (*FirstString);
|
||||
UpperSecondString = AsciiToUpper (*SecondString);
|
||||
}
|
||||
|
||||
return AsciiToUpper (*FirstString) - AsciiToUpper (*SecondString);
|
||||
return UpperFirstString - UpperSecondString;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -861,7 +867,7 @@ DecimalToBcd8 (
|
|||
)
|
||||
{
|
||||
ASSERT (Value < 100);
|
||||
return ((Value / 10) << 4) | (Value % 10);
|
||||
return (UINT8) (((Value / 10) << 4) | (Value % 10));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -886,5 +892,5 @@ BcdToDecimal8 (
|
|||
{
|
||||
ASSERT (Value < 0xa0);
|
||||
ASSERT ((Value & 0xf) < 0xa);
|
||||
return (Value >> 4) * 10 + (Value & 0xf);
|
||||
return (UINT8) ((Value >> 4) * 10 + (Value & 0xf));
|
||||
}
|
||||
|
|
|
@ -32,5 +32,5 @@ SwapBytes16 (
|
|||
IN UINT16 Operand
|
||||
)
|
||||
{
|
||||
return (Operand << 8) | (Operand >> 8);
|
||||
return (UINT16) ((Operand << 8) | (Operand >> 8));
|
||||
}
|
||||
|
|
|
@ -32,8 +32,11 @@ SwapBytes32 (
|
|||
IN UINT32 Operand
|
||||
)
|
||||
{
|
||||
return (UINT32)(
|
||||
((UINT32)SwapBytes16 ((UINT16)Operand) << 16) |
|
||||
((UINT32)SwapBytes16 ((UINT16)(Operand >> 16)))
|
||||
);
|
||||
UINT32 LowerBytes;
|
||||
UINT32 HigherBytes;
|
||||
|
||||
LowerBytes = (UINT32) SwapBytes16 ((UINT16) Operand);
|
||||
HigherBytes = (UINT32) SwapBytes16 ((UINT16) (Operand >> 16));
|
||||
|
||||
return (LowerBytes << 16 | HigherBytes);
|
||||
}
|
||||
|
|
|
@ -14,96 +14,11 @@
|
|||
|
||||
**/
|
||||
|
||||
#include "BaseLibInternals.h"
|
||||
|
||||
#define SPIN_LOCK_RELEASED ((SPIN_LOCK)1)
|
||||
#define SPIN_LOCK_ACQUIRED ((SPIN_LOCK)2)
|
||||
|
||||
/**
|
||||
Performs an atomic increment of an 32-bit unsigned integer.
|
||||
|
||||
Performs an atomic increment of the 32-bit unsigned integer specified by
|
||||
Value and returns the incremented value. The increment operation must be
|
||||
performed using MP safe mechanisms. The state of the return value is not
|
||||
guaranteed to be MP safe.
|
||||
|
||||
@param Value A pointer to the 32-bit value to increment.
|
||||
|
||||
@return The incremented value.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
InternalSyncIncrement (
|
||||
IN volatile UINT32 *Value
|
||||
);
|
||||
|
||||
/**
|
||||
Performs an atomic decrement of an 32-bit unsigned integer.
|
||||
|
||||
Performs an atomic decrement of the 32-bit unsigned integer specified by
|
||||
Value and returns the decrement value. The decrement operation must be
|
||||
performed using MP safe mechanisms. The state of the return value is not
|
||||
guaranteed to be MP safe.
|
||||
|
||||
@param Value A pointer to the 32-bit value to decrement.
|
||||
|
||||
@return The decrement value.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
InternalSyncDecrement (
|
||||
IN volatile UINT32 *Value
|
||||
);
|
||||
|
||||
/**
|
||||
Performs an atomic compare exchange operation on a 32-bit unsigned integer.
|
||||
|
||||
Performs an atomic compare exchange operation on the 32-bit unsigned integer
|
||||
specified by Value. If Value is equal to CompareValue, then Value is set to
|
||||
ExchangeValue and CompareValue is returned. If Value is not equal to CompareValue,
|
||||
then Value is returned. The compare exchange operation must be performed using
|
||||
MP safe mechanisms.
|
||||
|
||||
@param Value A pointer to the 32-bit value for the compare exchange
|
||||
operation.
|
||||
@param CompareValue 32-bit value used in compare operation.
|
||||
@param ExchangeValue 32-bit value used in exchange operation.
|
||||
|
||||
@return The original *Value before exchange.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
InternalSyncCompareExchange32 (
|
||||
IN volatile UINT32 *Value,
|
||||
IN UINT32 CompareValue,
|
||||
IN UINT32 ExchangeValue
|
||||
);
|
||||
|
||||
/**
|
||||
Performs an atomic compare exchange operation on a 64-bit unsigned integer.
|
||||
|
||||
Performs an atomic compare exchange operation on the 64-bit unsigned integer specified
|
||||
by Value. If Value is equal to CompareValue, then Value is set to ExchangeValue and
|
||||
CompareValue is returned. If Value is not equal to CompareValue, then Value is returned.
|
||||
The compare exchange operation must be performed using MP safe mechanisms.
|
||||
|
||||
@param Value A pointer to the 64-bit value for the compare exchange
|
||||
operation.
|
||||
@param CompareValue 64-bit value used in compare operation.
|
||||
@param ExchangeValue 64-bit value used in exchange operation.
|
||||
|
||||
@return The original *Value before exchange.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
InternalSyncCompareExchange64 (
|
||||
IN volatile UINT64 *Value,
|
||||
IN UINT64 CompareValue,
|
||||
IN UINT64 ExchangeValue
|
||||
);
|
||||
|
||||
/**
|
||||
Retrieves the architecture specific spin lock alignment requirements for
|
||||
optimal spin lock performance.
|
||||
|
@ -419,7 +334,11 @@ InterlockedCompareExchangePointer (
|
|||
IN VOID *ExchangeValue
|
||||
)
|
||||
{
|
||||
switch (sizeof (*Value)) {
|
||||
UINT8 SizeOfValue;
|
||||
|
||||
SizeOfValue = sizeof (*Value);
|
||||
|
||||
switch (SizeOfValue) {
|
||||
case sizeof (UINT32):
|
||||
return (VOID*)(UINTN)InterlockedCompareExchange32 (
|
||||
(UINT32*)Value,
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
|
||||
**/
|
||||
|
||||
#include "MemLibInternals.h"
|
||||
|
||||
/**
|
||||
Copy Length bytes from Source to Destination.
|
||||
|
||||
|
|
|
@ -77,12 +77,17 @@ CompareGuid (
|
|||
IN CONST GUID *Guid2
|
||||
)
|
||||
{
|
||||
return (BOOLEAN)(
|
||||
ReadUnaligned64 ((CONST UINT64*)Guid1)
|
||||
== ReadUnaligned64 ((CONST UINT64*)Guid2) &&
|
||||
ReadUnaligned64 ((CONST UINT64*)Guid1 + 1)
|
||||
== ReadUnaligned64 ((CONST UINT64*)Guid2 + 1)
|
||||
);
|
||||
UINT64 LowPartOfGuid1;
|
||||
UINT64 LowPartOfGuid2;
|
||||
UINT64 HighPartOfGuid1;
|
||||
UINT64 HighPartOfGuid2;
|
||||
|
||||
LowPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1);
|
||||
LowPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2);
|
||||
HighPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1 + 1);
|
||||
HighPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2 + 1);
|
||||
|
||||
return (BOOLEAN) (LowPartOfGuid1 == LowPartOfGuid2 && HighPartOfGuid1 == HighPartOfGuid2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
**/
|
||||
|
||||
#include "MemLibInternals.h"
|
||||
|
||||
/**
|
||||
Set Buffer to Value for Size bytes.
|
||||
|
|
|
@ -77,12 +77,17 @@ CompareGuid (
|
|||
IN CONST GUID *Guid2
|
||||
)
|
||||
{
|
||||
return (BOOLEAN)(
|
||||
ReadUnaligned64 ((CONST UINT64*)Guid1)
|
||||
== ReadUnaligned64 ((CONST UINT64*)Guid2) &&
|
||||
ReadUnaligned64 ((CONST UINT64*)Guid1 + 1)
|
||||
== ReadUnaligned64 ((CONST UINT64*)Guid2 + 1)
|
||||
);
|
||||
UINT64 LowPartOfGuid1;
|
||||
UINT64 LowPartOfGuid2;
|
||||
UINT64 HighPartOfGuid1;
|
||||
UINT64 HighPartOfGuid2;
|
||||
|
||||
LowPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1);
|
||||
LowPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2);
|
||||
HighPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1 + 1);
|
||||
HighPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2 + 1);
|
||||
|
||||
return (BOOLEAN) (LowPartOfGuid1 == LowPartOfGuid2 && HighPartOfGuid1 == HighPartOfGuid2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
@return The base address of PCI Express.
|
||||
|
||||
**/
|
||||
STATIC
|
||||
volatile VOID*
|
||||
GetPciExpressBaseAddress (
|
||||
VOID
|
||||
|
|
|
@ -17,66 +17,7 @@
|
|||
|
||||
**/
|
||||
|
||||
|
||||
/**
|
||||
Performs an Itanium-based specific relocation fixup and is a no-op on other
|
||||
instruction sets.
|
||||
|
||||
@param Reloc Pointer to the relocation record.
|
||||
@param Fixup Pointer to the address to fix up.
|
||||
@param FixupData Pointer to a buffer to log the fixups.
|
||||
@param Adjust The offset to adjust the fixup.
|
||||
|
||||
@return Status code.
|
||||
|
||||
**/
|
||||
RETURN_STATUS
|
||||
PeCoffLoaderRelocateImageEx (
|
||||
IN UINT16 *Reloc,
|
||||
IN OUT CHAR8 *Fixup,
|
||||
IN OUT CHAR8 **FixupData,
|
||||
IN UINT64 Adjust
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Performs an Itanium-based specific re-relocation fixup and is a no-op on other
|
||||
instruction sets. This is used to re-relocated the image into the EFI virtual
|
||||
space for runtime calls.
|
||||
|
||||
@param Reloc Pointer to the relocation record.
|
||||
@param Fixup Pointer to the address to fix up.
|
||||
@param FixupData Pointer to a buffer to log the fixups.
|
||||
@param Adjust The offset to adjust the fixup.
|
||||
|
||||
@return Status code.
|
||||
|
||||
**/
|
||||
RETURN_STATUS
|
||||
PeHotRelocateImageEx (
|
||||
IN UINT16 *Reloc,
|
||||
IN OUT CHAR8 *Fixup,
|
||||
IN OUT CHAR8 **FixupData,
|
||||
IN UINT64 Adjust
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Returns TRUE if the machine type of PE/COFF image is supported. Supported
|
||||
does not mean the image can be executed it means the PE/COFF loader supports
|
||||
loading and relocating of the image type. It's up to the caller to support
|
||||
the entry point.
|
||||
|
||||
@param Machine Machine type from the PE Header.
|
||||
|
||||
@return TRUE if this PE/COFF loader can load the image
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
PeCoffLoaderImageFormatSupported (
|
||||
IN UINT16 Machine
|
||||
);
|
||||
|
||||
#include "BasePeCoffLibInternals.h"
|
||||
|
||||
/**
|
||||
Retrieves the magic value from the PE/COFF header.
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
</LibraryClassDefinitions>
|
||||
<SourceFiles>
|
||||
<Filename>BasePeCoff.c</Filename>
|
||||
<Filename>BasePeCoffLibInternals.h</Filename>
|
||||
<Filename SupArchList="IA32">Ia32/PeCoffLoaderEx.c</Filename>
|
||||
<Filename SupArchList="X64">x64/PeCoffLoaderEx.c</Filename>
|
||||
<Filename SupArchList="IPF">Ipf/PeCoffLoaderEx.c</Filename>
|
||||
|
|
|
@ -0,0 +1,124 @@
|
|||
/** @file
|
||||
Declaration of internal functions in PE/COFF Lib.
|
||||
|
||||
Copyright (c) 2006, Intel Corporation<BR>
|
||||
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.
|
||||
|
||||
Module Name: BasePeCoffLibInternals.h
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __BASE_PECOFF_LIB_INTERNALS__
|
||||
#define __BASE_PECOFF_LIB_INTERNALS__
|
||||
|
||||
/**
|
||||
Performs an Itanium-based specific relocation fixup and is a no-op on other
|
||||
instruction sets.
|
||||
|
||||
@param Reloc Pointer to the relocation record.
|
||||
@param Fixup Pointer to the address to fix up.
|
||||
@param FixupData Pointer to a buffer to log the fixups.
|
||||
@param Adjust The offset to adjust the fixup.
|
||||
|
||||
@return Status code.
|
||||
|
||||
**/
|
||||
RETURN_STATUS
|
||||
PeCoffLoaderRelocateImageEx (
|
||||
IN UINT16 *Reloc,
|
||||
IN OUT CHAR8 *Fixup,
|
||||
IN OUT CHAR8 **FixupData,
|
||||
IN UINT64 Adjust
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Performs an Itanium-based specific re-relocation fixup and is a no-op on other
|
||||
instruction sets. This is used to re-relocated the image into the EFI virtual
|
||||
space for runtime calls.
|
||||
|
||||
@param Reloc Pointer to the relocation record.
|
||||
@param Fixup Pointer to the address to fix up.
|
||||
@param FixupData Pointer to a buffer to log the fixups.
|
||||
@param Adjust The offset to adjust the fixup.
|
||||
|
||||
@return Status code.
|
||||
|
||||
**/
|
||||
RETURN_STATUS
|
||||
PeHotRelocateImageEx (
|
||||
IN UINT16 *Reloc,
|
||||
IN OUT CHAR8 *Fixup,
|
||||
IN OUT CHAR8 **FixupData,
|
||||
IN UINT64 Adjust
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Returns TRUE if the machine type of PE/COFF image is supported. Supported
|
||||
does not mean the image can be executed it means the PE/COFF loader supports
|
||||
loading and relocating of the image type. It's up to the caller to support
|
||||
the entry point.
|
||||
|
||||
@param Machine Machine type from the PE Header.
|
||||
|
||||
@return TRUE if this PE/COFF loader can load the image
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
PeCoffLoaderImageFormatSupported (
|
||||
IN UINT16 Machine
|
||||
);
|
||||
|
||||
/**
|
||||
Retrieves the magic value from the PE/COFF header.
|
||||
|
||||
@param Hdr The buffer in which to return the PE32, PE32+, or TE header.
|
||||
|
||||
@return EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC - Image is PE32
|
||||
@return EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC - Image is PE32+
|
||||
|
||||
**/
|
||||
UINT16
|
||||
PeCoffLoaderGetPeHeaderMagicValue (
|
||||
IN EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr
|
||||
);
|
||||
|
||||
/**
|
||||
Retrieves the PE or TE Header from a PE/COFF or TE image.
|
||||
|
||||
@param ImageContext The context of the image being loaded.
|
||||
@param Hdr The buffer in which to return the PE32, PE32+, or TE header.
|
||||
|
||||
@retval RETURN_SUCCESS The PE or TE Header is read.
|
||||
@retval Other The error status from reading the PE/COFF or TE image using the ImageRead function.
|
||||
|
||||
**/
|
||||
RETURN_STATUS
|
||||
PeCoffLoaderGetPeHeader (
|
||||
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,
|
||||
OUT EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr
|
||||
);
|
||||
|
||||
/**
|
||||
Converts an image address to the loaded address.
|
||||
|
||||
@param ImageContext The context of the image being loaded.
|
||||
@param Address The address to be converted to the loaded address.
|
||||
|
||||
@return The converted address or NULL if the address can not be converted.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
PeCoffLoaderImageAddress (
|
||||
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,
|
||||
IN UINTN Address
|
||||
);
|
||||
|
||||
#endif
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
**/
|
||||
|
||||
|
||||
#include "BasePeCoffLibInternals.h"
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -156,5 +156,5 @@ PerformanceMeasurementEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdPerformanceLibraryPropertyMask) & PERFORMANCE_LIBRARY_PROPERTY_MEASUREMENT_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdPerformanceLibraryPropertyMask) & PERFORMANCE_LIBRARY_PROPERTY_MEASUREMENT_ENABLED) != 0);
|
||||
}
|
||||
|
|
|
@ -96,7 +96,7 @@ PostCodeEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -118,5 +118,5 @@ PostCodeDescriptionEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
|
||||
}
|
||||
|
|
|
@ -96,7 +96,7 @@ PostCodeEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -119,5 +119,5 @@ PostCodeDescriptionEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
|
||||
}
|
||||
|
|
|
@ -51,6 +51,34 @@ typedef struct {
|
|||
UINT8 Pad2;
|
||||
} TIME;
|
||||
|
||||
/**
|
||||
Worker function that produces a Null-terminated string in an output buffer
|
||||
based on a Null-terminated format string and a VA_LIST argument list.
|
||||
|
||||
VSPrint function to process format and place the results in Buffer. Since a
|
||||
VA_LIST is used this rountine allows the nesting of Vararg routines. Thus
|
||||
this is the main print working routine.
|
||||
|
||||
@param Buffer Character buffer to print the results of the parsing
|
||||
of Format into.
|
||||
@param BufferSize Maximum number of characters to put into buffer.
|
||||
@param Flags Intial flags value.
|
||||
Can only have FORMAT_UNICODE and OUTPUT_UNICODE set.
|
||||
@param Format Null-terminated format string.
|
||||
@param Marker Vararg list consumed by processing Format.
|
||||
|
||||
@return Number of characters printed not including the Null-terminator.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
BasePrintLibVSPrint (
|
||||
OUT CHAR8 *Buffer,
|
||||
IN UINTN BufferSize,
|
||||
IN UINTN Flags,
|
||||
IN CONST CHAR8 *Format,
|
||||
IN VA_LIST Marker
|
||||
);
|
||||
|
||||
/**
|
||||
Worker function that produces a Null-terminated string in an output buffer
|
||||
based on a Null-terminated format string and variable argument list.
|
||||
|
|
|
@ -14,59 +14,7 @@
|
|||
|
||||
**/
|
||||
|
||||
//
|
||||
// Decompression algorithm begins here
|
||||
//
|
||||
#define BITBUFSIZ 32
|
||||
#define MAXMATCH 256
|
||||
#define THRESHOLD 3
|
||||
#define CODE_BIT 16
|
||||
#define BAD_TABLE - 1
|
||||
|
||||
//
|
||||
// C: Char&Len Set; P: Position Set; T: exTra Set
|
||||
//
|
||||
#define NC (0xff + MAXMATCH + 2 - THRESHOLD)
|
||||
#define CBIT 9
|
||||
#define MAXPBIT 5
|
||||
#define TBIT 5
|
||||
#define MAXNP ((1U << MAXPBIT) - 1)
|
||||
#define NT (CODE_BIT + 3)
|
||||
#if NT > MAXNP
|
||||
#define NPT NT
|
||||
#else
|
||||
#define NPT MAXNP
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
UINT8 *mSrcBase; ///< Starting address of compressed data
|
||||
UINT8 *mDstBase; ///< Starting address of decompressed data
|
||||
UINT32 mOutBuf;
|
||||
UINT32 mInBuf;
|
||||
|
||||
UINT16 mBitCount;
|
||||
UINT32 mBitBuf;
|
||||
UINT32 mSubBitBuf;
|
||||
UINT16 mBlockSize;
|
||||
UINT32 mCompSize;
|
||||
UINT32 mOrigSize;
|
||||
|
||||
UINT16 mBadTableFlag;
|
||||
|
||||
UINT16 mLeft[2 * NC - 1];
|
||||
UINT16 mRight[2 * NC - 1];
|
||||
UINT8 mCLen[NC];
|
||||
UINT8 mPTLen[NPT];
|
||||
UINT16 mCTable[4096];
|
||||
UINT16 mPTTable[256];
|
||||
|
||||
///
|
||||
/// The length of the field 'Position Set Code Length Array Size' in Block Header.
|
||||
/// For EFI 1.1 de/compression algorithm, mPBit = 4
|
||||
/// For Tiano de/compression algorithm, mPBit = 5
|
||||
///
|
||||
UINT8 mPBit;
|
||||
} SCRATCH_DATA;
|
||||
#include "BaseUefiDecompressLibInternals.h"
|
||||
|
||||
/**
|
||||
Read NumOfBit of bits from source into mBitBuf
|
||||
|
@ -195,6 +143,9 @@ MakeTable (
|
|||
UINT16 Avail;
|
||||
UINT16 NextCode;
|
||||
UINT16 Mask;
|
||||
UINT16 WordOfStart;
|
||||
UINT16 WordOfCount;
|
||||
|
||||
|
||||
for (Index = 1; Index <= 16; Index++) {
|
||||
Count[Index] = 0;
|
||||
|
@ -207,7 +158,9 @@ MakeTable (
|
|||
Start[1] = 0;
|
||||
|
||||
for (Index = 1; Index <= 16; Index++) {
|
||||
Start[Index + 1] = (UINT16) (Start[Index] + (Count[Index] << (16 - Index)));
|
||||
WordOfStart = Start[Index];
|
||||
WordOfCount = Count[Index];
|
||||
Start[Index + 1] = (UINT16) (WordOfStart + (WordOfCount << (16 - Index)));
|
||||
}
|
||||
|
||||
if (Start[17] != 0) {
|
||||
|
@ -627,7 +580,7 @@ Decode (
|
|||
//
|
||||
CharC = DecodeC (Sd);
|
||||
if (Sd->mBadTableFlag != 0) {
|
||||
return ;
|
||||
goto Done;
|
||||
}
|
||||
|
||||
if (CharC < 256) {
|
||||
|
@ -635,7 +588,7 @@ Decode (
|
|||
// Process an Original character
|
||||
//
|
||||
if (Sd->mOutBuf >= Sd->mOrigSize) {
|
||||
return ;
|
||||
goto Done;
|
||||
} else {
|
||||
//
|
||||
// Write orignal character into mDstBase
|
||||
|
@ -666,7 +619,7 @@ Decode (
|
|||
while ((INT16) (BytesRemain) >= 0) {
|
||||
Sd->mDstBase[Sd->mOutBuf++] = Sd->mDstBase[DataIdx++];
|
||||
if (Sd->mOutBuf >= Sd->mOrigSize) {
|
||||
return ;
|
||||
goto Done;
|
||||
}
|
||||
|
||||
BytesRemain--;
|
||||
|
@ -674,6 +627,7 @@ Decode (
|
|||
}
|
||||
}
|
||||
|
||||
Done:
|
||||
return ;
|
||||
}
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
</LibraryClassDefinitions>
|
||||
<SourceFiles>
|
||||
<Filename>BaseUefiDecompressLib.c</Filename>
|
||||
<Filename>BaseUefiDecompressLibInternals.h</Filename>
|
||||
</SourceFiles>
|
||||
<PackageDependencies>
|
||||
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
||||
|
|
|
@ -0,0 +1,215 @@
|
|||
/** @file
|
||||
Internal include file for Base UEFI Decompress Libary.
|
||||
|
||||
Copyright (c) 2006, 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.
|
||||
|
||||
Module Name: BaseUefiDecompressLibInternals.h
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __BASE_UEFI_DECOMPRESS_LIB_INTERNALS_H__
|
||||
#define __BASE_UEFI_DECOMPRESS_LIB_INTERNALS_H__
|
||||
|
||||
//
|
||||
// Decompression algorithm begins here
|
||||
//
|
||||
#define BITBUFSIZ 32
|
||||
#define MAXMATCH 256
|
||||
#define THRESHOLD 3
|
||||
#define CODE_BIT 16
|
||||
#define BAD_TABLE - 1
|
||||
|
||||
//
|
||||
// C: Char&Len Set; P: Position Set; T: exTra Set
|
||||
//
|
||||
#define NC (0xff + MAXMATCH + 2 - THRESHOLD)
|
||||
#define CBIT 9
|
||||
#define MAXPBIT 5
|
||||
#define TBIT 5
|
||||
#define MAXNP ((1U << MAXPBIT) - 1)
|
||||
#define NT (CODE_BIT + 3)
|
||||
#if NT > MAXNP
|
||||
#define NPT NT
|
||||
#else
|
||||
#define NPT MAXNP
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
UINT8 *mSrcBase; ///< Starting address of compressed data
|
||||
UINT8 *mDstBase; ///< Starting address of decompressed data
|
||||
UINT32 mOutBuf;
|
||||
UINT32 mInBuf;
|
||||
|
||||
UINT16 mBitCount;
|
||||
UINT32 mBitBuf;
|
||||
UINT32 mSubBitBuf;
|
||||
UINT16 mBlockSize;
|
||||
UINT32 mCompSize;
|
||||
UINT32 mOrigSize;
|
||||
|
||||
UINT16 mBadTableFlag;
|
||||
|
||||
UINT16 mLeft[2 * NC - 1];
|
||||
UINT16 mRight[2 * NC - 1];
|
||||
UINT8 mCLen[NC];
|
||||
UINT8 mPTLen[NPT];
|
||||
UINT16 mCTable[4096];
|
||||
UINT16 mPTTable[256];
|
||||
|
||||
///
|
||||
/// The length of the field 'Position Set Code Length Array Size' in Block Header.
|
||||
/// For EFI 1.1 de/compression algorithm, mPBit = 4
|
||||
/// For Tiano de/compression algorithm, mPBit = 5
|
||||
///
|
||||
UINT8 mPBit;
|
||||
} SCRATCH_DATA;
|
||||
|
||||
/**
|
||||
Read NumOfBit of bits from source into mBitBuf
|
||||
|
||||
Shift mBitBuf NumOfBits left. Read in NumOfBits of bits from source.
|
||||
|
||||
@param Sd The global scratch data
|
||||
@param NumOfBits The number of bits to shift and read.
|
||||
|
||||
**/
|
||||
VOID
|
||||
FillBuf (
|
||||
IN SCRATCH_DATA *Sd,
|
||||
IN UINT16 NumOfBits
|
||||
);
|
||||
|
||||
/**
|
||||
Get NumOfBits of bits out from mBitBuf
|
||||
|
||||
Get NumOfBits of bits out from mBitBuf. Fill mBitBuf with subsequent
|
||||
NumOfBits of bits from source. Returns NumOfBits of bits that are
|
||||
popped out.
|
||||
|
||||
@param Sd The global scratch data.
|
||||
@param NumOfBits The number of bits to pop and read.
|
||||
|
||||
@return The bits that are popped out.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
GetBits (
|
||||
IN SCRATCH_DATA *Sd,
|
||||
IN UINT16 NumOfBits
|
||||
);
|
||||
|
||||
/**
|
||||
Creates Huffman Code mapping table according to code length array.
|
||||
|
||||
Creates Huffman Code mapping table for Extra Set, Char&Len Set
|
||||
and Position Set according to code length array.
|
||||
|
||||
@param Sd The global scratch data
|
||||
@param NumOfChar Number of symbols in the symbol set
|
||||
@param BitLen Code length array
|
||||
@param TableBits The width of the mapping table
|
||||
@param Table The table
|
||||
|
||||
@retval 0 OK.
|
||||
@retval BAD_TABLE The table is corrupted.
|
||||
|
||||
**/
|
||||
UINT16
|
||||
MakeTable (
|
||||
IN SCRATCH_DATA *Sd,
|
||||
IN UINT16 NumOfChar,
|
||||
IN UINT8 *BitLen,
|
||||
IN UINT16 TableBits,
|
||||
OUT UINT16 *Table
|
||||
);
|
||||
|
||||
/**
|
||||
Decodes a position value.
|
||||
|
||||
Get a position value according to Position Huffman Table.
|
||||
|
||||
@param Sd the global scratch data
|
||||
|
||||
@return The position value decoded.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
DecodeP (
|
||||
IN SCRATCH_DATA *Sd
|
||||
);
|
||||
|
||||
/**
|
||||
Reads code lengths for the Extra Set or the Position Set.
|
||||
|
||||
Read in the Extra Set or Pointion Set Length Arrary, then
|
||||
generate the Huffman code mapping for them.
|
||||
|
||||
@param Sd The global scratch data.
|
||||
@param nn Number of symbols.
|
||||
@param nbit Number of bits needed to represent nn.
|
||||
@param Special The special symbol that needs to be taken care of.
|
||||
|
||||
@retval 0 OK.
|
||||
@retval BAD_TABLE Table is corrupted.
|
||||
|
||||
**/
|
||||
UINT16
|
||||
ReadPTLen (
|
||||
IN SCRATCH_DATA *Sd,
|
||||
IN UINT16 nn,
|
||||
IN UINT16 nbit,
|
||||
IN UINT16 Special
|
||||
);
|
||||
|
||||
/**
|
||||
Reads code lengths for Char&Len Set.
|
||||
|
||||
Read in and decode the Char&Len Set Code Length Array, then
|
||||
generate the Huffman Code mapping table for the Char&Len Set.
|
||||
|
||||
@param Sd the global scratch data
|
||||
|
||||
**/
|
||||
VOID
|
||||
ReadCLen (
|
||||
SCRATCH_DATA *Sd
|
||||
);
|
||||
|
||||
/**
|
||||
Decode a character/length value.
|
||||
|
||||
Read one value from mBitBuf, Get one code from mBitBuf. If it is at block boundary, generates
|
||||
Huffman code mapping table for Extra Set, Code&Len Set and
|
||||
Position Set.
|
||||
|
||||
@param Sd The global scratch data.
|
||||
|
||||
@return The value decoded.
|
||||
|
||||
**/
|
||||
UINT16
|
||||
DecodeC (
|
||||
SCRATCH_DATA *Sd
|
||||
);
|
||||
|
||||
/**
|
||||
Decode the source data and put the resulting data into the destination buffer.
|
||||
|
||||
Decode the source data and put the resulting data into the destination buffer.
|
||||
|
||||
@param Sd The global scratch data
|
||||
|
||||
**/
|
||||
VOID
|
||||
Decode (
|
||||
SCRATCH_DATA *Sd
|
||||
);
|
||||
|
||||
#endif
|
|
@ -35,6 +35,7 @@
|
|||
</LibraryClassDefinitions>
|
||||
<SourceFiles>
|
||||
<Filename>HobLib.c</Filename>
|
||||
<Filename>HobLib.h</Filename>
|
||||
</SourceFiles>
|
||||
<PackageDependencies>
|
||||
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
||||
|
|
|
@ -14,10 +14,7 @@
|
|||
|
||||
**/
|
||||
|
||||
|
||||
|
||||
extern VOID *gHobList;
|
||||
|
||||
#include "HobLib.h"
|
||||
|
||||
/**
|
||||
Returns the pointer to the HOB list.
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
/** @file
|
||||
Internal include file of DXE Entry Point HOB Library.
|
||||
|
||||
Copyright (c) 2006, 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.
|
||||
|
||||
Module Name: HobLib.h
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __DXE_ENTRY_POINT_HOB_LIB_H__
|
||||
#define __DXE_ENTRY_POINT_HOB_LIB_H__
|
||||
|
||||
extern VOID *gHobList;
|
||||
|
||||
#endif
|
|
@ -0,0 +1,107 @@
|
|||
/** @file
|
||||
Internal include file of DXE CPU IO Library.
|
||||
|
||||
Copyright (c) 2006, 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.
|
||||
|
||||
Module Name: DxeCpuIoLibInternal.h
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __DXE_CPUIO_LIB_INTERNAL_H__
|
||||
#define __DXE_CPUIO_LIB_INTERNAL_H__
|
||||
|
||||
/**
|
||||
Reads registers in the EFI CPU I/O space.
|
||||
|
||||
Reads the I/O port specified by Port with registers width specified by Width.
|
||||
The read value is returned. If such operations are not supported, then ASSERT().
|
||||
This function must guarantee that all I/O read and write operations are serialized.
|
||||
|
||||
@param Port The base address of the I/O operation.
|
||||
The caller is responsible for aligning the Address if required.
|
||||
@param Width The width of the I/O operation.
|
||||
|
||||
@return Data read from registers in the EFI CPU I/O space.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
IoReadWorker (
|
||||
IN UINTN Port,
|
||||
IN EFI_CPU_IO_PROTOCOL_WIDTH Width
|
||||
);
|
||||
|
||||
/**
|
||||
Writes registers in the EFI CPU I/O space.
|
||||
|
||||
Writes the I/O port specified by Port with registers width and value specified by Width
|
||||
and Data respectively. Data is returned. If such operations are not supported, then ASSERT().
|
||||
This function must guarantee that all I/O read and write operations are serialized.
|
||||
|
||||
@param Port The base address of the I/O operation.
|
||||
The caller is responsible for aligning the Address if required.
|
||||
@param Width The width of the I/O operation.
|
||||
@param Data The value to write to the I/O port.
|
||||
|
||||
@return The paramter of Data.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
IoWriteWorker (
|
||||
IN UINTN Port,
|
||||
IN EFI_CPU_IO_PROTOCOL_WIDTH Width,
|
||||
IN UINT64 Data
|
||||
);
|
||||
|
||||
/**
|
||||
Reads memory-mapped registers in the EFI system memory space.
|
||||
|
||||
Reads the MMIO registers specified by Address with registers width specified by Width.
|
||||
The read value is returned. If such operations are not supported, then ASSERT().
|
||||
This function must guarantee that all MMIO read and write operations are serialized.
|
||||
|
||||
@param Address The MMIO register to read.
|
||||
The caller is responsible for aligning the Address if required.
|
||||
@param Width The width of the I/O operation.
|
||||
|
||||
@return Data read from registers in the EFI system memory space.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
MmioReadWorker (
|
||||
IN UINTN Address,
|
||||
IN EFI_CPU_IO_PROTOCOL_WIDTH Width
|
||||
);
|
||||
|
||||
/**
|
||||
Writes memory-mapped registers in the EFI system memory space.
|
||||
|
||||
Writes the MMIO registers specified by Address with registers width and value specified by Width
|
||||
and Data respectively. Data is returned. If such operations are not supported, then ASSERT().
|
||||
This function must guarantee that all MMIO read and write operations are serialized.
|
||||
|
||||
@param Address The MMIO register to read.
|
||||
The caller is responsible for aligning the Address if required.
|
||||
@param Width The width of the I/O operation.
|
||||
|
||||
@return Data read from registers in the EFI system memory space.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
MmioWriteWorker (
|
||||
IN UINTN Address,
|
||||
IN EFI_CPU_IO_PROTOCOL_WIDTH Width,
|
||||
IN UINT64 Data
|
||||
);
|
||||
|
||||
#endif
|
|
@ -39,6 +39,7 @@
|
|||
<SourceFiles>
|
||||
<Filename>IoLib.c</Filename>
|
||||
<Filename>IoHighLevel.c</Filename>
|
||||
<Filename>DxeCpuIoLibInternal.h</Filename>
|
||||
</SourceFiles>
|
||||
<PackageDependencies>
|
||||
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
||||
|
|
|
@ -48,7 +48,7 @@ IoOr8 (
|
|||
IN UINT8 OrData
|
||||
)
|
||||
{
|
||||
return IoWrite8 (Port, IoRead8 (Port) | OrData);
|
||||
return IoWrite8 (Port, (UINT8) (IoRead8 (Port) | OrData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -76,7 +76,7 @@ IoAnd8 (
|
|||
IN UINT8 AndData
|
||||
)
|
||||
{
|
||||
return IoWrite8 (Port, IoRead8 (Port) & AndData);
|
||||
return IoWrite8 (Port, (UINT8) (IoRead8 (Port) & AndData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -107,7 +107,7 @@ IoAndThenOr8 (
|
|||
IN UINT8 OrData
|
||||
)
|
||||
{
|
||||
return IoWrite8 (Port, (IoRead8 (Port) & AndData) | OrData);
|
||||
return IoWrite8 (Port, (UINT8) ((IoRead8 (Port) & AndData) | OrData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -328,7 +328,7 @@ IoOr16 (
|
|||
IN UINT16 OrData
|
||||
)
|
||||
{
|
||||
return IoWrite16 (Port, IoRead16 (Port) | OrData);
|
||||
return IoWrite16 (Port, (UINT16) (IoRead16 (Port) | OrData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -356,7 +356,7 @@ IoAnd16 (
|
|||
IN UINT16 AndData
|
||||
)
|
||||
{
|
||||
return IoWrite16 (Port, IoRead16 (Port) & AndData);
|
||||
return IoWrite16 (Port, (UINT16) (IoRead16 (Port) & AndData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -387,7 +387,7 @@ IoAndThenOr16 (
|
|||
IN UINT16 OrData
|
||||
)
|
||||
{
|
||||
return IoWrite16 (Port, (IoRead16 (Port) & AndData) | OrData);
|
||||
return IoWrite16 (Port, (UINT16) ((IoRead16 (Port) & AndData) | OrData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1168,7 +1168,7 @@ MmioOr8 (
|
|||
IN UINT8 OrData
|
||||
)
|
||||
{
|
||||
return MmioWrite8 (Address, MmioRead8 (Address) | OrData);
|
||||
return MmioWrite8 (Address, (UINT8) (MmioRead8 (Address) | OrData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1196,7 +1196,7 @@ MmioAnd8 (
|
|||
IN UINT8 AndData
|
||||
)
|
||||
{
|
||||
return MmioWrite8 (Address, MmioRead8 (Address) & AndData);
|
||||
return MmioWrite8 (Address, (UINT8) (MmioRead8 (Address) & AndData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1228,7 +1228,7 @@ MmioAndThenOr8 (
|
|||
IN UINT8 OrData
|
||||
)
|
||||
{
|
||||
return MmioWrite8 (Address, (MmioRead8 (Address) & AndData) | OrData);
|
||||
return MmioWrite8 (Address, (UINT8) ((MmioRead8 (Address) & AndData) | OrData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1450,7 +1450,7 @@ MmioOr16 (
|
|||
IN UINT16 OrData
|
||||
)
|
||||
{
|
||||
return MmioWrite16 (Address, MmioRead16 (Address) | OrData);
|
||||
return MmioWrite16 (Address, (UINT16) (MmioRead16 (Address) | OrData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1478,7 +1478,7 @@ MmioAnd16 (
|
|||
IN UINT16 AndData
|
||||
)
|
||||
{
|
||||
return MmioWrite16 (Address, MmioRead16 (Address) & AndData);
|
||||
return MmioWrite16 (Address, (UINT16) (MmioRead16 (Address) & AndData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1510,7 +1510,7 @@ MmioAndThenOr16 (
|
|||
IN UINT16 OrData
|
||||
)
|
||||
{
|
||||
return MmioWrite16 (Address, (MmioRead16 (Address) & AndData) | OrData);
|
||||
return MmioWrite16 (Address, (UINT16) ((MmioRead16 (Address) & AndData) | OrData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
|
||||
**/
|
||||
|
||||
#include "DxeCpuIoLibInternal.h"
|
||||
|
||||
//
|
||||
// Globle varible to cache pointer to CpuIo protocol.
|
||||
//
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
</LibraryClassDefinitions>
|
||||
<SourceFiles>
|
||||
<Filename>MemoryAllocationLib.c</Filename>
|
||||
<Filename>MemoryAllocationLibInternals.h</Filename>
|
||||
</SourceFiles>
|
||||
<PackageDependencies>
|
||||
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
**/
|
||||
|
||||
#include "MemoryAllocationLibInternals.h"
|
||||
|
||||
/**
|
||||
Allocates one or more 4KB pages of a certain memory type.
|
||||
|
|
|
@ -0,0 +1,200 @@
|
|||
/** @file
|
||||
Internal include file of DXE Memory Allocation Library.
|
||||
|
||||
Copyright (c) 2006, 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.
|
||||
|
||||
Module Name: MemoryAllocationLibInternals.h
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __DXE_MEMORY_ALLOCATION_LIB_INTERNALS_H__
|
||||
#define __DXE_MEMORY_ALLOCATION_LIB_INTERNALS_H__
|
||||
|
||||
/**
|
||||
Allocates one or more 4KB pages of a certain memory type.
|
||||
|
||||
Allocates the number of 4KB pages of a certain memory type and returns a pointer to the allocated
|
||||
buffer. The buffer returned is aligned on a 4KB boundary. If Pages is 0, then NULL is returned.
|
||||
If there is not enough memory remaining to satisfy the request, then NULL is returned.
|
||||
|
||||
@param MemoryType The type of memory to allocate.
|
||||
@param Pages The number of 4 KB pages to allocate.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
InternalAllocatePages (
|
||||
IN EFI_MEMORY_TYPE MemoryType,
|
||||
IN UINTN Pages
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates one or more 4KB pages of a certain memory type at a specified alignment.
|
||||
|
||||
Allocates the number of 4KB pages specified by Pages of a certain memory type with an alignment
|
||||
specified by Alignment. The allocated buffer is returned. If Pages is 0, then NULL is returned.
|
||||
If there is not enough memory at the specified alignment remaining to satisfy the request, then
|
||||
NULL is returned.
|
||||
If Alignment is not a power of two and Alignment is not zero, then ASSERT().
|
||||
|
||||
@param MemoryType The type of memory to allocate.
|
||||
@param Pages The number of 4 KB pages to allocate.
|
||||
@param Alignment The requested alignment of the allocation. Must be a power of two.
|
||||
If Alignment is zero, then byte alignment is used.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
InternalAllocateAlignedPages (
|
||||
IN EFI_MEMORY_TYPE MemoryType,
|
||||
IN UINTN Pages,
|
||||
IN UINTN Alignment
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates a buffer of a certain pool type.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of a certain pool type and returns a
|
||||
pointer to the allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is
|
||||
returned. If there is not enough memory remaining to satisfy the request, then NULL is returned.
|
||||
|
||||
@param MemoryType The type of memory to allocate.
|
||||
@param AllocationSize The number of bytes to allocate.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
InternalAllocatePool (
|
||||
IN EFI_MEMORY_TYPE MemoryType,
|
||||
IN UINTN AllocationSize
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates and zeros a buffer of a certian pool type.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of a certian pool type, clears the buffer
|
||||
with zeros, and returns a pointer to the allocated buffer. If AllocationSize is 0, then a valid
|
||||
buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request,
|
||||
then NULL is returned.
|
||||
|
||||
@param PoolType The type of memory to allocate.
|
||||
@param AllocationSize The number of bytes to allocate and zero.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
InternalAllocateZeroPool (
|
||||
IN EFI_MEMORY_TYPE PoolType,
|
||||
IN UINTN AllocationSize
|
||||
);
|
||||
|
||||
/**
|
||||
Copies a buffer to an allocated buffer of a certian pool type.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of a certian pool type, copies
|
||||
AllocationSize bytes from Buffer to the newly allocated buffer, and returns a pointer to the
|
||||
allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is returned. If there
|
||||
is not enough memory remaining to satisfy the request, then NULL is returned.
|
||||
If Buffer is NULL, then ASSERT().
|
||||
If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().
|
||||
|
||||
@param PoolType The type of pool to allocate.
|
||||
@param AllocationSize The number of bytes to allocate and zero.
|
||||
@param Buffer The buffer to copy to the allocated buffer.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
InternalAllocateCopyPool (
|
||||
IN EFI_MEMORY_TYPE PoolType,
|
||||
IN UINTN AllocationSize,
|
||||
IN CONST VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates a buffer of a certain pool type at a specified alignment.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of a certain pool type with an alignment
|
||||
specified by Alignment. The allocated buffer is returned. If AllocationSize is 0, then a valid
|
||||
buffer of 0 size is returned. If there is not enough memory at the specified alignment remaining
|
||||
to satisfy the request, then NULL is returned.
|
||||
If Alignment is not a power of two and Alignment is not zero, then ASSERT().
|
||||
|
||||
@param PoolType The type of pool to allocate.
|
||||
@param AllocationSize The number of bytes to allocate.
|
||||
@param Alignment The requested alignment of the allocation. Must be a power of two. If Alignment is zero, then byte alignment is used.
|
||||
If Alignment is zero, then byte alignment is used.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
InternalAllocateAlignedPool (
|
||||
IN EFI_MEMORY_TYPE PoolType,
|
||||
IN UINTN AllocationSize,
|
||||
IN UINTN Alignment
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates and zeros a buffer of a certain pool type at a specified alignment.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of a certain pool type with an alignment
|
||||
specified by Alignment, clears the buffer with zeros, and returns a pointer to the allocated
|
||||
buffer. If AllocationSize is 0, then a valid buffer of 0 size is returned. If there is not
|
||||
enough memory at the specified alignment remaining to satisfy the request, then NULL is returned.
|
||||
If Alignment is not a power of two and Alignment is not zero, then ASSERT().
|
||||
|
||||
@param PoolType The type of pool to allocate.
|
||||
@param AllocationSize The number of bytes to allocate.
|
||||
@param Alignment The requested alignment of the allocation. Must be a power of two.
|
||||
If Alignment is zero, then byte alignment is used.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
InternalAllocateAlignedZeroPool (
|
||||
IN EFI_MEMORY_TYPE PoolType,
|
||||
IN UINTN AllocationSize,
|
||||
IN UINTN Alignment
|
||||
);
|
||||
|
||||
/**
|
||||
Copies a buffer to an allocated buffer of a certain pool type at a specified alignment.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of a certain pool type with an alignment
|
||||
specified by Alignment. The allocated buffer is returned. If AllocationSize is 0, then a valid
|
||||
buffer of 0 size is returned. If there is not enough memory at the specified alignment remaining
|
||||
to satisfy the request, then NULL is returned.
|
||||
If Alignment is not a power of two and Alignment is not zero, then ASSERT().
|
||||
|
||||
@param PoolType The type of pool to allocate.
|
||||
@param AllocationSize The number of bytes to allocate.
|
||||
@param Buffer The buffer to copy to the allocated buffer.
|
||||
@param Alignment The requested alignment of the allocation. Must be a power of two.
|
||||
If Alignment is zero, then byte alignment is used.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
InternalAllocateAlignedCopyPool (
|
||||
IN EFI_MEMORY_TYPE PoolType,
|
||||
IN UINTN AllocationSize,
|
||||
IN CONST VOID *Buffer,
|
||||
IN UINTN Alignment
|
||||
);
|
||||
|
||||
#endif
|
|
@ -14,6 +14,8 @@
|
|||
|
||||
**/
|
||||
|
||||
#include "MemLibInternals.h"
|
||||
|
||||
VOID *
|
||||
EFIAPI
|
||||
InternalMemCopyMem (
|
||||
|
|
|
@ -77,12 +77,17 @@ CompareGuid (
|
|||
IN CONST GUID *Guid2
|
||||
)
|
||||
{
|
||||
return (BOOLEAN)(
|
||||
ReadUnaligned64 ((CONST UINT64*)Guid1)
|
||||
== ReadUnaligned64 ((CONST UINT64*)Guid2) &&
|
||||
ReadUnaligned64 ((CONST UINT64*)Guid1 + 1)
|
||||
== ReadUnaligned64 ((CONST UINT64*)Guid2 + 1)
|
||||
);
|
||||
UINT64 LowPartOfGuid1;
|
||||
UINT64 LowPartOfGuid2;
|
||||
UINT64 HighPartOfGuid1;
|
||||
UINT64 HighPartOfGuid2;
|
||||
|
||||
LowPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1);
|
||||
LowPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2);
|
||||
HighPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1 + 1);
|
||||
HighPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2 + 1);
|
||||
|
||||
return (BOOLEAN) (LowPartOfGuid1 == LowPartOfGuid2 && HighPartOfGuid1 == HighPartOfGuid2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -40,6 +40,7 @@ static EFI_STATUS_CODE_PROTOCOL *gStatusCode = NULL;
|
|||
@retval EFI_UNSUPPORTED Status Code Protocol is not available.
|
||||
|
||||
**/
|
||||
STATIC
|
||||
EFI_STATUS
|
||||
InternalReportStatusCode (
|
||||
IN EFI_STATUS_CODE_TYPE Type,
|
||||
|
@ -78,6 +79,7 @@ InternalReportStatusCode (
|
|||
@return The size, in bytes, of DevicePath.
|
||||
|
||||
**/
|
||||
STATIC
|
||||
UINTN
|
||||
InternalReportStatusCodeDevicePathSize (
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
||||
|
@ -139,8 +141,8 @@ CodeTypeToPostCode (
|
|||
//
|
||||
if (((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_PROGRESS_CODE) ||
|
||||
((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_ERROR_CODE) ) {
|
||||
*PostCode = (UINT8) (((Value & EFI_STATUS_CODE_CLASS_MASK) >> 24) << 5);
|
||||
*PostCode |= (UINT8) (((Value & EFI_STATUS_CODE_SUBCLASS_MASK) >> 16) & 0x1f);
|
||||
*PostCode = (UINT8) ((((Value & EFI_STATUS_CODE_CLASS_MASK) >> 24) << 5) |
|
||||
(((Value & EFI_STATUS_CODE_SUBCLASS_MASK) >> 16) & 0x1f));
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
@ -533,7 +535,7 @@ ReportProgressCodeEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_PROGRESS_CODE_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_PROGRESS_CODE_ENABLED) != 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -555,7 +557,7 @@ ReportErrorCodeEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_ERROR_CODE_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_ERROR_CODE_ENABLED) != 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -577,5 +579,5 @@ ReportDebugCodeEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_DEBUG_CODE_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_DEBUG_CODE_ENABLED) != 0);
|
||||
}
|
||||
|
|
|
@ -122,11 +122,15 @@ DebugAssert (
|
|||
EFI_DEBUG_ASSERT_DATA *AssertData;
|
||||
UINTN TotalSize;
|
||||
CHAR8 *Temp;
|
||||
UINTN FileNameLength;
|
||||
UINTN DescriptionLength;
|
||||
|
||||
//
|
||||
// Make sure it will all fit in the passed in buffer
|
||||
//
|
||||
TotalSize = sizeof (EFI_DEBUG_ASSERT_DATA) + AsciiStrLen (FileName) + 1 + AsciiStrLen (Description) + 1;
|
||||
FileNameLength = AsciiStrLen (FileName);
|
||||
DescriptionLength = AsciiStrLen (Description);
|
||||
TotalSize = sizeof (EFI_DEBUG_ASSERT_DATA) + FileNameLength + 1 + DescriptionLength + 1;
|
||||
if (TotalSize <= EFI_STATUS_CODE_DATA_MAX_SIZE) {
|
||||
//
|
||||
// Fill in EFI_DEBUG_ASSERT_DATA
|
||||
|
@ -216,7 +220,7 @@ DebugAssertEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED) != 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -237,7 +241,7 @@ DebugPrintEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_PRINT_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_PRINT_ENABLED) != 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -258,7 +262,7 @@ DebugCodeEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_CODE_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_CODE_ENABLED) != 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -279,5 +283,5 @@ DebugClearMemoryEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED) != 0);
|
||||
}
|
||||
|
|
|
@ -123,7 +123,7 @@ PostCodeEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -146,5 +146,5 @@ PostCodeDescriptionEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
|
||||
}
|
||||
|
|
|
@ -178,6 +178,7 @@ GetFirstGuidHob (
|
|||
@return The address of new HOB.
|
||||
|
||||
**/
|
||||
STATIC
|
||||
VOID *
|
||||
InternalPeiCreateHob (
|
||||
IN UINT16 Type,
|
||||
|
|
|
@ -48,7 +48,7 @@ IoOr8 (
|
|||
IN UINT8 OrData
|
||||
)
|
||||
{
|
||||
return IoWrite8 (Port, IoRead8 (Port) | OrData);
|
||||
return IoWrite8 (Port, (UINT8) (IoRead8 (Port) | OrData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -76,7 +76,7 @@ IoAnd8 (
|
|||
IN UINT8 AndData
|
||||
)
|
||||
{
|
||||
return IoWrite8 (Port, IoRead8 (Port) & AndData);
|
||||
return IoWrite8 (Port, (UINT8) (IoRead8 (Port) & AndData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -107,7 +107,7 @@ IoAndThenOr8 (
|
|||
IN UINT8 OrData
|
||||
)
|
||||
{
|
||||
return IoWrite8 (Port, (IoRead8 (Port) & AndData) | OrData);
|
||||
return IoWrite8 (Port, (UINT8) ((IoRead8 (Port) & AndData) | OrData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -328,7 +328,7 @@ IoOr16 (
|
|||
IN UINT16 OrData
|
||||
)
|
||||
{
|
||||
return IoWrite16 (Port, IoRead16 (Port) | OrData);
|
||||
return IoWrite16 (Port, (UINT16) (IoRead16 (Port) | OrData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -356,7 +356,7 @@ IoAnd16 (
|
|||
IN UINT16 AndData
|
||||
)
|
||||
{
|
||||
return IoWrite16 (Port, IoRead16 (Port) & AndData);
|
||||
return IoWrite16 (Port, (UINT16) (IoRead16 (Port) & AndData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -387,7 +387,7 @@ IoAndThenOr16 (
|
|||
IN UINT16 OrData
|
||||
)
|
||||
{
|
||||
return IoWrite16 (Port, (IoRead16 (Port) & AndData) | OrData);
|
||||
return IoWrite16 (Port, (UINT16) ((IoRead16 (Port) & AndData) | OrData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1168,7 +1168,7 @@ MmioOr8 (
|
|||
IN UINT8 OrData
|
||||
)
|
||||
{
|
||||
return MmioWrite8 (Address, MmioRead8 (Address) | OrData);
|
||||
return MmioWrite8 (Address, (UINT8) (MmioRead8 (Address) | OrData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1196,7 +1196,7 @@ MmioAnd8 (
|
|||
IN UINT8 AndData
|
||||
)
|
||||
{
|
||||
return MmioWrite8 (Address, MmioRead8 (Address) & AndData);
|
||||
return MmioWrite8 (Address, (UINT8) (MmioRead8 (Address) & AndData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1228,7 +1228,7 @@ MmioAndThenOr8 (
|
|||
IN UINT8 OrData
|
||||
)
|
||||
{
|
||||
return MmioWrite8 (Address, (MmioRead8 (Address) & AndData) | OrData);
|
||||
return MmioWrite8 (Address, (UINT8) ((MmioRead8 (Address) & AndData) | OrData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1450,7 +1450,7 @@ MmioOr16 (
|
|||
IN UINT16 OrData
|
||||
)
|
||||
{
|
||||
return MmioWrite16 (Address, MmioRead16 (Address) | OrData);
|
||||
return MmioWrite16 (Address, (UINT16) (MmioRead16 (Address) | OrData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1478,7 +1478,7 @@ MmioAnd16 (
|
|||
IN UINT16 AndData
|
||||
)
|
||||
{
|
||||
return MmioWrite16 (Address, MmioRead16 (Address) & AndData);
|
||||
return MmioWrite16 (Address, (UINT16) (MmioRead16 (Address) & AndData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1510,7 +1510,7 @@ MmioAndThenOr16 (
|
|||
IN UINT16 OrData
|
||||
)
|
||||
{
|
||||
return MmioWrite16 (Address, (MmioRead16 (Address) & AndData) | OrData);
|
||||
return MmioWrite16 (Address, (UINT16) ((MmioRead16 (Address) & AndData) | OrData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
**/
|
||||
|
||||
#include "MemoryAllocationLibInternals.h"
|
||||
|
||||
/**
|
||||
Allocates one or more 4KB pages of a certain memory type.
|
||||
|
|
|
@ -0,0 +1,200 @@
|
|||
/** @file
|
||||
Internal include file of PEI Memory Allocation Library.
|
||||
|
||||
Copyright (c) 2006, 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.
|
||||
|
||||
Module Name: MemoryAllocationLibInternals.h
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __PEI_MEMORY_ALLOCATION_LIB_INTERNALS_H__
|
||||
#define __PEI_MEMORY_ALLOCATION_LIB_INTERNALS_H__
|
||||
|
||||
/**
|
||||
Allocates one or more 4KB pages of a certain memory type.
|
||||
|
||||
Allocates the number of 4KB pages of a certain memory type and returns a pointer to the allocated
|
||||
buffer. The buffer returned is aligned on a 4KB boundary. If Pages is 0, then NULL is returned.
|
||||
If there is not enough memory remaining to satisfy the request, then NULL is returned.
|
||||
|
||||
@param MemoryType The type of memory to allocate.
|
||||
@param Pages The number of 4 KB pages to allocate.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
InternalAllocatePages (
|
||||
IN EFI_MEMORY_TYPE MemoryType,
|
||||
IN UINTN Pages
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates one or more 4KB pages of a certain memory type at a specified alignment.
|
||||
|
||||
Allocates the number of 4KB pages specified by Pages of a certain memory type with an alignment
|
||||
specified by Alignment. The allocated buffer is returned. If Pages is 0, then NULL is returned.
|
||||
If there is not enough memory at the specified alignment remaining to satisfy the request, then
|
||||
NULL is returned.
|
||||
If Alignment is not a power of two and Alignment is not zero, then ASSERT().
|
||||
|
||||
@param MemoryType The type of memory to allocate.
|
||||
@param Pages The number of 4 KB pages to allocate.
|
||||
@param Alignment The requested alignment of the allocation. Must be a power of two.
|
||||
If Alignment is zero, then byte alignment is used.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
InternalAllocateAlignedPages (
|
||||
IN EFI_MEMORY_TYPE MemoryType,
|
||||
IN UINTN Pages,
|
||||
IN UINTN Alignment
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates a buffer of a certain pool type.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of a certain pool type and returns a
|
||||
pointer to the allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is
|
||||
returned. If there is not enough memory remaining to satisfy the request, then NULL is returned.
|
||||
|
||||
@param MemoryType The type of memory to allocate.
|
||||
@param AllocationSize The number of bytes to allocate.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
InternalAllocatePool (
|
||||
IN EFI_MEMORY_TYPE MemoryType,
|
||||
IN UINTN AllocationSize
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates and zeros a buffer of a certian pool type.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of a certian pool type, clears the buffer
|
||||
with zeros, and returns a pointer to the allocated buffer. If AllocationSize is 0, then a valid
|
||||
buffer of 0 size is returned. If there is not enough memory remaining to satisfy the request,
|
||||
then NULL is returned.
|
||||
|
||||
@param PoolType The type of memory to allocate.
|
||||
@param AllocationSize The number of bytes to allocate and zero.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
InternalAllocateZeroPool (
|
||||
IN EFI_MEMORY_TYPE PoolType,
|
||||
IN UINTN AllocationSize
|
||||
);
|
||||
|
||||
/**
|
||||
Copies a buffer to an allocated buffer of a certian pool type.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of a certian pool type, copies
|
||||
AllocationSize bytes from Buffer to the newly allocated buffer, and returns a pointer to the
|
||||
allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is returned. If there
|
||||
is not enough memory remaining to satisfy the request, then NULL is returned.
|
||||
If Buffer is NULL, then ASSERT().
|
||||
If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().
|
||||
|
||||
@param PoolType The type of pool to allocate.
|
||||
@param AllocationSize The number of bytes to allocate and zero.
|
||||
@param Buffer The buffer to copy to the allocated buffer.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
InternalAllocateCopyPool (
|
||||
IN EFI_MEMORY_TYPE PoolType,
|
||||
IN UINTN AllocationSize,
|
||||
IN CONST VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates a buffer of a certain pool type at a specified alignment.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of a certain pool type with an alignment
|
||||
specified by Alignment. The allocated buffer is returned. If AllocationSize is 0, then a valid
|
||||
buffer of 0 size is returned. If there is not enough memory at the specified alignment remaining
|
||||
to satisfy the request, then NULL is returned.
|
||||
If Alignment is not a power of two and Alignment is not zero, then ASSERT().
|
||||
|
||||
@param PoolType The type of pool to allocate.
|
||||
@param AllocationSize The number of bytes to allocate.
|
||||
@param Alignment The requested alignment of the allocation. Must be a power of two. If Alignment is zero, then byte alignment is used.
|
||||
If Alignment is zero, then byte alignment is used.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
InternalAllocateAlignedPool (
|
||||
IN EFI_MEMORY_TYPE PoolType,
|
||||
IN UINTN AllocationSize,
|
||||
IN UINTN Alignment
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates and zeros a buffer of a certain pool type at a specified alignment.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of a certain pool type with an alignment
|
||||
specified by Alignment, clears the buffer with zeros, and returns a pointer to the allocated
|
||||
buffer. If AllocationSize is 0, then a valid buffer of 0 size is returned. If there is not
|
||||
enough memory at the specified alignment remaining to satisfy the request, then NULL is returned.
|
||||
If Alignment is not a power of two and Alignment is not zero, then ASSERT().
|
||||
|
||||
@param PoolType The type of pool to allocate.
|
||||
@param AllocationSize The number of bytes to allocate.
|
||||
@param Alignment The requested alignment of the allocation. Must be a power of two.
|
||||
If Alignment is zero, then byte alignment is used.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
InternalAllocateAlignedZeroPool (
|
||||
IN EFI_MEMORY_TYPE PoolType,
|
||||
IN UINTN AllocationSize,
|
||||
IN UINTN Alignment
|
||||
);
|
||||
|
||||
/**
|
||||
Copies a buffer to an allocated buffer of a certain pool type at a specified alignment.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of a certain pool type with an alignment
|
||||
specified by Alignment. The allocated buffer is returned. If AllocationSize is 0, then a valid
|
||||
buffer of 0 size is returned. If there is not enough memory at the specified alignment remaining
|
||||
to satisfy the request, then NULL is returned.
|
||||
If Alignment is not a power of two and Alignment is not zero, then ASSERT().
|
||||
|
||||
@param PoolType The type of pool to allocate.
|
||||
@param AllocationSize The number of bytes to allocate.
|
||||
@param Buffer The buffer to copy to the allocated buffer.
|
||||
@param Alignment The requested alignment of the allocation. Must be a power of two.
|
||||
If Alignment is zero, then byte alignment is used.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
InternalAllocateAlignedCopyPool (
|
||||
IN EFI_MEMORY_TYPE PoolType,
|
||||
IN UINTN AllocationSize,
|
||||
IN CONST VOID *Buffer,
|
||||
IN UINTN Alignment
|
||||
);
|
||||
|
||||
#endif
|
|
@ -38,6 +38,7 @@
|
|||
</LibraryClassDefinitions>
|
||||
<SourceFiles>
|
||||
<Filename>MemoryAllocationLib.c</Filename>
|
||||
<Filename>MemoryAllocationLibInternals.h</Filename>
|
||||
</SourceFiles>
|
||||
<PackageDependencies>
|
||||
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
|
||||
**/
|
||||
|
||||
#include "MemLibInternals.h"
|
||||
|
||||
VOID *
|
||||
EFIAPI
|
||||
InternalMemCopyMem (
|
||||
|
|
|
@ -77,12 +77,17 @@ CompareGuid (
|
|||
IN CONST GUID *Guid2
|
||||
)
|
||||
{
|
||||
return (BOOLEAN)(
|
||||
ReadUnaligned64 ((CONST UINT64*)Guid1)
|
||||
== ReadUnaligned64 ((CONST UINT64*)Guid2) &&
|
||||
ReadUnaligned64 ((CONST UINT64*)Guid1 + 1)
|
||||
== ReadUnaligned64 ((CONST UINT64*)Guid2 + 1)
|
||||
);
|
||||
UINT64 LowPartOfGuid1;
|
||||
UINT64 LowPartOfGuid2;
|
||||
UINT64 HighPartOfGuid1;
|
||||
UINT64 HighPartOfGuid2;
|
||||
|
||||
LowPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1);
|
||||
LowPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2);
|
||||
HighPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1 + 1);
|
||||
HighPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2 + 1);
|
||||
|
||||
return (BOOLEAN) (LowPartOfGuid1 == LowPartOfGuid2 && HighPartOfGuid1 == HighPartOfGuid2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -25,6 +25,7 @@ Module Name: PeiPcdLib.c
|
|||
@retval PCD_PPI * The pointer to the PCD_PPI.
|
||||
|
||||
**/
|
||||
STATIC
|
||||
PCD_PPI *
|
||||
GetPcdPpiPtr (
|
||||
VOID
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
@retval EFI_UNSUPPORTED Status Code Protocol is not available.
|
||||
|
||||
**/
|
||||
STATIC
|
||||
EFI_STATUS
|
||||
InternalReportStatusCode (
|
||||
IN EFI_STATUS_CODE_TYPE Type,
|
||||
|
@ -102,8 +103,8 @@ CodeTypeToPostCode (
|
|||
//
|
||||
if (((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_PROGRESS_CODE) ||
|
||||
((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_ERROR_CODE) ) {
|
||||
*PostCode = (UINT8) (((Value & EFI_STATUS_CODE_CLASS_MASK) >> 24) << 5);
|
||||
*PostCode |= (UINT8) (((Value & EFI_STATUS_CODE_SUBCLASS_MASK) >> 16) & 0x1f);
|
||||
*PostCode = (UINT8) ((((Value & EFI_STATUS_CODE_CLASS_MASK) >> 24) << 5) |
|
||||
(((Value & EFI_STATUS_CODE_SUBCLASS_MASK) >> 16) & 0x1f));
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
@ -468,7 +469,7 @@ ReportProgressCodeEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_PROGRESS_CODE_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_PROGRESS_CODE_ENABLED) != 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -490,7 +491,7 @@ ReportErrorCodeEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_ERROR_CODE_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_ERROR_CODE_ENABLED) != 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -512,5 +513,5 @@ ReportDebugCodeEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_DEBUG_CODE_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_DEBUG_CODE_ENABLED) != 0);
|
||||
}
|
||||
|
|
|
@ -20,30 +20,7 @@ Abstract:
|
|||
|
||||
--*/
|
||||
|
||||
|
||||
/**
|
||||
Reads the current value of Kr1.
|
||||
|
||||
@return The current value of Kr1.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
AsmReadKr1 (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
Writes the current value of Kr1.
|
||||
|
||||
@param Value The 64-bit value to write to Kr1.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
AsmWriteKr1 (
|
||||
IN UINT64 Value
|
||||
);
|
||||
#include "PeiServicesTablePointerLibInternals.h"
|
||||
|
||||
/**
|
||||
The function returns the pointer to PeiServices.
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
/** @file
|
||||
Include file for internal functions of PEI Services table pointer libary.
|
||||
|
||||
Copyright (c) 2006, 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.
|
||||
|
||||
Module Name: PeiServicesTablePointerLibInternals.h
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __PEI_SERVICES_TABLE_POINTER_LIB_INTERTALS_H__
|
||||
#define __PEI_SERVICES_TABLE_POINTER_LIB_INTERTALS_H__
|
||||
|
||||
/**
|
||||
Reads the current value of Kr1.
|
||||
|
||||
@return The current value of Kr1.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
AsmReadKr1 (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
Writes the current value of Kr1.
|
||||
|
||||
@param Value The 64-bit value to write to Kr1.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
AsmWriteKr1 (
|
||||
IN UINT64 Value
|
||||
);
|
||||
|
||||
#endif
|
|
@ -35,6 +35,7 @@
|
|||
</LibraryClassDefinitions>
|
||||
<SourceFiles>
|
||||
<Filename>PeiServicesTablePointer.c</Filename>
|
||||
<Filename>PeiServicesTablePointerLibInternals.h</Filename>
|
||||
<Filename SupArchList="IPF">Ipf/ReadKr1.s</Filename>
|
||||
<Filename SupArchList="IPF">Ipf/WriteKr1.s</Filename>
|
||||
</SourceFiles>
|
||||
|
|
|
@ -25,6 +25,22 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||
//
|
||||
// Declaration for internal functions
|
||||
//
|
||||
|
||||
/**
|
||||
Gets Smbus PPIs.
|
||||
|
||||
This internal function retrieves Smbus PPI from PPI database.
|
||||
|
||||
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES published by the PEI Foundation.
|
||||
|
||||
@return The pointer to Smbus PPI.
|
||||
|
||||
**/
|
||||
EFI_PEI_SMBUS_PPI *
|
||||
InternalGetSmbusPpi (
|
||||
EFI_PEI_SERVICES **PeiServices
|
||||
);
|
||||
|
||||
/**
|
||||
Executes an SMBus operation to an SMBus controller.
|
||||
|
||||
|
|
|
@ -180,7 +180,7 @@ DebugAssertEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED) != 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -201,7 +201,7 @@ DebugPrintEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_PRINT_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_PRINT_ENABLED) != 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -222,7 +222,7 @@ DebugCodeEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_CODE_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_CODE_ENABLED) != 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -243,5 +243,5 @@ DebugClearMemoryEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED) != 0);
|
||||
}
|
||||
|
|
|
@ -180,7 +180,7 @@ DebugAssertEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED) != 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -201,7 +201,7 @@ DebugPrintEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_PRINT_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_PRINT_ENABLED) != 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -222,7 +222,7 @@ DebugCodeEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_CODE_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_DEBUG_CODE_ENABLED) != 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -243,5 +243,5 @@ DebugClearMemoryEnabled (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
return ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED) != 0);
|
||||
return (BOOLEAN) ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED) != 0);
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ EFI_EVENT _mDriverExitBootServicesNotifyEvent;
|
|||
@retval EFI_SUCCESS
|
||||
|
||||
**/
|
||||
STATIC
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
_DriverUnloadHandler (
|
||||
|
@ -70,6 +71,7 @@ _DriverUnloadHandler (
|
|||
@param Context Event Context.
|
||||
|
||||
**/
|
||||
STATIC
|
||||
VOID
|
||||
EFIAPI
|
||||
_DriverExitBootServices (
|
||||
|
|
|
@ -24,13 +24,20 @@
|
|||
@retval FALSE Language 1 and language 2 are not the same.
|
||||
|
||||
**/
|
||||
STATIC
|
||||
BOOLEAN
|
||||
CompareIso639LanguageCode (
|
||||
IN CONST CHAR8 *Language1,
|
||||
IN CONST CHAR8 *Language2
|
||||
)
|
||||
{
|
||||
return (BOOLEAN) (ReadUnaligned24 ((CONST UINT32 *) Language1) == ReadUnaligned24 ((CONST UINT32 *) Language2));
|
||||
UINT32 Name1;
|
||||
UINT32 Name2;
|
||||
|
||||
Name1 = ReadUnaligned24 ((CONST UINT32 *) Language1);
|
||||
Name2 = ReadUnaligned24 ((CONST UINT32 *) Language2);
|
||||
|
||||
return (BOOLEAN) (Name1 == Name2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -25,6 +25,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||
checked correctly since it is now mapped into CreateEventEx() in UEFI 2.0.
|
||||
|
||||
**/
|
||||
STATIC
|
||||
VOID
|
||||
EFIAPI
|
||||
InternalEmptyFuntion (
|
||||
|
|
Loading…
Reference in New Issue