Code Scrub for MdePkg.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5567 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
yshang1
2008-07-25 12:21:57 +00:00
parent 0f82bd5514
commit 42eedea958
176 changed files with 1437 additions and 253 deletions

View File

@@ -265,7 +265,7 @@ EFIAPI
InternalMathDivRemU64x32 (
IN UINT64 Dividend,
IN UINT32 Divisor,
OUT UINT32 *Remainder
OUT UINT32 *Remainder OPTIONAL
);
/**
@@ -290,7 +290,7 @@ EFIAPI
InternalMathDivRemU64x64 (
IN UINT64 Dividend,
IN UINT64 Divisor,
OUT UINT64 *Remainder
OUT UINT64 *Remainder OPTIONAL
);
/**

View File

@@ -18,7 +18,11 @@
#include "BaseLibInternals.h"
VOID __chkstk() {
/**
Hack function for passing GCC build.
**/
VOID
__chkstk()
{
}

View File

@@ -17,6 +17,19 @@
//
/**
Shifts a 64-bit integer right between 0 and 63 bits. The high bits
are filled with original integer's bit 63. The shifted value is returned.
This function shifts the 64-bit value Operand to the right by Count bits. The
high Count bits are set to bit 63 of Operand. The shifted value is returned.
@param Operand The 64-bit operand to shift right.
@param Count The number of bits to shift right.
@return Operand arithmetically shifted right by Count
**/
UINT64
EFIAPI
InternalMathARShiftU64 (

View File

@@ -17,13 +17,20 @@
//
//
// Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics
//
/**
Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics.
**/
void __debugbreak ();
#pragma intrinsic(__debugbreak)
/**
Generates a breakpoint on the CPU.
Generates a breakpoint on the CPU. The breakpoint must be implemented such
that code can resume normal execution after the breakpoint.
**/
VOID
EFIAPI
CpuBreakpoint (

View File

@@ -17,6 +17,31 @@
//
/**
Retrieves CPUID information.
Executes the CPUID instruction with EAX set to the value specified by Index.
This function always returns Index.
If Eax is not NULL, then the value of EAX after CPUID is returned in Eax.
If Ebx is not NULL, then the value of EBX after CPUID is returned in Ebx.
If Ecx is not NULL, then the value of ECX after CPUID is returned in Ecx.
If Edx is not NULL, then the value of EDX after CPUID is returned in Edx.
This function is only available on IA-32 and X64.
@param Index The 32-bit value to load into EAX prior to invoking the CPUID
instruction.
@param Eax Pointer to the 32-bit EAX value returned by the CPUID
instruction. This is an optional parameter that may be NULL.
@param Ebx Pointer to the 32-bit EBX value returned by the CPUID
instruction. This is an optional parameter that may be NULL.
@param Ecx Pointer to the 32-bit ECX value returned by the CPUID
instruction. This is an optional parameter that may be NULL.
@param Edx Pointer to the 32-bit EDX value returned by the CPUID
instruction. This is an optional parameter that may be NULL.
@return Index
**/
UINT32
EFIAPI
AsmCpuid (

View File

@@ -17,6 +17,38 @@
//
/**
Retrieves CPUID information using an extended leaf identifier.
Executes the CPUID instruction with EAX set to the value specified by Index
and ECX set to the value specified by SubIndex. This function always returns
Index. This function is only available on IA-32 and x64.
If Eax is not NULL, then the value of EAX after CPUID is returned in Eax.
If Ebx is not NULL, then the value of EBX after CPUID is returned in Ebx.
If Ecx is not NULL, then the value of ECX after CPUID is returned in Ecx.
If Edx is not NULL, then the value of EDX after CPUID is returned in Edx.
@param Index The 32-bit value to load into EAX prior to invoking the
CPUID instruction.
@param SubIndex The 32-bit value to load into ECX prior to invoking the
CPUID instruction.
@param Eax Pointer to the 32-bit EAX value returned by the CPUID
instruction. This is an optional parameter that may be
NULL.
@param Ebx Pointer to the 32-bit EBX value returned by the CPUID
instruction. This is an optional parameter that may be
NULL.
@param Ecx Pointer to the 32-bit ECX value returned by the CPUID
instruction. This is an optional parameter that may be
NULL.
@param Edx Pointer to the 32-bit EDX value returned by the CPUID
instruction. This is an optional parameter that may be
NULL.
@return Index
**/
UINT32
EFIAPI
AsmCpuidEx (

View File

@@ -17,6 +17,13 @@
//
/**
Requests CPU to pause for a short period of time.
Requests CPU to pause for a short period of time. Typically used in MP
systems to prevent memory starvation while waiting for a spin lock.
**/
VOID
EFIAPI
CpuPause (

View File

@@ -17,6 +17,14 @@
//
/**
Places the CPU in a sleep state until an interrupt is received.
Places the CPU in a sleep state until an interrupt is received. If interrupts
are disabled prior to calling this function, then the CPU will be placed in a
sleep state indefinitely.
**/
VOID
EFIAPI
CpuSleep (

View File

@@ -17,6 +17,10 @@
//
/**
Disables CPU interrupts.
**/
VOID
EFIAPI
DisableInterrupts (

View File

@@ -19,6 +19,36 @@
#if _MSC_EXTENSIONS
/**
Disables the 32-bit paging mode on the CPU.
Disables the 32-bit paging mode on the CPU and returns to 32-bit protected
mode. This function assumes the current execution mode is 32-paged protected
mode. This function is only available on IA-32. After the 32-bit paging mode
is disabled, control is transferred to the function specified by EntryPoint
using the new stack specified by NewStack and passing in the parameters
specified by Context1 and Context2. Context1 and Context2 are optional and
may be NULL. The function EntryPoint must never return.
There are a number of constraints that must be followed before calling this
function:
1) Interrupts must be disabled.
2) The caller must be in 32-bit paged mode.
3) CR0, CR3, and CR4 must be compatible with 32-bit paged mode.
4) CR3 must point to valid page tables that guarantee that the pages for
this function and the stack are identity mapped.
@param EntryPoint A pointer to function to call with the new stack after
paging is disabled.
@param Context1 A pointer to the context to pass into the EntryPoint
function as the first parameter after paging is disabled.
@param Context2 A pointer to the context to pass into the EntryPoint
function as the second parameter after paging is
disabled.
@param NewStack A pointer to the new stack to use for the EntryPoint
function after paging is disabled.
**/
__declspec (naked)
VOID
EFIAPI

View File

@@ -17,6 +17,20 @@
//
/**
Divides a 64-bit unsigned integer by a 32-bit unsigned integer and
generates a 64-bit unsigned result.
This function divides the 64-bit unsigned value Dividend by the 32-bit
unsigned value Divisor and generates a 64-bit unsigned quotient. This
function returns the 64-bit unsigned quotient.
@param Dividend A 64-bit unsigned value.
@param Divisor A 32-bit unsigned value.
@return Dividend / Divisor
**/
UINT64
EFIAPI
InternalMathDivU64x32 (

View File

@@ -17,6 +17,23 @@
//
/**
Divides a 64-bit unsigned integer by a 32-bit unsigned integer and
generates a 64-bit unsigned result and an optional 32-bit unsigned remainder.
This function divides the 64-bit unsigned value Dividend by the 32-bit
unsigned value Divisor and generates a 64-bit unsigned quotient. If Remainder
is not NULL, then the 32-bit unsigned remainder is returned in Remainder.
This function returns the 64-bit unsigned quotient.
@param Dividend A 64-bit unsigned value.
@param Divisor A 32-bit unsigned value.
@param Remainder A pointer to a 32-bit unsigned value. This parameter is
optional and may be NULL.
@return Dividend / Divisor
**/
UINT64
EFIAPI
InternalMathDivRemU64x32 (

View File

@@ -17,6 +17,11 @@
//
/**
Enables CPU interrupts for the smallest window required to capture any
pending interrupts.
**/
VOID
EFIAPI
EnableDisableInterrupts (

View File

@@ -17,6 +17,10 @@
//
/**
Enables CPU interrupts.
**/
VOID
EFIAPI
EnableInterrupts (

View File

@@ -19,6 +19,39 @@
#if _MSC_EXTENSIONS
/**
Enables the 32-bit paging mode on the CPU.
Enables the 32-bit paging mode on the CPU. CR0, CR3, CR4, and the page tables
must be properly initialized prior to calling this service. This function
assumes the current execution mode is 32-bit protected mode. This function is
only available on IA-32. After the 32-bit paging mode is enabled, control is
transferred to the function specified by EntryPoint using the new stack
specified by NewStack and passing in the parameters specified by Context1 and
Context2. Context1 and Context2 are optional and may be NULL. The function
EntryPoint must never return.
There are a number of constraints that must be followed before calling this
function:
1) Interrupts must be disabled.
2) The caller must be in 32-bit protected mode with flat descriptors. This
means all descriptors must have a base of 0 and a limit of 4GB.
3) CR0 and CR4 must be compatible with 32-bit protected mode with flat
descriptors.
4) CR3 must point to valid page tables that will be used once the transition
is complete, and those page tables must guarantee that the pages for this
function and the stack are identity mapped.
@param EntryPoint A pointer to function to call with the new stack after
paging is enabled.
@param Context1 A pointer to the context to pass into the EntryPoint
function as the first parameter after paging is enabled.
@param Context2 A pointer to the context to pass into the EntryPoint
function as the second parameter after paging is enabled.
@param NewStack A pointer to the new stack to use for the EntryPoint
function after paging is enabled.
**/
__declspec (naked)
VOID
EFIAPI

View File

@@ -17,6 +17,21 @@
//
/**
Flushes a cache line from all the instruction and data caches within the
coherency domain of the CPU.
Flushed the cache line specified by LinearAddress, and returns LinearAddress.
This function is only available on IA-32 and X64.
@param LinearAddress The address of the cache line to flush. If the CPU is
in a physical addressing mode, then LinearAddress is a
physical address. If the CPU is in a virtual
addressing mode, then LinearAddress is a virtual
address.
@return LinearAddress
**/
VOID *
EFIAPI
AsmFlushCacheLine (

View File

@@ -18,6 +18,16 @@
#include <BaseLibInternals.h>
/**
Restores the current floating point/SSE/SSE2 context from a buffer.
Restores the current floating point/SSE/SSE2 state from the buffer specified
by Buffer. Buffer must be aligned on a 16-byte boundary. This function is
only available on IA-32 and X64.
@param Buffer Pointer to a buffer to save the floating point/SSE/SSE2 context.
**/
VOID
EFIAPI
InternalX86FxRestore (

View File

@@ -18,6 +18,16 @@
#include <BaseLibInternals.h>
/**
Save the current floating point/SSE/SSE2 context to a buffer.
Saves the current floating point/SSE/SSE2 state to the buffer specified by
Buffer. Buffer must be aligned on a 16-byte boundary. This function is only
available on IA-32 and X64.
@param Buffer Pointer to a buffer to save the floating point/SSE/SSE2 context.
**/
VOID
EFIAPI
InternalX86FxSave (

View File

@@ -17,6 +17,23 @@
//
/**
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 (

View File

@@ -17,6 +17,22 @@
//
/**
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 (

View File

@@ -17,6 +17,19 @@
//
/**
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 (

View File

@@ -17,6 +17,19 @@
//
/**
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 (

View File

@@ -17,6 +17,13 @@
//
/**
Executes a INVD instruction.
Executes a INVD instruction. This function is only available on IA-32 and
X64.
**/
VOID
EFIAPI
AsmInvd (

View File

@@ -17,6 +17,20 @@
//
/**
Rotates a 64-bit integer left between 0 and 63 bits, filling
the low bits with the high bits that were rotated.
This function rotates the 64-bit value Operand to the left by Count bits. The
low Count bits are fill with the high Count bits of Operand. The rotated
value is returned.
@param Operand The 64-bit operand to rotate left.
@param Count The number of bits to rotate left.
@return Operand <<< Count
**/
UINT64
EFIAPI
InternalMathLRotU64 (

View File

@@ -17,6 +17,19 @@
//
/**
Shifts a 64-bit integer left between 0 and 63 bits. The low bits
are filled with zeros. The shifted value is returned.
This function shifts the 64-bit value Operand to the left by Count bits. The
low Count bits are set to zero. The shifted value is returned.
@param Operand The 64-bit operand to shift left.
@param Count The number of bits to shift left.
@return Operand << Count
**/
UINT64
EFIAPI
InternalMathLShiftU64 (

View File

@@ -18,6 +18,17 @@
#include <BaseLibInternals.h>
/**
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.
**/
__declspec (naked)
VOID
EFIAPI

View File

@@ -17,6 +17,20 @@
//
/**
Divides a 64-bit unsigned integer by a 32-bit unsigned integer and
generates a 32-bit unsigned remainder.
This function divides the 64-bit unsigned value Dividend by the 32-bit
unsigned value Divisor and generates a 32-bit remainder. This function
returns the 32-bit unsigned remainder.
@param Dividend A 64-bit unsigned value.
@param Divisor A 32-bit unsigned value.
@return Dividend % Divisor
**/
UINT32
EFIAPI
InternalMathModU64x32 (

View File

@@ -17,6 +17,22 @@
//
/**
Sets up a monitor buffer that is used by AsmMwait().
Executes a MONITOR instruction with the register state specified by Eax, Ecx
and Edx. Returns Eax. This function is only available on IA-32 and X64.
@param Eax The value to load into EAX or RAX before executing the MONITOR
instruction.
@param Ecx The value to load into ECX or RCX before executing the MONITOR
instruction.
@param Edx The value to load into EDX or RDX before executing the MONITOR
instruction.
@return Eax
**/
UINTN
EFIAPI
AsmMonitor (

View File

@@ -17,6 +17,20 @@
//
/**
Multiples a 64-bit unsigned integer by a 32-bit unsigned integer
and generates a 64-bit unsigned result.
This function multiples the 64-bit unsigned value Multiplicand by the 32-bit
unsigned value Multiplier and generates a 64-bit unsigned result. This 64-
bit unsigned result is returned.
@param Multiplicand A 64-bit unsigned value.
@param Multiplier A 32-bit unsigned value.
@return Multiplicand * Multiplier
**/
UINT64
EFIAPI
InternalMathMultU64x32 (

View File

@@ -17,6 +17,20 @@
//
/**
Multiples a 64-bit unsigned integer by a 64-bit unsigned integer
and generates a 64-bit unsigned result.
This function multiples the 64-bit unsigned value Multiplicand by the 64-bit
unsigned value Multiplier and generates a 64-bit unsigned result. This 64-
bit unsigned result is returned.
@param Multiplicand A 64-bit unsigned value.
@param Multiplier A 64-bit unsigned value.
@return Multiplicand * Multiplier
**/
UINT64
EFIAPI
InternalMathMultU64x64 (

View File

@@ -17,6 +17,20 @@
//
/**
Executes an MWAIT instruction.
Executes an MWAIT instruction with the register state specified by Eax and
Ecx. Returns Eax. This function is only available on IA-32 and X64.
@param Eax The value to load into EAX or RAX before executing the MONITOR
instruction.
@param Ecx The value to load into ECX or RCX before executing the MONITOR
instruction.
@return Eax
**/
UINTN
EFIAPI
AsmMwait (

View File

@@ -17,6 +17,20 @@
//
/**
Rotates a 64-bit integer right between 0 and 63 bits, filling
the high bits with the high low bits that were rotated.
This function rotates the 64-bit value Operand to the right by Count bits.
The high Count bits are fill with the low Count bits of Operand. The rotated
value is returned.
@param Operand The 64-bit operand to rotate right.
@param Count The number of bits to rotate right.
@return Operand >>> Count
**/
UINT64
EFIAPI
InternalMathRRotU64 (

View File

@@ -17,6 +17,19 @@
//
/**
Shifts a 64-bit integer right between 0 and 63 bits. This high bits
are filled with zeros. The shifted value is returned.
This function shifts the 64-bit value Operand to the right by Count bits. The
high Count bits are set to zero. The shifted value is returned.
@param Operand The 64-bit operand to shift right.
@param Count The number of bits to shift right.
@return Operand >> Count
**/
UINT64
EFIAPI
InternalMathRShiftU64 (

View File

@@ -17,6 +17,16 @@
//
/**
Reads the current value of the Control Register 0 (CR0).
Reads and returns the current value of CR4. This function is only available
on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on
X64.
@return The value of the Control Register 0 (CR0).
**/
UINTN
EFIAPI
AsmReadCr0 (

View File

@@ -17,6 +17,16 @@
//
/**
Reads the current value of the Control Register 2 (CR2).
Reads and returns the current value of CR2. This function is only available
on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on
X64.
@return The value of the Control Register 2 (CR2).
**/
UINTN
EFIAPI
AsmReadCr2 (

View File

@@ -17,6 +17,16 @@
//
/**
Reads the current value of the Control Register 3 (CR3).
Reads and returns the current value of CR3. This function is only available
on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on
X64.
@return The value of the Control Register 3 (CR3).
**/
UINTN
EFIAPI
AsmReadCr3 (

View File

@@ -17,6 +17,16 @@
//
/**
Reads the current value of the Control Register 4 (CR4).
Reads and returns the current value of CR4. This function is only available
on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on
X64.
@return The value of the Control Register 4 (CR4).
**/
UINTN
EFIAPI
AsmReadCr4 (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current value of Code Segment Register (CS).
Reads and returns the current value of CS. This function is only available on
IA-32 and X64.
@return The current value of CS.
**/
UINT16
EFIAPI
AsmReadCs (

View File

@@ -17,6 +17,16 @@
//
/**
Reads the current value of Debug Register 0 (DR0).
Reads and returns the current value of DR0. This function is only available
on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on
X64.
@return The value of Debug Register 0 (DR0).
**/
UINTN
EFIAPI
AsmReadDr0 (

View File

@@ -17,6 +17,16 @@
//
/**
Reads the current value of Debug Register 1 (DR1).
Reads and returns the current value of DR1. This function is only available
on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on
X64.
@return The value of Debug Register 1 (DR1).
**/
UINTN
EFIAPI
AsmReadDr1 (

View File

@@ -17,6 +17,16 @@
//
/**
Reads the current value of Debug Register 2 (DR2).
Reads and returns the current value of DR2. This function is only available
on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on
X64.
@return The value of Debug Register 2 (DR2).
**/
UINTN
EFIAPI
AsmReadDr2 (

View File

@@ -17,6 +17,16 @@
//
/**
Reads the current value of Debug Register 3 (DR3).
Reads and returns the current value of DR3. This function is only available
on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on
X64.
@return The value of Debug Register 3 (DR3).
**/
UINTN
EFIAPI
AsmReadDr3 (

View File

@@ -17,6 +17,16 @@
//
/**
Reads the current value of Debug Register 4 (DR4).
Reads and returns the current value of DR4. This function is only available
on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on
X64.
@return The value of Debug Register 4 (DR4).
**/
UINTN
EFIAPI
AsmReadDr4 (

View File

@@ -17,6 +17,16 @@
//
/**
Reads the current value of Debug Register 5 (DR5).
Reads and returns the current value of DR5. This function is only available
on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on
X64.
@return The value of Debug Register 5 (DR5).
**/
UINTN
EFIAPI
AsmReadDr5 (

View File

@@ -17,6 +17,16 @@
//
/**
Reads the current value of Debug Register 6 (DR6).
Reads and returns the current value of DR6. This function is only available
on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on
X64.
@return The value of Debug Register 6 (DR6).
**/
UINTN
EFIAPI
AsmReadDr6 (

View File

@@ -17,6 +17,16 @@
//
/**
Reads the current value of Debug Register 7 (DR7).
Reads and returns the current value of DR7. This function is only available
on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on
X64.
@return The value of Debug Register 7 (DR7).
**/
UINTN
EFIAPI
AsmReadDr7 (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current value of Data Segment Register (DS).
Reads and returns the current value of DS. This function is only available on
IA-32 and X64.
@return The current value of DS.
**/
UINT16
EFIAPI
AsmReadDs (

View File

@@ -17,6 +17,16 @@
//
/**
Reads the current value of the EFLAGS register.
Reads and returns the current value of the EFLAGS register. This function is
only available on IA-32 and X64. This returns a 32-bit value on IA-32 and a
64-bit value on X64.
@return EFLAGS on IA-32 or RFLAGS on X64.
**/
UINTN
EFIAPI
AsmReadEflags (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current value of ES Data Segment Register (ES).
Reads and returns the current value of ES. This function is only available on
IA-32 and X64.
@return The current value of ES.
**/
UINT16
EFIAPI
AsmReadEs (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current value of FS Data Segment Register (FS).
Reads and returns the current value of FS. This function is only available on
IA-32 and X64.
@return The current value of FS.
**/
UINT16
EFIAPI
AsmReadFs (

View File

@@ -18,6 +18,15 @@
#include <BaseLibInternals.h>
/**
Reads the current Global Descriptor Table Register(GDTR) descriptor.
Reads and returns the current GDTR descriptor and returns it in Gdtr. This
function is only available on IA-32 and X64.
@param Gdtr Pointer to a GDTR descriptor.
**/
VOID
EFIAPI
InternalX86ReadGdtr (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current value of GS Data Segment Register (GS).
Reads and returns the current value of GS. This function is only available on
IA-32 and X64.
@return The current value of GS.
**/
UINT16
EFIAPI
AsmReadGs (

View File

@@ -18,6 +18,15 @@
#include <BaseLibInternals.h>
/**
Reads the current Interrupt Descriptor Table Register(GDTR) descriptor.
Reads and returns the current IDTR descriptor and returns it in Idtr. This
function is only available on IA-32 and X64.
@param Idtr Pointer to a IDTR descriptor.
**/
VOID
EFIAPI
InternalX86ReadIdtr (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current Local Descriptor Table Register(LDTR) selector.
Reads and returns the current 16-bit LDTR descriptor value. This function is
only available on IA-32 and X64.
@return The current selector of LDT.
**/
UINT16
EFIAPI
AsmReadLdtr (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current value of 64-bit MMX Register #0 (MM0).
Reads and returns the current value of MM0. This function is only available
on IA-32 and X64.
@return The current value of MM0.
**/
UINT64
EFIAPI
AsmReadMm0 (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current value of 64-bit MMX Register #1 (MM1).
Reads and returns the current value of MM1. This function is only available
on IA-32 and X64.
@return The current value of MM1.
**/
UINT64
EFIAPI
AsmReadMm1 (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current value of 64-bit MMX Register #2 (MM2).
Reads and returns the current value of MM2. This function is only available
on IA-32 and X64.
@return The current value of MM2.
**/
UINT64
EFIAPI
AsmReadMm2 (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current value of 64-bit MMX Register #3 (MM3).
Reads and returns the current value of MM3. This function is only available
on IA-32 and X64.
@return The current value of MM3.
**/
UINT64
EFIAPI
AsmReadMm3 (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current value of 64-bit MMX Register #4 (MM4).
Reads and returns the current value of MM4. This function is only available
on IA-32 and X64.
@return The current value of MM4.
**/
UINT64
EFIAPI
AsmReadMm4 (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current value of 64-bit MMX Register #5 (MM5).
Reads and returns the current value of MM5. This function is only available
on IA-32 and X64.
@return The current value of MM5.
**/
UINT64
EFIAPI
AsmReadMm5 (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current value of 64-bit MMX Register #6 (MM6).
Reads and returns the current value of MM6. This function is only available
on IA-32 and X64.
@return The current value of MM6.
**/
UINT64
EFIAPI
AsmReadMm6 (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current value of 64-bit MMX Register #7 (MM7).
Reads and returns the current value of MM7. This function is only available
on IA-32 and X64.
@return The current value of MM7.
**/
UINT64
EFIAPI
AsmReadMm7 (

View File

@@ -17,6 +17,20 @@
//
/**
Returns a 64-bit Machine Specific Register(MSR).
Reads and returns the 64-bit MSR specified by Index. No parameter checking is
performed on Index, and some Index values may cause CPU exceptions. The
caller must either guarantee that Index is valid, or the caller must set up
exception handlers to catch the exceptions. This function is only available
on IA-32 and X64.
@param Index The 32-bit MSR index to read.
@return The value of the MSR identified by Index.
**/
UINT64
EFIAPI
AsmReadMsr64 (

View File

@@ -17,6 +17,17 @@
//
/**
Reads the current value of a Performance Counter (PMC).
Reads and returns the current value of performance counter specified by
Index. This function is only available on IA-32 and X64.
@param Index The 32-bit Performance Counter index to read.
@return The value of the PMC specified by Index.
**/
UINT64
EFIAPI
AsmReadPmc (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current value of Stack Segment Register (SS).
Reads and returns the current value of SS. This function is only available on
IA-32 and X64.
@return The current value of SS.
**/
UINT16
EFIAPI
AsmReadSs (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current value of Task Register (TR).
Reads and returns the current value of TR. This function is only available on
IA-32 and X64.
@return The current value of TR.
**/
UINT16
EFIAPI
AsmReadTr (

View File

@@ -17,6 +17,15 @@
//
/**
Reads the current value of Time Stamp Counter (TSC).
Reads and returns the current value of TSC. This function is only available
on IA-32 and X64.
@return The current value of TSC
**/
UINT64
EFIAPI
AsmReadTsc (

View File

@@ -17,13 +17,39 @@
//
#include <BaseLibInternals.h>
/**
Worker function that checks ASSERT condition for JumpBuffer
Checks ASSERT condition for JumpBuffer.
If JumpBuffer is NULL, then ASSERT().
For IPF CPUs, if JumpBuffer is not aligned on a 16-byte boundary, then ASSERT().
@param JumpBuffer A pointer to CPU context buffer.
**/
VOID
EFIAPI
InternalAssertJumpBuffer (
IN BASE_LIBRARY_JUMP_BUFFER *JumpBuffer
);
/**
Saves the current CPU context that can be restored with a call to LongJump()
and returns 0.
Saves the current CPU context in the buffer specified by JumpBuffer and
returns 0. The initial call to SetJump() must always return 0. Subsequent
calls to LongJump() cause a non-zero value to be returned by SetJump().
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.
@retval 0 Indicates a return from SetJump().
**/
_declspec (naked)
UINTN
EFIAPI

View File

@@ -17,6 +17,18 @@
//
/**
Switches the endianess of a 64-bit integer.
This function swaps the bytes in a 64-bit unsigned value to switch the value
from little endian to big endian or vice versa. The byte swapped value is
returned.
@param Operand A 64-bit unsigned value.
@return The byte swaped Operand.
**/
UINT64
EFIAPI
InternalMathSwapBytes64 (

View File

@@ -17,6 +17,13 @@
//
/**
Executes a WBINVD instruction.
Executes a WBINVD instruction. This function is only available on IA-32 and
X64.
**/
VOID
EFIAPI
AsmWbinvd (

View File

@@ -17,6 +17,17 @@
//
/**
Writes a value to Control Register 0 (CR0).
Writes and returns a new value to CR0. This function is only available on
IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.
@param Cr0 The value to write to CR0.
@return The value written to CR0.
**/
UINTN
EFIAPI
AsmWriteCr0 (

View File

@@ -17,6 +17,17 @@
//
/**
Writes a value to Control Register 2 (CR2).
Writes and returns a new value to CR2. This function is only available on
IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.
@param Cr2 The value to write to CR2.
@return The value written to CR2.
**/
UINTN
EFIAPI
AsmWriteCr2 (

View File

@@ -17,6 +17,17 @@
//
/**
Writes a value to Control Register 3 (CR3).
Writes and returns a new value to CR3. This function is only available on
IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.
@param Cr3 The value to write to CR3.
@return The value written to CR3.
**/
UINTN
EFIAPI
AsmWriteCr3 (

View File

@@ -17,6 +17,17 @@
//
/**
Writes a value to Control Register 4 (CR4).
Writes and returns a new value to CR4. This function is only available on
IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.
@param Cr4 The value to write to CR4.
@return The value written to CR4.
**/
UINTN
EFIAPI
AsmWriteCr4 (

View File

@@ -17,6 +17,17 @@
//
/**
Writes a value to Debug Register 0 (DR0).
Writes and returns a new value to DR0. This function is only available on
IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.
@param Dr0 The value to write to Dr0.
@return The value written to Debug Register 0 (DR0).
**/
UINTN
EFIAPI
AsmWriteDr0 (

View File

@@ -17,6 +17,17 @@
//
/**
Writes a value to Debug Register 1 (DR1).
Writes and returns a new value to DR1. This function is only available on
IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.
@param Dr1 The value to write to Dr1.
@return The value written to Debug Register 1 (DR1).
**/
UINTN
EFIAPI
AsmWriteDr1 (

View File

@@ -17,6 +17,17 @@
//
/**
Writes a value to Debug Register 2 (DR2).
Writes and returns a new value to DR2. This function is only available on
IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.
@param Dr2 The value to write to Dr2.
@return The value written to Debug Register 2 (DR2).
**/
UINTN
EFIAPI
AsmWriteDr2 (

View File

@@ -17,6 +17,17 @@
//
/**
Writes a value to Debug Register 3 (DR3).
Writes and returns a new value to DR3. This function is only available on
IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.
@param Dr3 The value to write to Dr3.
@return The value written to Debug Register 3 (DR3).
**/
UINTN
EFIAPI
AsmWriteDr3 (

View File

@@ -17,6 +17,17 @@
//
/**
Writes a value to Debug Register 4 (DR4).
Writes and returns a new value to DR4. This function is only available on
IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.
@param Dr4 The value to write to Dr4.
@return The value written to Debug Register 4 (DR4).
**/
UINTN
EFIAPI
AsmWriteDr4 (

View File

@@ -17,6 +17,17 @@
//
/**
Writes a value to Debug Register 5 (DR5).
Writes and returns a new value to DR5. This function is only available on
IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.
@param Dr5 The value to write to Dr5.
@return The value written to Debug Register 5 (DR5).
**/
UINTN
EFIAPI
AsmWriteDr5 (

View File

@@ -17,6 +17,17 @@
//
/**
Writes a value to Debug Register 6 (DR6).
Writes and returns a new value to DR6. This function is only available on
IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.
@param Dr6 The value to write to Dr6.
@return The value written to Debug Register 6 (DR6).
**/
UINTN
EFIAPI
AsmWriteDr6 (

View File

@@ -17,6 +17,17 @@
//
/**
Writes a value to Debug Register 7 (DR7).
Writes and returns a new value to DR7. This function is only available on
IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.
@param Dr7 The value to write to Dr7.
@return The value written to Debug Register 7 (DR7).
**/
UINTN
EFIAPI
AsmWriteDr7 (

View File

@@ -18,6 +18,15 @@
#include <BaseLibInternals.h>
/**
Writes the current Global Descriptor Table Register (GDTR) descriptor.
Writes and the current GDTR descriptor specified by Gdtr. This function is
only available on IA-32 and X64.
@param Gdtr Pointer to a GDTR descriptor.
**/
VOID
EFIAPI
InternalX86WriteGdtr (

View File

@@ -17,6 +17,15 @@
//
#include <BaseLibInternals.h>
/**
Writes the current Interrupt Descriptor Table Register(GDTR) descriptor.
Writes the current IDTR descriptor and returns it in Idtr. This function is
only available on IA-32 and X64.
@param Idtr Pointer to a IDTR descriptor.
**/
VOID
EFIAPI
InternalX86WriteIdtr (

View File

@@ -17,6 +17,15 @@
//
/**
Writes the current Local Descriptor Table Register (GDTR) selector.
Writes and the current LDTR descriptor specified by Ldtr. This function is
only available on IA-32 and X64.
@param Ldtr 16-bit LDTR selector value.
**/
VOID
EFIAPI
AsmWriteLdtr (

View File

@@ -17,6 +17,15 @@
//
/**
Writes the current value of 64-bit MMX Register #0 (MM0).
Writes the current value of MM0. This function is only available on IA32 and
X64.
@param Value The 64-bit value to write to MM0.
**/
VOID
EFIAPI
AsmWriteMm0 (

View File

@@ -17,6 +17,15 @@
//
/**
Writes the current value of 64-bit MMX Register #1 (MM1).
Writes the current value of MM1. This function is only available on IA32 and
X64.
@param Value The 64-bit value to write to MM1.
**/
VOID
EFIAPI
AsmWriteMm1 (

View File

@@ -17,6 +17,15 @@
//
/**
Writes the current value of 64-bit MMX Register #2 (MM2).
Writes the current value of MM2. This function is only available on IA32 and
X64.
@param Value The 64-bit value to write to MM2.
**/
VOID
EFIAPI
AsmWriteMm2 (

View File

@@ -17,6 +17,15 @@
//
/**
Writes the current value of 64-bit MMX Register #3 (MM3).
Writes the current value of MM3. This function is only available on IA32 and
X64.
@param Value The 64-bit value to write to MM3.
**/
VOID
EFIAPI
AsmWriteMm3 (

View File

@@ -17,6 +17,15 @@
//
/**
Writes the current value of 64-bit MMX Register #4 (MM4).
Writes the current value of MM4. This function is only available on IA32 and
X64.
@param Value The 64-bit value to write to MM4.
**/
VOID
EFIAPI
AsmWriteMm4 (

View File

@@ -17,6 +17,15 @@
//
/**
Writes the current value of 64-bit MMX Register #5 (MM5).
Writes the current value of MM5. This function is only available on IA32 and
X64.
@param Value The 64-bit value to write to MM5.
**/
VOID
EFIAPI
AsmWriteMm5 (

View File

@@ -17,6 +17,15 @@
//
/**
Writes the current value of 64-bit MMX Register #6 (MM6).
Writes the current value of MM6. This function is only available on IA32 and
X64.
@param Value The 64-bit value to write to MM6.
**/
VOID
EFIAPI
AsmWriteMm6 (

View File

@@ -17,6 +17,15 @@
//
/**
Writes the current value of 64-bit MMX Register #7 (MM7).
Writes the current value of MM7. This function is only available on IA32 and
X64.
@param Value The 64-bit value to write to MM7.
**/
VOID
EFIAPI
AsmWriteMm7 (

View File

@@ -17,6 +17,23 @@
//
/**
Writes a 64-bit value to a Machine Specific Register(MSR), and returns the
value.
Writes the 64-bit value specified by Value to the MSR specified by Index. The
64-bit value written to the MSR is returned. No parameter checking is
performed on Index or Value, and some of these may cause CPU exceptions. The
caller must either guarantee that Index and Value are valid, or the caller
must establish proper exception handlers. This function is only available on
IA-32 and X64.
@param Index The 32-bit MSR index to write.
@param Value The 64-bit value to write to the MSR.
@return Value
**/
UINT64
EFIAPI
AsmWriteMsr64 (

View File

@@ -1,18 +1,17 @@
/// @file
/// This module contains generic macros for an assembly writer.
///
/// 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.
///
///
#ifndef _ASM_H
#define _ASM_H
/** @file This module contains generic macros for an assembly writer.
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.
**/
#ifndef _ASM_H_
#define _ASM_H_
#define TRUE 1
#define FALSE 0

View File

@@ -1,18 +1,18 @@
/// @file
///
///
/// 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.
///
///
#ifndef _IA64GEN_H
#define _IA64GEN_H
/** @file Register Definition for IPF.
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.
**/
#ifndef _IA64GEN_H_
#define _IA64GEN_H_
#define TT_UNAT 0
#define C_PSR 0

View File

@@ -64,7 +64,7 @@ StrCpy (
ASSERT ((UINTN)(Source - Destination) > StrLen (Source));
ReturnValue = Destination;
while (*Source) {
while (*Source != 0) {
*(Destination++) = *(Source++);
}
*Destination = 0;
@@ -500,8 +500,8 @@ StrStr (
@retval FALSE Otherwise.
**/
STATIC
BOOLEAN
EFIAPI
InternalIsDecimalDigitCharacter (
IN CHAR16 Char
)
@@ -525,8 +525,8 @@ InternalIsDecimalDigitCharacter (
@retval Unchanged Otherwise.
**/
STATIC
CHAR16
EFIAPI
InternalCharToUpper (
IN CHAR16 Char
)
@@ -551,8 +551,8 @@ InternalCharToUpper (
@retval UINTN The numerical value converted.
**/
STATIC
UINTN
EFIAPI
InternalHexCharToUintn (
IN CHAR16 Char
)
@@ -578,8 +578,8 @@ InternalHexCharToUintn (
@retval FALSE Otherwise.
**/
STATIC
BOOLEAN
EFIAPI
InternalIsHexaDecimalDigitCharacter (
IN CHAR16 Char
)
@@ -954,8 +954,8 @@ StrHexToUint64 (
@retval FALSE Otherwise.
**/
STATIC
BOOLEAN
EFIAPI
InternalAsciiIsDecimalDigitCharacter (
IN CHAR8 Char
)
@@ -977,8 +977,8 @@ InternalAsciiIsDecimalDigitCharacter (
@retval FALSE Otherwise.
**/
STATIC
BOOLEAN
EFIAPI
InternalAsciiIsHexaDecimalDigitCharacter (
IN CHAR8 Char
)
@@ -1110,7 +1110,7 @@ AsciiStrCpy (
ASSERT ((UINTN)(Source - Destination) > AsciiStrLen (Source));
ReturnValue = Destination;
while (*Source) {
while (*Source != 0) {
*(Destination++) = *(Source++);
}
*Destination = 0;
@@ -1170,7 +1170,7 @@ AsciiStrnCpy (
ReturnValue = Destination;
while (*Source && Length > 0) {
while (*Source != 0 && Length > 0) {
*(Destination++) = *(Source++);
Length--;
}
@@ -1298,13 +1298,13 @@ AsciiStrCmp (
If Value >= 0xA0, then ASSERT().
If (Value & 0x0F) >= 0x0A, then ASSERT().
@param chr one Ascii character
@param Chr one Ascii character
@return The uppercase value of Ascii character
**/
STATIC
CHAR8
EFIAPI
AsciiToUpper (
IN CHAR8 Chr
)
@@ -1325,8 +1325,8 @@ AsciiToUpper (
@retval UINTN The numerical value converted.
**/
STATIC
UINTN
EFIAPI
InternalAsciiHexCharToUintn (
IN CHAR8 Char
)

View File

@@ -41,6 +41,7 @@
function.
@param NewStack A pointer to the new stack to use for the EntryPoint
function.
@param ... Extended parameters.
**/
VOID

View File

@@ -19,9 +19,9 @@
#include "BaseLibInternals.h"
//
// Microsoft Visual Studio 7.1 Function Prototypes for read write barrier Intrinsics
//
/**
Microsoft Visual Studio 7.1 Function Prototypes for read write barrier Intrinsics.
**/
void _ReadWriteBarrier (void);
#pragma intrinsic(_ReadWriteBarrier)

View File

@@ -13,13 +13,20 @@
**/
//
// Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics
//
/**
Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics.
**/
void __debugbreak ();
#pragma intrinsic(__debugbreak)
/**
Generates a breakpoint on the CPU.
Generates a breakpoint on the CPU. The breakpoint must be implemented such
that code can resume normal execution after the breakpoint.
**/
VOID
EFIAPI
CpuBreakpoint (

Some files were not shown because too many files have changed in this diff Show More