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:
xli24 2007-01-25 06:05:36 +00:00
parent ba3a1cb5bb
commit 582510249f
65 changed files with 1441 additions and 400 deletions

View File

@ -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)
/**

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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);
}
/**

View File

@ -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.

View File

@ -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));
}
/**

View File

@ -14,6 +14,8 @@
**/
#include "BaseLibInternals.h"
/**
Worker function that locates the Node in the List

View File

@ -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().

View File

@ -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);
}
/**

View File

@ -14,6 +14,8 @@
**/
#include "BaseLibInternals.h"
/**
Worker function that checks ASSERT condition for JumpBuffer

View File

@ -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));
}

View File

@ -32,5 +32,5 @@ SwapBytes16 (
IN UINT16 Operand
)
{
return (Operand << 8) | (Operand >> 8);
return (UINT16) ((Operand << 8) | (Operand >> 8));
}

View File

@ -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);
}

View File

@ -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,

View File

@ -17,6 +17,8 @@
**/
#include "MemLibInternals.h"
/**
Copy Length bytes from Source to Destination.

View File

@ -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);
}
/**

View File

@ -17,6 +17,7 @@
**/
#include "MemLibInternals.h"
/**
Set Buffer to Value for Size bytes.

View File

@ -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);
}
/**

View File

@ -40,6 +40,7 @@
@return The base address of PCI Express.
**/
STATIC
volatile VOID*
GetPciExpressBaseAddress (
VOID

View File

@ -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.

View File

@ -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>

View File

@ -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

View File

@ -14,7 +14,7 @@
**/
#include "BasePeCoffLibInternals.h"

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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.

View File

@ -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 ;
}

View File

@ -34,6 +34,7 @@
</LibraryClassDefinitions>
<SourceFiles>
<Filename>BaseUefiDecompressLib.c</Filename>
<Filename>BaseUefiDecompressLibInternals.h</Filename>
</SourceFiles>
<PackageDependencies>
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>

View File

@ -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

View File

@ -35,6 +35,7 @@
</LibraryClassDefinitions>
<SourceFiles>
<Filename>HobLib.c</Filename>
<Filename>HobLib.h</Filename>
</SourceFiles>
<PackageDependencies>
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>

View File

@ -14,10 +14,7 @@
**/
extern VOID *gHobList;
#include "HobLib.h"
/**
Returns the pointer to the HOB list.

View File

@ -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

View File

@ -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

View File

@ -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"/>

View File

@ -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));
}
/**

View File

@ -14,6 +14,8 @@
**/
#include "DxeCpuIoLibInternal.h"
//
// Globle varible to cache pointer to CpuIo protocol.
//

View File

@ -38,6 +38,7 @@
</LibraryClassDefinitions>
<SourceFiles>
<Filename>MemoryAllocationLib.c</Filename>
<Filename>MemoryAllocationLibInternals.h</Filename>
</SourceFiles>
<PackageDependencies>
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>

View File

@ -14,6 +14,7 @@
**/
#include "MemoryAllocationLibInternals.h"
/**
Allocates one or more 4KB pages of a certain memory type.

View File

@ -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

View File

@ -14,6 +14,8 @@
**/
#include "MemLibInternals.h"
VOID *
EFIAPI
InternalMemCopyMem (

View File

@ -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);
}
/**

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -178,6 +178,7 @@ GetFirstGuidHob (
@return The address of new HOB.
**/
STATIC
VOID *
InternalPeiCreateHob (
IN UINT16 Type,

View File

@ -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));
}
/**

View File

@ -14,6 +14,7 @@
**/
#include "MemoryAllocationLibInternals.h"
/**
Allocates one or more 4KB pages of a certain memory type.

View File

@ -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

View File

@ -38,6 +38,7 @@
</LibraryClassDefinitions>
<SourceFiles>
<Filename>MemoryAllocationLib.c</Filename>
<Filename>MemoryAllocationLibInternals.h</Filename>
</SourceFiles>
<PackageDependencies>
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>

View File

@ -14,6 +14,8 @@
**/
#include "MemLibInternals.h"
VOID *
EFIAPI
InternalMemCopyMem (

View File

@ -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);
}
/**

View File

@ -25,6 +25,7 @@ Module Name: PeiPcdLib.c
@retval PCD_PPI * The pointer to the PCD_PPI.
**/
STATIC
PCD_PPI *
GetPcdPpiPtr (
VOID

View File

@ -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);
}

View File

@ -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.

View File

@ -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

View File

@ -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>

View File

@ -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.

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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 (

View File

@ -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);
}
/**

View File

@ -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 (