EDK2 doxygen online documents - Firmware Encoding Index 1
EDK2 doxygen online documents - Firmware Encoding Index
Functions

UnixPkg/Library/UnixBaseLib/X64/GccInline.c File Reference

#include "BaseLibInternals.h"

Go to the source code of this file.

Functions

VOID EFIAPI MemoryFence (VOID)
VOID EFIAPI EnableInterrupts (VOID)
VOID EFIAPI DisableInterrupts (VOID)
VOID EFIAPI CpuPause (VOID)
VOID EFIAPI CpuBreakpoint (VOID)
UINT64 EFIAPI AsmReadMsr64 (IN UINT32 Index)
UINT64 EFIAPI AsmWriteMsr64 (IN UINT32 Index, IN UINT64 Value)
UINTN EFIAPI AsmReadEflags (VOID)
UINTN EFIAPI AsmReadCr0 (VOID)
UINTN EFIAPI AsmReadCr2 (VOID)
UINTN EFIAPI AsmReadCr3 (VOID)
UINTN EFIAPI AsmReadCr4 (VOID)
UINTN EFIAPI AsmWriteCr0 (UINTN Cr0)
UINTN EFIAPI AsmWriteCr2 (UINTN Cr2)
UINTN EFIAPI AsmWriteCr3 (UINTN Cr3)
UINTN EFIAPI AsmWriteCr4 (UINTN Cr4)
UINTN EFIAPI AsmReadDr0 (VOID)
UINTN EFIAPI AsmReadDr1 (VOID)
UINTN EFIAPI AsmReadDr2 (VOID)
UINTN EFIAPI AsmReadDr3 (VOID)
UINTN EFIAPI AsmReadDr4 (VOID)
UINTN EFIAPI AsmReadDr5 (VOID)
UINTN EFIAPI AsmReadDr6 (VOID)
UINTN EFIAPI AsmReadDr7 (VOID)
UINTN EFIAPI AsmWriteDr0 (UINTN Dr0)
UINTN EFIAPI AsmWriteDr1 (UINTN Dr1)
UINTN EFIAPI AsmWriteDr2 (UINTN Dr2)
UINTN EFIAPI AsmWriteDr3 (UINTN Dr3)
UINTN EFIAPI AsmWriteDr4 (UINTN Dr4)
UINTN EFIAPI AsmWriteDr5 (UINTN Dr5)
UINTN EFIAPI AsmWriteDr6 (UINTN Dr6)
UINTN EFIAPI AsmWriteDr7 (UINTN Dr7)
UINT16 EFIAPI AsmReadCs (VOID)
UINT16 EFIAPI AsmReadDs (VOID)
UINT16 EFIAPI AsmReadEs (VOID)
UINT16 EFIAPI AsmReadFs (VOID)
UINT16 EFIAPI AsmReadGs (VOID)
UINT16 EFIAPI AsmReadSs (VOID)
UINT16 EFIAPI AsmReadTr (VOID)
VOID EFIAPI InternalX86ReadGdtr (OUT IA32_DESCRIPTOR *Gdtr)
VOID EFIAPI InternalX86WriteGdtr (IN CONST IA32_DESCRIPTOR *Gdtr)
VOID EFIAPI InternalX86ReadIdtr (OUT IA32_DESCRIPTOR *Idtr)
VOID EFIAPI InternalX86WriteIdtr (IN CONST IA32_DESCRIPTOR *Idtr)
UINT16 EFIAPI AsmReadLdtr (VOID)
VOID EFIAPI AsmWriteLdtr (IN UINT16 Ldtr)
VOID EFIAPI InternalX86FxSave (OUT IA32_FX_BUFFER *Buffer)
VOID EFIAPI InternalX86FxRestore (IN CONST IA32_FX_BUFFER *Buffer)
UINT64 EFIAPI AsmReadMm0 (VOID)
UINT64 EFIAPI AsmReadMm1 (VOID)
UINT64 EFIAPI AsmReadMm2 (VOID)
UINT64 EFIAPI AsmReadMm3 (VOID)
UINT64 EFIAPI AsmReadMm4 (VOID)
UINT64 EFIAPI AsmReadMm5 (VOID)
UINT64 EFIAPI AsmReadMm6 (VOID)
UINT64 EFIAPI AsmReadMm7 (VOID)
VOID EFIAPI AsmWriteMm0 (IN UINT64 Value)
VOID EFIAPI AsmWriteMm1 (IN UINT64 Value)
VOID EFIAPI AsmWriteMm2 (IN UINT64 Value)
VOID EFIAPI AsmWriteMm3 (IN UINT64 Value)
VOID EFIAPI AsmWriteMm4 (IN UINT64 Value)
VOID EFIAPI AsmWriteMm5 (IN UINT64 Value)
VOID EFIAPI AsmWriteMm6 (IN UINT64 Value)
VOID EFIAPI AsmWriteMm7 (IN UINT64 Value)
UINT64 EFIAPI AsmReadTsc (VOID)
UINT64 EFIAPI AsmReadPmc (IN UINT32 Index)
UINTN EFIAPI AsmMonitor (IN UINTN Eax, IN UINTN Ecx, IN UINTN Edx)
UINTN EFIAPI AsmMwait (IN UINTN Eax, IN UINTN Ecx)
VOID EFIAPI AsmWbinvd (VOID)
VOID EFIAPI AsmInvd (VOID)
VOID *EFIAPI AsmFlushCacheLine (IN VOID *LinearAddress)

Detailed Description

GCC inline implementation of BaseLib processor specific functions.

Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
Portions copyright (c) 2008 - 2009, Apple Inc. 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.

Definition in file GccInline.c.


Function Documentation

VOID* EFIAPI AsmFlushCacheLine ( IN VOID *  LinearAddress)

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.

Parameters:
LinearAddressThe 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.
Returns:
LinearAddress

Definition at line 1787 of file GccInline.c.

VOID EFIAPI AsmInvd ( VOID  )

Executes a INVD instruction.

Executes a INVD instruction. This function is only available on IA-32 and X64.

Definition at line 1761 of file GccInline.c.

UINTN EFIAPI AsmMonitor ( IN UINTN  Eax,
IN UINTN  Ecx,
IN UINTN  Edx 
)

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.

Parameters:
EaxThe value to load into EAX or RAX before executing the MONITOR instruction.
EcxThe value to load into ECX or RCX before executing the MONITOR instruction.
EdxThe value to load into EDX or RDX before executing the MONITOR instruction.
Returns:
Eax

Definition at line 1685 of file GccInline.c.

UINTN EFIAPI AsmMwait ( IN UINTN  Eax,
IN UINTN  Ecx 
)

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.

Parameters:
EaxThe value to load into EAX or RAX before executing the MONITOR instruction.
EcxThe value to load into ECX or RCX before executing the MONITOR instruction.
Returns:
Eax

Definition at line 1719 of file GccInline.c.

UINTN EFIAPI AsmReadCr0 ( VOID  )

Reads the current value of the Control Register 0 (CR0).

Reads and returns the current value of CR0. 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.

Returns:
The value of the Control Register 0 (CR0).

Definition at line 228 of file GccInline.c.

UINTN EFIAPI AsmReadCr2 ( VOID  )

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.

Returns:
The value of the Control Register 2 (CR2).

Definition at line 255 of file GccInline.c.

UINTN EFIAPI AsmReadCr3 ( VOID  )

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.

Returns:
The value of the Control Register 3 (CR3).

Definition at line 281 of file GccInline.c.

UINTN EFIAPI AsmReadCr4 ( VOID  )

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.

Returns:
The value of the Control Register 4 (CR4).

Definition at line 308 of file GccInline.c.

UINT16 EFIAPI AsmReadCs ( VOID  )

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.

Returns:
The current value of CS.

Definition at line 857 of file GccInline.c.

UINTN EFIAPI AsmReadDr0 ( VOID  )

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.

Returns:
The value of Debug Register 0 (DR0).

Definition at line 434 of file GccInline.c.

UINTN EFIAPI AsmReadDr1 ( VOID  )

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.

Returns:
The value of Debug Register 1 (DR1).

Definition at line 461 of file GccInline.c.

UINTN EFIAPI AsmReadDr2 ( VOID  )

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.

Returns:
The value of Debug Register 2 (DR2).

Definition at line 488 of file GccInline.c.

UINTN EFIAPI AsmReadDr3 ( VOID  )

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.

Returns:
The value of Debug Register 3 (DR3).

Definition at line 515 of file GccInline.c.

UINTN EFIAPI AsmReadDr4 ( VOID  )

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.

Returns:
The value of Debug Register 4 (DR4).

Definition at line 542 of file GccInline.c.

UINTN EFIAPI AsmReadDr5 ( VOID  )

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.

Returns:
The value of Debug Register 5 (DR5).

Definition at line 569 of file GccInline.c.

UINTN EFIAPI AsmReadDr6 ( VOID  )

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.

Returns:
The value of Debug Register 6 (DR6).

Definition at line 596 of file GccInline.c.

UINTN EFIAPI AsmReadDr7 ( VOID  )

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.

Returns:
The value of Debug Register 7 (DR7).

Definition at line 623 of file GccInline.c.

UINT16 EFIAPI AsmReadDs ( VOID  )

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.

Returns:
The current value of DS.

Definition at line 883 of file GccInline.c.

UINTN EFIAPI AsmReadEflags ( VOID  )

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.

Returns:
EFLAGS on IA-32 or RFLAGS on X64.

Definition at line 199 of file GccInline.c.

UINT16 EFIAPI AsmReadEs ( VOID  )

Reads the current value of Extra Segment Register (ES).

Reads and returns the current value of ES. This function is only available on IA-32 and X64.

Returns:
The current value of ES.

Definition at line 909 of file GccInline.c.

UINT16 EFIAPI AsmReadFs ( VOID  )

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.

Returns:
The current value of FS.

Definition at line 935 of file GccInline.c.

UINT16 EFIAPI AsmReadGs ( VOID  )

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.

Returns:
The current value of GS.

Definition at line 961 of file GccInline.c.

UINT16 EFIAPI AsmReadLdtr ( VOID  )

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.

Returns:
The current selector of LDT.

Definition at line 1130 of file GccInline.c.

UINT64 EFIAPI AsmReadMm0 ( VOID  )

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.

Returns:
The current value of MM0.

Definition at line 1227 of file GccInline.c.

UINT64 EFIAPI AsmReadMm1 ( VOID  )

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.

Returns:
The current value of MM1.

Definition at line 1253 of file GccInline.c.

UINT64 EFIAPI AsmReadMm2 ( VOID  )

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.

Returns:
The current value of MM2.

Definition at line 1279 of file GccInline.c.

UINT64 EFIAPI AsmReadMm3 ( VOID  )

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.

Returns:
The current value of MM3.

Definition at line 1305 of file GccInline.c.

UINT64 EFIAPI AsmReadMm4 ( VOID  )

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.

Returns:
The current value of MM4.

Definition at line 1331 of file GccInline.c.

UINT64 EFIAPI AsmReadMm5 ( VOID  )

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.

Returns:
The current value of MM5.

Definition at line 1357 of file GccInline.c.

UINT64 EFIAPI AsmReadMm6 ( VOID  )

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.

Returns:
The current value of MM6.

Definition at line 1383 of file GccInline.c.

UINT64 EFIAPI AsmReadMm7 ( VOID  )

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.

Returns:
The current value of MM7.

Definition at line 1409 of file GccInline.c.

UINT64 EFIAPI AsmReadMsr64 ( IN UINT32  Index)

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.

Parameters:
IndexThe 32-bit MSR index to read.
Returns:
The value of the MSR identified by Index.

Definition at line 127 of file GccInline.c.

UINT64 EFIAPI AsmReadPmc ( IN UINT32  Index)

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.

Parameters:
IndexThe 32-bit Performance Counter index to read.
Returns:
The value of the PMC specified by Index.

Definition at line 1649 of file GccInline.c.

UINT16 EFIAPI AsmReadSs ( VOID  )

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.

Returns:
The current value of SS.

Definition at line 987 of file GccInline.c.

UINT16 EFIAPI AsmReadTr ( VOID  )

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.

Returns:
The current value of TR.

Definition at line 1013 of file GccInline.c.

UINT64 EFIAPI AsmReadTsc ( VOID  )

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.

Returns:
The current value of TSC

Definition at line 1619 of file GccInline.c.

VOID EFIAPI AsmWbinvd ( VOID  )

Executes a WBINVD instruction.

Executes a WBINVD instruction. This function is only available on IA-32 and X64.

Definition at line 1744 of file GccInline.c.

UINTN EFIAPI AsmWriteCr0 ( UINTN  Cr0)

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.

Parameters:
Cr0The value to write to CR0.
Returns:
The value written to CR0.

Definition at line 336 of file GccInline.c.

UINTN EFIAPI AsmWriteCr2 ( UINTN  Cr2)

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.

Parameters:
Cr2The value to write to CR2.
Returns:
The value written to CR2.

Definition at line 362 of file GccInline.c.

UINTN EFIAPI AsmWriteCr3 ( UINTN  Cr3)

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.

Parameters:
Cr3The value to write to CR3.
Returns:
The value written to CR3.

Definition at line 388 of file GccInline.c.

UINTN EFIAPI AsmWriteCr4 ( UINTN  Cr4)

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.

Parameters:
Cr4The value to write to CR4.
Returns:
The value written to CR4.

Definition at line 409 of file GccInline.c.

UINTN EFIAPI AsmWriteDr0 ( UINTN  Dr0)

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.

Parameters:
Dr0The value to write to Dr0.
Returns:
The value written to Debug Register 0 (DR0).

Definition at line 651 of file GccInline.c.

UINTN EFIAPI AsmWriteDr1 ( UINTN  Dr1)

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.

Parameters:
Dr1The value to write to Dr1.
Returns:
The value written to Debug Register 1 (DR1).

Definition at line 677 of file GccInline.c.

UINTN EFIAPI AsmWriteDr2 ( UINTN  Dr2)

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.

Parameters:
Dr2The value to write to Dr2.
Returns:
The value written to Debug Register 2 (DR2).

Definition at line 703 of file GccInline.c.

UINTN EFIAPI AsmWriteDr3 ( UINTN  Dr3)

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.

Parameters:
Dr3The value to write to Dr3.
Returns:
The value written to Debug Register 3 (DR3).

Definition at line 729 of file GccInline.c.

UINTN EFIAPI AsmWriteDr4 ( UINTN  Dr4)

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.

Parameters:
Dr4The value to write to Dr4.
Returns:
The value written to Debug Register 4 (DR4).

Definition at line 755 of file GccInline.c.

UINTN EFIAPI AsmWriteDr5 ( UINTN  Dr5)

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.

Parameters:
Dr5The value to write to Dr5.
Returns:
The value written to Debug Register 5 (DR5).

Definition at line 781 of file GccInline.c.

UINTN EFIAPI AsmWriteDr6 ( UINTN  Dr6)

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.

Parameters:
Dr6The value to write to Dr6.
Returns:
The value written to Debug Register 6 (DR6).

Definition at line 807 of file GccInline.c.

UINTN EFIAPI AsmWriteDr7 ( UINTN  Dr7)

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.

Parameters:
Dr7The value to write to Dr7.
Returns:
The value written to Debug Register 7 (DR7).

Definition at line 833 of file GccInline.c.

VOID EFIAPI AsmWriteLdtr ( IN UINT16  Ldtr)

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.

Parameters:
Ldtr16-bit LDTR selector value.

Definition at line 1156 of file GccInline.c.

VOID EFIAPI AsmWriteMm0 ( IN UINT64  Value)

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.

Parameters:
ValueThe 64-bit value to write to MM0.

Definition at line 1435 of file GccInline.c.

VOID EFIAPI AsmWriteMm1 ( IN UINT64  Value)

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.

Parameters:
ValueThe 64-bit value to write to MM1.

Definition at line 1458 of file GccInline.c.

VOID EFIAPI AsmWriteMm2 ( IN UINT64  Value)

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.

Parameters:
ValueThe 64-bit value to write to MM2.

Definition at line 1481 of file GccInline.c.

VOID EFIAPI AsmWriteMm3 ( IN UINT64  Value)

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.

Parameters:
ValueThe 64-bit value to write to MM3.

Definition at line 1504 of file GccInline.c.

VOID EFIAPI AsmWriteMm4 ( IN UINT64  Value)

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.

Parameters:
ValueThe 64-bit value to write to MM4.

Definition at line 1527 of file GccInline.c.

VOID EFIAPI AsmWriteMm5 ( IN UINT64  Value)

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.

Parameters:
ValueThe 64-bit value to write to MM5.

Definition at line 1550 of file GccInline.c.

VOID EFIAPI AsmWriteMm6 ( IN UINT64  Value)

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.

Parameters:
ValueThe 64-bit value to write to MM6.

Definition at line 1573 of file GccInline.c.

VOID EFIAPI AsmWriteMm7 ( IN UINT64  Value)

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.

Parameters:
ValueThe 64-bit value to write to MM7.

Definition at line 1596 of file GccInline.c.

UINT64 EFIAPI AsmWriteMsr64 ( IN UINT32  Index,
IN UINT64  Value 
)

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.

Parameters:
IndexThe 32-bit MSR index to write.
ValueThe 64-bit value to write to the MSR.
Returns:
Value

Definition at line 163 of file GccInline.c.

VOID EFIAPI CpuBreakpoint ( VOID  )

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.

Definition at line 102 of file GccInline.c.

VOID EFIAPI CpuPause ( VOID  )

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.

Definition at line 85 of file GccInline.c.

VOID EFIAPI DisableInterrupts ( VOID  )

Disables CPU interrupts.

Disables CPU interrupts.

Definition at line 66 of file GccInline.c.

VOID EFIAPI EnableInterrupts ( VOID  )

Enables CPU interrupts.

Enables CPU interrupts.

Definition at line 50 of file GccInline.c.

VOID EFIAPI InternalX86FxRestore ( IN CONST IA32_FX_BUFFER Buffer)

Restores the current floating point/SSE/SSE2 context from a buffer.

Restores the current floating point/SSE/SSE2 state from the buffer specified by Buffer. Buffer must be aligned on a 16-byte boundary. This function is only available on IA-32 and X64.

Parameters:
BufferThe pointer to a buffer to save the floating point/SSE/SSE2 context.

Definition at line 1204 of file GccInline.c.

VOID EFIAPI InternalX86FxSave ( OUT IA32_FX_BUFFER Buffer)

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.

Parameters:
BufferThe pointer to a buffer to save the floating point/SSE/SSE2 context.

Definition at line 1180 of file GccInline.c.

VOID EFIAPI InternalX86ReadGdtr ( OUT IA32_DESCRIPTOR *  Gdtr)

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.

Parameters:
GdtrThe pointer to a GDTR descriptor.

Definition at line 1039 of file GccInline.c.

VOID EFIAPI InternalX86ReadIdtr ( OUT IA32_DESCRIPTOR *  Idtr)

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.

Parameters:
IdtrThe pointer to a IDTR descriptor.

Definition at line 1085 of file GccInline.c.

VOID EFIAPI InternalX86WriteGdtr ( IN CONST IA32_DESCRIPTOR *  Gdtr)

Writes the current Global Descriptor Table Register (GDTR) descriptor.

Writes and the current GDTR descriptor specified by Gdtr. This function is only available on IA-32 and X64.

Parameters:
GdtrThe pointer to a GDTR descriptor.

Definition at line 1061 of file GccInline.c.

VOID EFIAPI InternalX86WriteIdtr ( IN CONST IA32_DESCRIPTOR *  Idtr)

Writes the current Interrupt Descriptor Table Register(GDTR) descriptor.

Writes the current IDTR descriptor and returns it in Idtr. This function is only available on IA-32 and X64.

Parameters:
IdtrThe pointer to a IDTR descriptor.

Definition at line 1107 of file GccInline.c.

VOID EFIAPI MemoryFence ( VOID  )

Used to serialize load and store operations.

All loads and stores that proceed calls to this function are guaranteed to be globally visible when this function returns.

Definition at line 31 of file GccInline.c.

 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Defines