diff options
Diffstat (limited to 'MdePkg/Library/BaseLib')
106 files changed, 1216 insertions, 73 deletions
diff --git a/MdePkg/Library/BaseLib/BaseLibInternals.h b/MdePkg/Library/BaseLib/BaseLibInternals.h index 04f622b79a..984c0cdfc3 100644 --- a/MdePkg/Library/BaseLib/BaseLibInternals.h +++ b/MdePkg/Library/BaseLib/BaseLibInternals.h @@ -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
);
/**
diff --git a/MdePkg/Library/BaseLib/ChkStkGcc.c b/MdePkg/Library/BaseLib/ChkStkGcc.c index f6ae9b03db..f86d53919a 100644 --- a/MdePkg/Library/BaseLib/ChkStkGcc.c +++ b/MdePkg/Library/BaseLib/ChkStkGcc.c @@ -18,7 +18,11 @@ #include "BaseLibInternals.h"
-
-VOID __chkstk() {
+/**
+ Hack function for passing GCC build.
+**/
+VOID
+__chkstk()
+{
}
diff --git a/MdePkg/Library/BaseLib/Ia32/ARShiftU64.c b/MdePkg/Library/BaseLib/Ia32/ARShiftU64.c index fb5f4282bb..dab93257ee 100644 --- a/MdePkg/Library/BaseLib/Ia32/ARShiftU64.c +++ b/MdePkg/Library/BaseLib/Ia32/ARShiftU64.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/CpuBreakpoint.c b/MdePkg/Library/BaseLib/Ia32/CpuBreakpoint.c index 35d0fc9c23..d4fce47c00 100644 --- a/MdePkg/Library/BaseLib/Ia32/CpuBreakpoint.c +++ b/MdePkg/Library/BaseLib/Ia32/CpuBreakpoint.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/CpuId.c b/MdePkg/Library/BaseLib/Ia32/CpuId.c index 73f12bcaee..6fbc5375bc 100644 --- a/MdePkg/Library/BaseLib/Ia32/CpuId.c +++ b/MdePkg/Library/BaseLib/Ia32/CpuId.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/CpuIdEx.c b/MdePkg/Library/BaseLib/Ia32/CpuIdEx.c index 2c1eca670e..c685e5ec4e 100644 --- a/MdePkg/Library/BaseLib/Ia32/CpuIdEx.c +++ b/MdePkg/Library/BaseLib/Ia32/CpuIdEx.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/CpuPause.c b/MdePkg/Library/BaseLib/Ia32/CpuPause.c index ee7c96736b..138e3a3a09 100644 --- a/MdePkg/Library/BaseLib/Ia32/CpuPause.c +++ b/MdePkg/Library/BaseLib/Ia32/CpuPause.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/CpuSleep.c b/MdePkg/Library/BaseLib/Ia32/CpuSleep.c index 690f9b3598..8861e3369d 100644 --- a/MdePkg/Library/BaseLib/Ia32/CpuSleep.c +++ b/MdePkg/Library/BaseLib/Ia32/CpuSleep.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/DisableInterrupts.c b/MdePkg/Library/BaseLib/Ia32/DisableInterrupts.c index 60c1169a57..b9e31c66c3 100644 --- a/MdePkg/Library/BaseLib/Ia32/DisableInterrupts.c +++ b/MdePkg/Library/BaseLib/Ia32/DisableInterrupts.c @@ -17,6 +17,10 @@ //
+/**
+ Disables CPU interrupts.
+
+**/
VOID
EFIAPI
DisableInterrupts (
diff --git a/MdePkg/Library/BaseLib/Ia32/DisablePaging32.c b/MdePkg/Library/BaseLib/Ia32/DisablePaging32.c index d462c01ff3..1ab21224ca 100644 --- a/MdePkg/Library/BaseLib/Ia32/DisablePaging32.c +++ b/MdePkg/Library/BaseLib/Ia32/DisablePaging32.c @@ -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
diff --git a/MdePkg/Library/BaseLib/Ia32/DivU64x32.c b/MdePkg/Library/BaseLib/Ia32/DivU64x32.c index 0ec3c6319b..92eb9e115b 100644 --- a/MdePkg/Library/BaseLib/Ia32/DivU64x32.c +++ b/MdePkg/Library/BaseLib/Ia32/DivU64x32.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/DivU64x32Remainder.c b/MdePkg/Library/BaseLib/Ia32/DivU64x32Remainder.c index 54da1e9ab0..4127004da5 100644 --- a/MdePkg/Library/BaseLib/Ia32/DivU64x32Remainder.c +++ b/MdePkg/Library/BaseLib/Ia32/DivU64x32Remainder.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/EnableDisableInterrupts.c b/MdePkg/Library/BaseLib/Ia32/EnableDisableInterrupts.c index 39118728f0..6e0d3fbdde 100644 --- a/MdePkg/Library/BaseLib/Ia32/EnableDisableInterrupts.c +++ b/MdePkg/Library/BaseLib/Ia32/EnableDisableInterrupts.c @@ -17,6 +17,11 @@ //
+/**
+ Enables CPU interrupts for the smallest window required to capture any
+ pending interrupts.
+
+**/
VOID
EFIAPI
EnableDisableInterrupts (
diff --git a/MdePkg/Library/BaseLib/Ia32/EnableInterrupts.c b/MdePkg/Library/BaseLib/Ia32/EnableInterrupts.c index cb4ee2e3ad..7f50bb769e 100644 --- a/MdePkg/Library/BaseLib/Ia32/EnableInterrupts.c +++ b/MdePkg/Library/BaseLib/Ia32/EnableInterrupts.c @@ -17,6 +17,10 @@ //
+/**
+ Enables CPU interrupts.
+
+**/
VOID
EFIAPI
EnableInterrupts (
diff --git a/MdePkg/Library/BaseLib/Ia32/EnablePaging32.c b/MdePkg/Library/BaseLib/Ia32/EnablePaging32.c index 3cb290c516..87e31cac83 100644 --- a/MdePkg/Library/BaseLib/Ia32/EnablePaging32.c +++ b/MdePkg/Library/BaseLib/Ia32/EnablePaging32.c @@ -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
diff --git a/MdePkg/Library/BaseLib/Ia32/FlushCacheLine.c b/MdePkg/Library/BaseLib/Ia32/FlushCacheLine.c index 1c7cc0f33f..d6fa2d39e4 100644 --- a/MdePkg/Library/BaseLib/Ia32/FlushCacheLine.c +++ b/MdePkg/Library/BaseLib/Ia32/FlushCacheLine.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/FxRestore.c b/MdePkg/Library/BaseLib/Ia32/FxRestore.c index 1314da4194..f5e1966e4a 100644 --- a/MdePkg/Library/BaseLib/Ia32/FxRestore.c +++ b/MdePkg/Library/BaseLib/Ia32/FxRestore.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/FxSave.c b/MdePkg/Library/BaseLib/Ia32/FxSave.c index 44aaee0090..a57312d42d 100644 --- a/MdePkg/Library/BaseLib/Ia32/FxSave.c +++ b/MdePkg/Library/BaseLib/Ia32/FxSave.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/InterlockedCompareExchange32.c b/MdePkg/Library/BaseLib/Ia32/InterlockedCompareExchange32.c index ec60f97344..cbc8a57496 100644 --- a/MdePkg/Library/BaseLib/Ia32/InterlockedCompareExchange32.c +++ b/MdePkg/Library/BaseLib/Ia32/InterlockedCompareExchange32.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/InterlockedCompareExchange64.c b/MdePkg/Library/BaseLib/Ia32/InterlockedCompareExchange64.c index 6bdbedad1f..5bbba48702 100644 --- a/MdePkg/Library/BaseLib/Ia32/InterlockedCompareExchange64.c +++ b/MdePkg/Library/BaseLib/Ia32/InterlockedCompareExchange64.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/InterlockedDecrement.c b/MdePkg/Library/BaseLib/Ia32/InterlockedDecrement.c index c7ace7ad54..df6908ef27 100644 --- a/MdePkg/Library/BaseLib/Ia32/InterlockedDecrement.c +++ b/MdePkg/Library/BaseLib/Ia32/InterlockedDecrement.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/InterlockedIncrement.c b/MdePkg/Library/BaseLib/Ia32/InterlockedIncrement.c index f34f4748eb..8bbd188651 100644 --- a/MdePkg/Library/BaseLib/Ia32/InterlockedIncrement.c +++ b/MdePkg/Library/BaseLib/Ia32/InterlockedIncrement.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/Invd.c b/MdePkg/Library/BaseLib/Ia32/Invd.c index 0206e6d44b..96de45514e 100644 --- a/MdePkg/Library/BaseLib/Ia32/Invd.c +++ b/MdePkg/Library/BaseLib/Ia32/Invd.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/LRotU64.c b/MdePkg/Library/BaseLib/Ia32/LRotU64.c index 9a5deea70d..ac7305105a 100644 --- a/MdePkg/Library/BaseLib/Ia32/LRotU64.c +++ b/MdePkg/Library/BaseLib/Ia32/LRotU64.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/LShiftU64.c b/MdePkg/Library/BaseLib/Ia32/LShiftU64.c index 4324bfb53b..f684e1f29a 100644 --- a/MdePkg/Library/BaseLib/Ia32/LShiftU64.c +++ b/MdePkg/Library/BaseLib/Ia32/LShiftU64.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/LongJump.c b/MdePkg/Library/BaseLib/Ia32/LongJump.c index f0408b83fa..f4dbcfdf1a 100644 --- a/MdePkg/Library/BaseLib/Ia32/LongJump.c +++ b/MdePkg/Library/BaseLib/Ia32/LongJump.c @@ -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
diff --git a/MdePkg/Library/BaseLib/Ia32/ModU64x32.c b/MdePkg/Library/BaseLib/Ia32/ModU64x32.c index 59ed50433a..a2727ea6d4 100644 --- a/MdePkg/Library/BaseLib/Ia32/ModU64x32.c +++ b/MdePkg/Library/BaseLib/Ia32/ModU64x32.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/Monitor.c b/MdePkg/Library/BaseLib/Ia32/Monitor.c index 469aa6d7fa..68da9c68c7 100644 --- a/MdePkg/Library/BaseLib/Ia32/Monitor.c +++ b/MdePkg/Library/BaseLib/Ia32/Monitor.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/MultU64x32.c b/MdePkg/Library/BaseLib/Ia32/MultU64x32.c index db911cadb2..36e9227dd4 100644 --- a/MdePkg/Library/BaseLib/Ia32/MultU64x32.c +++ b/MdePkg/Library/BaseLib/Ia32/MultU64x32.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/MultU64x64.c b/MdePkg/Library/BaseLib/Ia32/MultU64x64.c index ddafff47ae..e2b7e6852f 100644 --- a/MdePkg/Library/BaseLib/Ia32/MultU64x64.c +++ b/MdePkg/Library/BaseLib/Ia32/MultU64x64.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/Mwait.c b/MdePkg/Library/BaseLib/Ia32/Mwait.c index 0629afe295..64fccddc68 100644 --- a/MdePkg/Library/BaseLib/Ia32/Mwait.c +++ b/MdePkg/Library/BaseLib/Ia32/Mwait.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/RRotU64.c b/MdePkg/Library/BaseLib/Ia32/RRotU64.c index 31274aac2c..59d42b19ef 100644 --- a/MdePkg/Library/BaseLib/Ia32/RRotU64.c +++ b/MdePkg/Library/BaseLib/Ia32/RRotU64.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/RShiftU64.c b/MdePkg/Library/BaseLib/Ia32/RShiftU64.c index a6b957bacc..a4d1db9547 100644 --- a/MdePkg/Library/BaseLib/Ia32/RShiftU64.c +++ b/MdePkg/Library/BaseLib/Ia32/RShiftU64.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadCr0.c b/MdePkg/Library/BaseLib/Ia32/ReadCr0.c index 8c6ab3527f..5444aafb6a 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadCr0.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadCr0.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadCr2.c b/MdePkg/Library/BaseLib/Ia32/ReadCr2.c index 1c682b3899..4e97814ee3 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadCr2.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadCr2.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadCr3.c b/MdePkg/Library/BaseLib/Ia32/ReadCr3.c index 39ad5e4f2f..1f6afb39c0 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadCr3.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadCr3.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadCr4.c b/MdePkg/Library/BaseLib/Ia32/ReadCr4.c index 71ffa9b72d..5d24f57038 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadCr4.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadCr4.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadCs.c b/MdePkg/Library/BaseLib/Ia32/ReadCs.c index cd9bad54e7..86c7257158 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadCs.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadCs.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr0.c b/MdePkg/Library/BaseLib/Ia32/ReadDr0.c index 7c6f0c629a..23880a416e 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadDr0.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadDr0.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr1.c b/MdePkg/Library/BaseLib/Ia32/ReadDr1.c index 573f658864..77a9adac66 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadDr1.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadDr1.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr2.c b/MdePkg/Library/BaseLib/Ia32/ReadDr2.c index 6685d775f7..02ba6a8545 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadDr2.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadDr2.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr3.c b/MdePkg/Library/BaseLib/Ia32/ReadDr3.c index e8a4bcc6bb..10d219943d 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadDr3.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadDr3.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr4.c b/MdePkg/Library/BaseLib/Ia32/ReadDr4.c index 9ec23218d4..ff37daa58a 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadDr4.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadDr4.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr5.c b/MdePkg/Library/BaseLib/Ia32/ReadDr5.c index 3470524b22..ca422e47a5 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadDr5.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadDr5.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr6.c b/MdePkg/Library/BaseLib/Ia32/ReadDr6.c index debeecb24f..921ccc8a0b 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadDr6.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadDr6.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr7.c b/MdePkg/Library/BaseLib/Ia32/ReadDr7.c index da7a120d70..cb15e1a706 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadDr7.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadDr7.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDs.c b/MdePkg/Library/BaseLib/Ia32/ReadDs.c index 91294896e0..e80b394826 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadDs.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadDs.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadEflags.c b/MdePkg/Library/BaseLib/Ia32/ReadEflags.c index ca5d19c5ac..eab499532c 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadEflags.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadEflags.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadEs.c b/MdePkg/Library/BaseLib/Ia32/ReadEs.c index 8f73b99e6b..bcf6d9081c 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadEs.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadEs.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadFs.c b/MdePkg/Library/BaseLib/Ia32/ReadFs.c index 848d15581b..25fee08e4c 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadFs.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadFs.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadGdtr.c b/MdePkg/Library/BaseLib/Ia32/ReadGdtr.c index 1bff03c7d6..1d70b7da12 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadGdtr.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadGdtr.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadGs.c b/MdePkg/Library/BaseLib/Ia32/ReadGs.c index df495a0ff9..61ba83ef1c 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadGs.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadGs.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadIdtr.c b/MdePkg/Library/BaseLib/Ia32/ReadIdtr.c index 0cfbd63ff4..db43e9a0d7 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadIdtr.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadIdtr.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadLdtr.c b/MdePkg/Library/BaseLib/Ia32/ReadLdtr.c index 813c08442e..c9e372486e 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadLdtr.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadLdtr.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMm0.c b/MdePkg/Library/BaseLib/Ia32/ReadMm0.c index 279e657edf..75b26827cd 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadMm0.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadMm0.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMm1.c b/MdePkg/Library/BaseLib/Ia32/ReadMm1.c index b46a44c8de..1dde8e1bfd 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadMm1.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadMm1.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMm2.c b/MdePkg/Library/BaseLib/Ia32/ReadMm2.c index 1e4905f20e..bbe80726d1 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadMm2.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadMm2.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMm3.c b/MdePkg/Library/BaseLib/Ia32/ReadMm3.c index f742a9f6aa..868ef7a2c4 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadMm3.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadMm3.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMm4.c b/MdePkg/Library/BaseLib/Ia32/ReadMm4.c index 5b9920bf5b..3297c1851c 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadMm4.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadMm4.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMm5.c b/MdePkg/Library/BaseLib/Ia32/ReadMm5.c index 6b5d5df5b7..04db90bcc7 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadMm5.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadMm5.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMm6.c b/MdePkg/Library/BaseLib/Ia32/ReadMm6.c index c0b1b51195..ed913945b7 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadMm6.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadMm6.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMm7.c b/MdePkg/Library/BaseLib/Ia32/ReadMm7.c index af98994636..fd24ff8cbd 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadMm7.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadMm7.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMsr64.c b/MdePkg/Library/BaseLib/Ia32/ReadMsr64.c index d93b9cd6e4..eed41d41df 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadMsr64.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadMsr64.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadPmc.c b/MdePkg/Library/BaseLib/Ia32/ReadPmc.c index 761fa6bf4e..432c0139f9 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadPmc.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadPmc.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadSs.c b/MdePkg/Library/BaseLib/Ia32/ReadSs.c index 002b20cbba..47750b93cc 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadSs.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadSs.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadTr.c b/MdePkg/Library/BaseLib/Ia32/ReadTr.c index 0069811f46..dd94b0b4d2 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadTr.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadTr.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadTsc.c b/MdePkg/Library/BaseLib/Ia32/ReadTsc.c index 3946ffc792..5689da7146 100644 --- a/MdePkg/Library/BaseLib/Ia32/ReadTsc.c +++ b/MdePkg/Library/BaseLib/Ia32/ReadTsc.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/SetJump.c b/MdePkg/Library/BaseLib/Ia32/SetJump.c index 5d8692a619..67d0571ecf 100644 --- a/MdePkg/Library/BaseLib/Ia32/SetJump.c +++ b/MdePkg/Library/BaseLib/Ia32/SetJump.c @@ -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
diff --git a/MdePkg/Library/BaseLib/Ia32/SwapBytes64.c b/MdePkg/Library/BaseLib/Ia32/SwapBytes64.c index 714fd8acdc..018790041f 100644 --- a/MdePkg/Library/BaseLib/Ia32/SwapBytes64.c +++ b/MdePkg/Library/BaseLib/Ia32/SwapBytes64.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/Wbinvd.c b/MdePkg/Library/BaseLib/Ia32/Wbinvd.c index fa9c8b13a0..194d787f9c 100644 --- a/MdePkg/Library/BaseLib/Ia32/Wbinvd.c +++ b/MdePkg/Library/BaseLib/Ia32/Wbinvd.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteCr0.c b/MdePkg/Library/BaseLib/Ia32/WriteCr0.c index 4f2406c67e..da9ba8d8b6 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteCr0.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteCr0.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteCr2.c b/MdePkg/Library/BaseLib/Ia32/WriteCr2.c index 8c5d617d53..98e44388b5 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteCr2.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteCr2.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteCr3.c b/MdePkg/Library/BaseLib/Ia32/WriteCr3.c index 7bcf537a7d..ca8784510f 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteCr3.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteCr3.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteCr4.c b/MdePkg/Library/BaseLib/Ia32/WriteCr4.c index 04e7b00491..548d30ee31 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteCr4.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteCr4.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr0.c b/MdePkg/Library/BaseLib/Ia32/WriteDr0.c index 0e9da73bf8..4ff4269a31 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteDr0.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteDr0.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr1.c b/MdePkg/Library/BaseLib/Ia32/WriteDr1.c index f9d1c2b5fb..480ff5bb32 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteDr1.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteDr1.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr2.c b/MdePkg/Library/BaseLib/Ia32/WriteDr2.c index 61f0979bf1..2116a1047e 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteDr2.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteDr2.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr3.c b/MdePkg/Library/BaseLib/Ia32/WriteDr3.c index b39c7a4f9d..3294e9ecbe 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteDr3.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteDr3.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr4.c b/MdePkg/Library/BaseLib/Ia32/WriteDr4.c index c2503c26a8..418b6404e5 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteDr4.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteDr4.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr5.c b/MdePkg/Library/BaseLib/Ia32/WriteDr5.c index dbc6dc90d6..05267ae7e6 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteDr5.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteDr5.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr6.c b/MdePkg/Library/BaseLib/Ia32/WriteDr6.c index 1da2a0fec4..2c3085e31d 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteDr6.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteDr6.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr7.c b/MdePkg/Library/BaseLib/Ia32/WriteDr7.c index 22d28636fa..aeb08ada5d 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteDr7.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteDr7.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteGdtr.c b/MdePkg/Library/BaseLib/Ia32/WriteGdtr.c index bc599e0945..4ed0180e6f 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteGdtr.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteGdtr.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteIdtr.c b/MdePkg/Library/BaseLib/Ia32/WriteIdtr.c index b92dfbdfb9..88c74b60e8 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteIdtr.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteIdtr.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteLdtr.c b/MdePkg/Library/BaseLib/Ia32/WriteLdtr.c index 600f015b35..82ba9d0ff9 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteLdtr.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteLdtr.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMm0.c b/MdePkg/Library/BaseLib/Ia32/WriteMm0.c index c9789315b1..703ef29a33 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteMm0.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteMm0.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMm1.c b/MdePkg/Library/BaseLib/Ia32/WriteMm1.c index 8a9900bede..ee08ab7ac9 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteMm1.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteMm1.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMm2.c b/MdePkg/Library/BaseLib/Ia32/WriteMm2.c index fb2196963c..08bbb6645e 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteMm2.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteMm2.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMm3.c b/MdePkg/Library/BaseLib/Ia32/WriteMm3.c index d788f3be8c..bef0f6502d 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteMm3.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteMm3.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMm4.c b/MdePkg/Library/BaseLib/Ia32/WriteMm4.c index 7b0160d2a9..eed122d42c 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteMm4.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteMm4.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMm5.c b/MdePkg/Library/BaseLib/Ia32/WriteMm5.c index 0dd02b706f..2f94baddfa 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteMm5.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteMm5.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMm6.c b/MdePkg/Library/BaseLib/Ia32/WriteMm6.c index de081405e1..32563770f7 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteMm6.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteMm6.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMm7.c b/MdePkg/Library/BaseLib/Ia32/WriteMm7.c index 0bb8d205a9..c5a859eb57 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteMm7.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteMm7.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMsr64.c b/MdePkg/Library/BaseLib/Ia32/WriteMsr64.c index 06cf910c48..77a068950a 100644 --- a/MdePkg/Library/BaseLib/Ia32/WriteMsr64.c +++ b/MdePkg/Library/BaseLib/Ia32/WriteMsr64.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/Ipf/asm.h b/MdePkg/Library/BaseLib/Ipf/asm.h index f152f80303..3067d4bee6 100644 --- a/MdePkg/Library/BaseLib/Ipf/asm.h +++ b/MdePkg/Library/BaseLib/Ipf/asm.h @@ -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
diff --git a/MdePkg/Library/BaseLib/Ipf/ia_64gen.h b/MdePkg/Library/BaseLib/Ipf/ia_64gen.h index 220a19ef22..616716bc4c 100644 --- a/MdePkg/Library/BaseLib/Ipf/ia_64gen.h +++ b/MdePkg/Library/BaseLib/Ipf/ia_64gen.h @@ -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
diff --git a/MdePkg/Library/BaseLib/String.c b/MdePkg/Library/BaseLib/String.c index bdfa7a3c6d..6b68bb2eec 100644 --- a/MdePkg/Library/BaseLib/String.c +++ b/MdePkg/Library/BaseLib/String.c @@ -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
)
diff --git a/MdePkg/Library/BaseLib/SwitchStack.c b/MdePkg/Library/BaseLib/SwitchStack.c index acc0e715ca..d2f00fded5 100644 --- a/MdePkg/Library/BaseLib/SwitchStack.c +++ b/MdePkg/Library/BaseLib/SwitchStack.c @@ -41,6 +41,7 @@ function.
@param NewStack A pointer to the new stack to use for the EntryPoint
function.
+ @param ... Extended parameters.
**/
VOID
diff --git a/MdePkg/Library/BaseLib/SynchronizationMsc.c b/MdePkg/Library/BaseLib/SynchronizationMsc.c index a4fc399387..5876235970 100644 --- a/MdePkg/Library/BaseLib/SynchronizationMsc.c +++ b/MdePkg/Library/BaseLib/SynchronizationMsc.c @@ -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)
diff --git a/MdePkg/Library/BaseLib/X64/CpuBreakpoint.c b/MdePkg/Library/BaseLib/X64/CpuBreakpoint.c index 01939e9128..049e34eaae 100644 --- a/MdePkg/Library/BaseLib/X64/CpuBreakpoint.c +++ b/MdePkg/Library/BaseLib/X64/CpuBreakpoint.c @@ -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 (
diff --git a/MdePkg/Library/BaseLib/X64/InterlockedCompareExchange32.c b/MdePkg/Library/BaseLib/X64/InterlockedCompareExchange32.c index 4a9fe6aca6..de1aac7e6a 100644 --- a/MdePkg/Library/BaseLib/X64/InterlockedCompareExchange32.c +++ b/MdePkg/Library/BaseLib/X64/InterlockedCompareExchange32.c @@ -12,9 +12,9 @@ **/
-//
-// Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics
-//
+/**
+ Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics.
+**/
long _InterlockedCompareExchange(
long volatile * Destination,
long Exchange,
@@ -23,6 +23,23 @@ long _InterlockedCompareExchange( #pragma intrinsic(_InterlockedCompareExchange)
+/**
+ 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 (
diff --git a/MdePkg/Library/BaseLib/X64/InterlockedCompareExchange64.c b/MdePkg/Library/BaseLib/X64/InterlockedCompareExchange64.c index bed1dc8972..1206a1732c 100644 --- a/MdePkg/Library/BaseLib/X64/InterlockedCompareExchange64.c +++ b/MdePkg/Library/BaseLib/X64/InterlockedCompareExchange64.c @@ -12,9 +12,9 @@ **/
-//
-// Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics
-//
+/**
+ Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics.
+**/
__int64 _InterlockedCompareExchange64(
__int64 volatile * Destination,
__int64 Exchange,
@@ -23,6 +23,22 @@ __int64 _InterlockedCompareExchange64( #pragma intrinsic(_InterlockedCompareExchange64)
+/**
+ 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 (
diff --git a/MdePkg/Library/BaseLib/X64/InterlockedDecrement.c b/MdePkg/Library/BaseLib/X64/InterlockedDecrement.c index 19e6a5dc49..0f321f8f18 100644 --- a/MdePkg/Library/BaseLib/X64/InterlockedDecrement.c +++ b/MdePkg/Library/BaseLib/X64/InterlockedDecrement.c @@ -12,15 +12,28 @@ **/
-//
-// Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics
-//
+/**
+ Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics.
+**/
long _InterlockedDecrement(
long * lpAddend
);
#pragma intrinsic(_InterlockedDecrement)
+/**
+ 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 (
diff --git a/MdePkg/Library/BaseLib/X64/InterlockedIncrement.c b/MdePkg/Library/BaseLib/X64/InterlockedIncrement.c index eda9f79a5b..80921c82df 100644 --- a/MdePkg/Library/BaseLib/X64/InterlockedIncrement.c +++ b/MdePkg/Library/BaseLib/X64/InterlockedIncrement.c @@ -12,15 +12,28 @@ **/
-//
-// Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics
-//
+/**
+ Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics.
+**/
long _InterlockedIncrement(
long * lpAddend
);
#pragma intrinsic(_InterlockedIncrement)
+/**
+ 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 (
diff --git a/MdePkg/Library/BaseLib/X64/ReadMsr64.c b/MdePkg/Library/BaseLib/X64/ReadMsr64.c index 15a573fc09..19f7939654 100644 --- a/MdePkg/Library/BaseLib/X64/ReadMsr64.c +++ b/MdePkg/Library/BaseLib/X64/ReadMsr64.c @@ -12,13 +12,21 @@ **/
-//
-// Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics
-//
+/**
+ Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics.
+**/
unsigned __int64 __readmsr (int register);
#pragma intrinsic(__readmsr)
+/**
+ Read data to MSR.
+
+ @param Index Register index of MSR.
+
+ @return Value read from MSR.
+
+**/
UINT64
EFIAPI
diff --git a/MdePkg/Library/BaseLib/X64/WriteMsr64.c b/MdePkg/Library/BaseLib/X64/WriteMsr64.c index 1d1e0bc332..77d8c59724 100644 --- a/MdePkg/Library/BaseLib/X64/WriteMsr64.c +++ b/MdePkg/Library/BaseLib/X64/WriteMsr64.c @@ -12,13 +12,22 @@ **/
-//
-// Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics
-//
+/**
+ Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics.
+**/
void __writemsr (unsigned long Register, unsigned __int64 Value);
#pragma intrinsic(__writemsr)
+/**
+ Write data to MSR.
+
+ @param Index Register index of MSR.
+ @param Value Data wants to be written.
+
+ @return Value written to MSR.
+
+**/
UINT64
EFIAPI
AsmWriteMsr64 (
|