Optimize the size of the Base Library for the MSFT 32-bit tool chains by taking advantage of inline assembly.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1567 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -100,103 +100,114 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
<Filename SupArchList="IA32">Unaligned.c</Filename>
|
<Filename SupArchList="IA32">Unaligned.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/Non-existing.c</Filename>
|
<Filename SupArchList="IA32">Ia32/Non-existing.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/InternalSwitchStack.c</Filename>
|
<Filename SupArchList="IA32">Ia32/InternalSwitchStack.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/LShiftU64.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/RShiftU64.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/ARShiftU64.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/ARShiftU64.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/CpuBreakpoint.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/LRotU64.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/CpuFlushTlb.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/RRotU64.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/CpuSleep.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/MultU64x32.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/CpuId.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/MultU64x64.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/CpuIdEx.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/DivU64x32.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/CpuPause.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/ModU64x32.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/DisableInterrupts.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/DivU64x32Remainder.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/DisablePaging32.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/DivU64x64Remainder.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/DivU64x32.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/DivU64x32Remainder.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/DivU64x64Remainder.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/DivS64x64Remainder.c</Filename>
|
<Filename SupArchList="IA32">Ia32/DivS64x64Remainder.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/SwapBytes64.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/SetJump.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/EnableDisableInterrupts.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/LongJump.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/EnableInterrupts.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/CpuId.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/EnablePaging32.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/CpuIdEx.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadEflags.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadMsr64.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteMsr64.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadCr0.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadCr2.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadCr3.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadCr4.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteCr0.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteCr2.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteCr3.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteCr4.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadDr0.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadDr1.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadDr2.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadDr3.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadDr4.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadDr5.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadDr6.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadDr7.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteDr0.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteDr1.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteDr2.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteDr3.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteDr4.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteDr5.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteDr6.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteDr7.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadCs.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadDs.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadEs.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadFs.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadGs.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadSs.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadTr.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadGdtr.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteGdtr.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadIdtr.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteIdtr.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadLdtr.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteLdtr.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/FxSave.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/FxRestore.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadMm0.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadMm1.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadMm2.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadMm3.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadMm4.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadMm5.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadMm6.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadMm7.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteMm0.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteMm1.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteMm2.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteMm3.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteMm4.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteMm5.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteMm6.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/WriteMm7.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadTsc.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/ReadPmc.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/Monitor.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/Mwait.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/EnablePaging32.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/DisablePaging32.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/EnablePaging64.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/EnablePaging64.asm</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/Wbinvd.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/Invd.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/FlushCacheLine.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/FlushCacheLine.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/InterlockedIncrement.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/FxSave.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/InterlockedDecrement.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/FxRestore.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/InterlockedCompareExchange32.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/InterlockedCompareExchange64.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/InterlockedIncrement.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/EnableInterrupts.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/InterlockedDecrement.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/DisableInterrupts.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/InterlockedCompareExchange32.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/EnableDisableInterrupts.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/InterlockedCompareExchange64.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/CpuSleep.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/Invd.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/CpuPause.asm</Filename>
|
|
||||||
<Filename SupArchList="IA32">Ia32/CpuBreakpoint.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/LongJump.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/CpuFlushTlb.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/LRotU64.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/LShiftU64.c</Filename>
|
||||||
|
|
||||||
|
<Filename SupArchList="IA32">Ia32/MultU64x32.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/MultU64x64.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ModU64x32.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/Monitor.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/Mwait.c</Filename>
|
||||||
|
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadCr0.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadCr2.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadCr3.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadCr4.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadDr0.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadDr1.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadDr2.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadDr3.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadDr4.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadDr5.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadDr6.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadDr7.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadEflags.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadMm0.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadMm1.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadMm2.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadMm3.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadMm4.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadMm5.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadMm6.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadMm7.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadMsr64.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadCs.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadDs.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadEs.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadFs.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadGs.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadSs.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadTr.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadGdtr.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadIdtr.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadLdtr.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadTsc.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/ReadPmc.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/RShiftU64.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/RRotU64.c</Filename>
|
||||||
|
|
||||||
|
<Filename SupArchList="IA32">Ia32/SetJump.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/SwapBytes64.c</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/Thunk16.asm</Filename>
|
<Filename SupArchList="IA32">Ia32/Thunk16.asm</Filename>
|
||||||
|
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteMsr64.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteCr0.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteCr2.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteCr3.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteCr4.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteDr0.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteDr1.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteDr2.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteDr3.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteDr4.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteDr5.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteDr6.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteDr7.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteGdtr.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteIdtr.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteLdtr.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteMm0.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteMm1.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteMm2.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteMm3.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteMm4.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteMm5.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteMm6.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/WriteMm7.c</Filename>
|
||||||
|
<Filename SupArchList="IA32">Ia32/Wbinvd.c</Filename>
|
||||||
|
|
||||||
<!-- GCC assembly code is with .S extension -->
|
<!-- GCC assembly code is with .S extension -->
|
||||||
<Filename SupArchList="IA32">Ia32/LShiftU64.S</Filename>
|
<Filename SupArchList="IA32">Ia32/LShiftU64.S</Filename>
|
||||||
<Filename SupArchList="IA32">Ia32/RShiftU64.S</Filename>
|
<Filename SupArchList="IA32">Ia32/RShiftU64.S</Filename>
|
||||||
|
36
MdePkg/Library/BaseLib/Ia32/ARShiftU64.c
Normal file
36
MdePkg/Library/BaseLib/Ia32/ARShiftU64.c
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/** @file
|
||||||
|
64-bit arithmetic right shift function for IA-32.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
InternalMathARShiftU64 (
|
||||||
|
IN UINT64 Operand,
|
||||||
|
IN UINTN Count
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov cl, byte ptr [Count]
|
||||||
|
mov eax, dword ptr [Operand + 4]
|
||||||
|
cdq
|
||||||
|
test cl, 32
|
||||||
|
cmovz edx, eax
|
||||||
|
cmovz eax, dword ptr [Operand + 0]
|
||||||
|
shrd eax, edx, cl
|
||||||
|
sar edx, cl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/CpuBreakpoint.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/CpuBreakpoint.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
CpuBreakpoint function.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
CpuBreakpoint (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
int 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/CpuFlushTlb.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/CpuFlushTlb.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
CpuFlushTlb function.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
CpuFlushTlb (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, cr3
|
||||||
|
mov cr3, eax
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
52
MdePkg/Library/BaseLib/Ia32/CpuId.c
Normal file
52
MdePkg/Library/BaseLib/Ia32/CpuId.c
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
/** @file
|
||||||
|
AsmCpuid function.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT32
|
||||||
|
EFIAPI
|
||||||
|
AsmCpuid (
|
||||||
|
IN UINT32 Index,
|
||||||
|
OUT UINT32 *RegisterEax, OPTIONAL
|
||||||
|
OUT UINT32 *RegisterEbx, OPTIONAL
|
||||||
|
OUT UINT32 *RegisterEcx, OPTIONAL
|
||||||
|
OUT UINT32 *RegisterEdx OPTIONAL
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Index
|
||||||
|
cpuid
|
||||||
|
push ecx
|
||||||
|
mov ecx, RegisterEax
|
||||||
|
jecxz SkipEax
|
||||||
|
mov [ecx], eax
|
||||||
|
SkipEax:
|
||||||
|
mov ecx, RegisterEbx
|
||||||
|
jecxz SkipEbx
|
||||||
|
mov [ecx], ebx
|
||||||
|
SkipEbx:
|
||||||
|
pop eax
|
||||||
|
mov ecx, RegisterEcx
|
||||||
|
jecxz SkipEcx
|
||||||
|
mov [ecx], eax
|
||||||
|
SkipEcx:
|
||||||
|
mov ecx, RegisterEdx
|
||||||
|
jecxz SkipEdx
|
||||||
|
mov [ecx], edx
|
||||||
|
SkipEdx:
|
||||||
|
mov eax, Index
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
54
MdePkg/Library/BaseLib/Ia32/CpuIdEx.c
Normal file
54
MdePkg/Library/BaseLib/Ia32/CpuIdEx.c
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
/** @file
|
||||||
|
AsmCpuidEx function.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT32
|
||||||
|
EFIAPI
|
||||||
|
AsmCpuidEx (
|
||||||
|
IN UINT32 Index,
|
||||||
|
IN UINT32 SubIndex,
|
||||||
|
OUT UINT32 *RegisterEax, OPTIONAL
|
||||||
|
OUT UINT32 *RegisterEbx, OPTIONAL
|
||||||
|
OUT UINT32 *RegisterEcx, OPTIONAL
|
||||||
|
OUT UINT32 *RegisterEdx OPTIONAL
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Index
|
||||||
|
mov ecx, SubIndex
|
||||||
|
cpuid
|
||||||
|
push ecx
|
||||||
|
mov ecx, RegisterEax
|
||||||
|
jecxz SkipEax
|
||||||
|
mov [ecx], eax
|
||||||
|
SkipEax:
|
||||||
|
mov ecx, RegisterEbx
|
||||||
|
jecxz SkipEbx
|
||||||
|
mov [ecx], ebx
|
||||||
|
SkipEbx:
|
||||||
|
pop eax
|
||||||
|
mov ecx, RegisterEcx
|
||||||
|
jecxz SkipEcx
|
||||||
|
mov [ecx], eax
|
||||||
|
SkipEcx:
|
||||||
|
mov ecx, RegisterEdx
|
||||||
|
jecxz SkipEdx
|
||||||
|
mov [ecx], edx
|
||||||
|
SkipEdx:
|
||||||
|
mov eax, Index
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/CpuPause.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/CpuPause.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
CpuPause function.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
CpuPause (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
pause
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/CpuSleep.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/CpuSleep.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
CpuSleep function.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
CpuSleep (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
hlt
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/DisableInterrupts.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/DisableInterrupts.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
DisableInterrupts function.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
DisableInterrupts (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
cli
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
49
MdePkg/Library/BaseLib/Ia32/DisablePaging32.c
Normal file
49
MdePkg/Library/BaseLib/Ia32/DisablePaging32.c
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
/** @file
|
||||||
|
AsmDisablePaging32 function.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
__declspec (naked)
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
InternalX86DisablePaging32 (
|
||||||
|
IN SWITCH_STACK_ENTRY_POINT EntryPoint,
|
||||||
|
IN VOID *Context1, OPTIONAL
|
||||||
|
IN VOID *Context2, OPTIONAL
|
||||||
|
IN VOID *NewStack
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
push ebp
|
||||||
|
mov ebp, esp
|
||||||
|
mov ebx, EntryPoint
|
||||||
|
mov ecx, Context1
|
||||||
|
mov edx, Context2
|
||||||
|
pushfd
|
||||||
|
pop edi // save EFLAGS to edi
|
||||||
|
cli
|
||||||
|
mov eax, cr0
|
||||||
|
btr eax, 31
|
||||||
|
mov esp, NewStack
|
||||||
|
mov cr0, eax
|
||||||
|
push edi
|
||||||
|
popfd // restore EFLAGS from edi
|
||||||
|
push edx
|
||||||
|
push ecx
|
||||||
|
call ebx
|
||||||
|
jmp $ // EntryPoint() should not return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
36
MdePkg/Library/BaseLib/Ia32/DivU64x32.c
Normal file
36
MdePkg/Library/BaseLib/Ia32/DivU64x32.c
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/** @file
|
||||||
|
Calculate the quotient of a 64-bit integer by a 32-bit integer
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
InternalMathDivU64x32 (
|
||||||
|
IN UINT64 Dividend,
|
||||||
|
IN UINT32 Divisor
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, dword ptr [Dividend + 4]
|
||||||
|
mov ecx, Divisor
|
||||||
|
xor edx, edx
|
||||||
|
div ecx
|
||||||
|
push eax ; save quotient on stack
|
||||||
|
mov eax, dword ptr [Dividend]
|
||||||
|
div ecx
|
||||||
|
pop edx ; restore high-order dword of the quotient
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
41
MdePkg/Library/BaseLib/Ia32/DivU64x32Remainder.c
Normal file
41
MdePkg/Library/BaseLib/Ia32/DivU64x32Remainder.c
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
/** @file
|
||||||
|
Set error flag for all division functions
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
InternalMathDivRemU64x32 (
|
||||||
|
IN UINT64 Dividend,
|
||||||
|
IN UINT32 Divisor,
|
||||||
|
OUT UINT32 *Remainder
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov ecx, Divisor
|
||||||
|
mov eax, dword ptr [Dividend + 4]
|
||||||
|
xor edx, edx
|
||||||
|
div ecx
|
||||||
|
push eax
|
||||||
|
mov eax, dword ptr [Dividend + 0]
|
||||||
|
div ecx
|
||||||
|
mov ecx, Remainder
|
||||||
|
jecxz RemainderNull // abandon remainder if Remainder == NULL
|
||||||
|
mov [ecx], edx
|
||||||
|
RemainderNull:
|
||||||
|
pop edx
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
68
MdePkg/Library/BaseLib/Ia32/DivU64x64Remainder.c
Normal file
68
MdePkg/Library/BaseLib/Ia32/DivU64x64Remainder.c
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
/** @file
|
||||||
|
Calculate the quotient of a 64-bit integer by a 64-bit integer and returns
|
||||||
|
both the quotient and the remainderSet error flag for all division functions
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
InternalMathDivRemU64x64 (
|
||||||
|
IN UINT64 Dividend,
|
||||||
|
IN UINT64 Divisor,
|
||||||
|
OUT UINT64 *Remainder OPTIONAL
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov edx, dword ptr [Dividend + 4]
|
||||||
|
mov eax, dword ptr [Dividend + 0] // edx:eax <- dividend
|
||||||
|
mov edi, edx
|
||||||
|
mov esi, eax // edi:esi <- dividend
|
||||||
|
mov ebx, dword ptr [Divisor + 0] // ecx:ebx <- divisor
|
||||||
|
BitLoop:
|
||||||
|
shr edx, 1
|
||||||
|
rcr eax, 1
|
||||||
|
shrd ebx, ecx, 1
|
||||||
|
shr ecx, 1
|
||||||
|
jnz BitLoop
|
||||||
|
div ebx
|
||||||
|
mov ebx, eax // ebx <- quotient
|
||||||
|
mov ecx, dword ptr [Divisor + 4]
|
||||||
|
mul dword ptr [Divisor]
|
||||||
|
imul ecx, ebx
|
||||||
|
add edx, ecx
|
||||||
|
mov ecx, Remainder
|
||||||
|
jc TooLarge // product > 2^64
|
||||||
|
cmp edi, edx // compare high 32 bits
|
||||||
|
ja Correct
|
||||||
|
jb TooLarge // product > dividend
|
||||||
|
cmp esi, eax
|
||||||
|
jae Correct // product <= dividend
|
||||||
|
TooLarge:
|
||||||
|
dec ebx // adjust quotient by -1
|
||||||
|
jecxz Return // return if Remainder == NULL
|
||||||
|
sub eax, dword ptr [Divisor + 0]
|
||||||
|
sbb edx, dword ptr [Divisor + 4]
|
||||||
|
Correct:
|
||||||
|
jecxz Return
|
||||||
|
sub esi, eax
|
||||||
|
sbb edi, edx // edi:esi <- remainder
|
||||||
|
mov [ecx], esi
|
||||||
|
mov [ecx + 4], edi
|
||||||
|
Return:
|
||||||
|
mov eax, ebx // eax <- quotient
|
||||||
|
xor edx, edx
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
31
MdePkg/Library/BaseLib/Ia32/EnableDisableInterrupts.c
Normal file
31
MdePkg/Library/BaseLib/Ia32/EnableDisableInterrupts.c
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
/** @file
|
||||||
|
EnableDisableInterrupts function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
EnableDisableInterrupts (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
sti
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
cli
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/EnableInterrupts.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/EnableInterrupts.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
EnableInterrupts function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
EnableInterrupts (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
sti
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
49
MdePkg/Library/BaseLib/Ia32/EnablePaging32.c
Normal file
49
MdePkg/Library/BaseLib/Ia32/EnablePaging32.c
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
/** @file
|
||||||
|
AsmEnablePaging32 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
__declspec (naked)
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
InternalX86EnablePaging32 (
|
||||||
|
IN SWITCH_STACK_ENTRY_POINT EntryPoint,
|
||||||
|
IN VOID *Context1, OPTIONAL
|
||||||
|
IN VOID *Context2, OPTIONAL
|
||||||
|
IN VOID *NewStack
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
push ebp
|
||||||
|
mov ebp, esp
|
||||||
|
mov ebx, EntryPoint
|
||||||
|
mov ecx, Context1
|
||||||
|
mov edx, Context2
|
||||||
|
pushfd
|
||||||
|
pop edi
|
||||||
|
cli
|
||||||
|
mov eax, cr0
|
||||||
|
bts eax, 31
|
||||||
|
mov esp, NewStack
|
||||||
|
mov cr0, eax
|
||||||
|
push edi
|
||||||
|
popfd
|
||||||
|
push edx
|
||||||
|
push ecx
|
||||||
|
call ebx
|
||||||
|
jmp $
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/FlushCacheLine.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/FlushCacheLine.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmFlushCacheLine function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID *
|
||||||
|
EFIAPI
|
||||||
|
AsmFlushCacheLine (
|
||||||
|
IN VOID *LinearAddress
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, LinearAddress
|
||||||
|
clflush [eax]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/FxRestore.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/FxRestore.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmFxRestore function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
InternalX86FxRestore (
|
||||||
|
IN CONST IA32_FX_BUFFER *Buffer
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Buffer
|
||||||
|
fxrstor [eax]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/FxSave.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/FxSave.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmFxSave function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
InternalX86FxSave (
|
||||||
|
OUT IA32_FX_BUFFER *Buffer
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Buffer
|
||||||
|
fxsave [eax]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
33
MdePkg/Library/BaseLib/Ia32/InterlockedCompareExchange32.c
Normal file
33
MdePkg/Library/BaseLib/Ia32/InterlockedCompareExchange32.c
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/** @file
|
||||||
|
InterlockedCompareExchange32 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT32
|
||||||
|
EFIAPI
|
||||||
|
InternalSyncCompareExchange32 (
|
||||||
|
IN UINT32 *Value,
|
||||||
|
IN UINT32 CompareValue,
|
||||||
|
IN UINT32 ExchangeValue
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov ecx, Value
|
||||||
|
mov eax, CompareValue
|
||||||
|
mov edx, ExchangeValue
|
||||||
|
lock cmpxchg [ecx], edx
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
35
MdePkg/Library/BaseLib/Ia32/InterlockedCompareExchange64.c
Normal file
35
MdePkg/Library/BaseLib/Ia32/InterlockedCompareExchange64.c
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
/** @file
|
||||||
|
InterlockedCompareExchange64 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
InternalSyncCompareExchange64 (
|
||||||
|
IN UINT64 *Value,
|
||||||
|
IN UINT64 CompareValue,
|
||||||
|
IN UINT64 ExchangeValue
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov esi, Value
|
||||||
|
mov eax, dword ptr [CompareValue + 0]
|
||||||
|
mov edx, dword ptr [CompareValue + 4]
|
||||||
|
mov ebx, dword ptr [ExchangeValue + 0]
|
||||||
|
mov ecx, dword ptr [ExchangeValue + 4]
|
||||||
|
lock cmpxchg8b qword ptr [esi]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
30
MdePkg/Library/BaseLib/Ia32/InterlockedDecrement.c
Normal file
30
MdePkg/Library/BaseLib/Ia32/InterlockedDecrement.c
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
/** @file
|
||||||
|
InterlockedDecrement function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT32
|
||||||
|
EFIAPI
|
||||||
|
InternalSyncDecrement (
|
||||||
|
IN UINT32 *Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Value
|
||||||
|
lock dec dword ptr [eax]
|
||||||
|
mov eax, [eax]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
30
MdePkg/Library/BaseLib/Ia32/InterlockedIncrement.c
Normal file
30
MdePkg/Library/BaseLib/Ia32/InterlockedIncrement.c
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
/** @file
|
||||||
|
InterLockedIncrement function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT32
|
||||||
|
EFIAPI
|
||||||
|
InternalSyncIncrement (
|
||||||
|
IN UINT32 *Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Value
|
||||||
|
lock inc dword ptr [eax]
|
||||||
|
mov eax, [eax]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/Invd.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/Invd.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
AsmInvd function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
AsmInvd (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
invd
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
39
MdePkg/Library/BaseLib/Ia32/LRotU64.c
Normal file
39
MdePkg/Library/BaseLib/Ia32/LRotU64.c
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/** @file
|
||||||
|
64-bit left rotation for Ia32
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
InternalMathLRotU64 (
|
||||||
|
IN UINT64 Operand,
|
||||||
|
IN UINTN Count
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov cl, byte ptr [Count]
|
||||||
|
mov edx, dword ptr [Operand + 4]
|
||||||
|
mov eax, dword ptr [Operand + 0]
|
||||||
|
shld ebx, edx, cl
|
||||||
|
shld edx, eax, cl
|
||||||
|
ror ebx, cl
|
||||||
|
shld eax, ebx, cl
|
||||||
|
test cl, 32 ; Count >= 32?
|
||||||
|
cmovnz ecx, eax
|
||||||
|
cmovnz eax, edx
|
||||||
|
cmovnz edx, ecx
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
36
MdePkg/Library/BaseLib/Ia32/LShiftU64.c
Normal file
36
MdePkg/Library/BaseLib/Ia32/LShiftU64.c
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/** @file
|
||||||
|
64-bit left shift function for IA-32.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
InternalMathLShiftU64 (
|
||||||
|
IN UINT64 Operand,
|
||||||
|
IN UINTN Count
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov cl, byte ptr [Count]
|
||||||
|
xor eax, eax
|
||||||
|
mov edx, dword ptr [Operand + 0]
|
||||||
|
test cl, 32 // Count >= 32?
|
||||||
|
cmovz eax, edx
|
||||||
|
cmovz edx, dword ptr [Operand + 4]
|
||||||
|
shld edx, eax, cl
|
||||||
|
shl eax, cl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
38
MdePkg/Library/BaseLib/Ia32/LongJump.c
Normal file
38
MdePkg/Library/BaseLib/Ia32/LongJump.c
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
/** @file
|
||||||
|
Implementation of _LongJump() on IA-32.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
__declspec (naked)
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
InternalLongJump (
|
||||||
|
IN BASE_LIBRARY_JUMP_BUFFER *JumpBuffer,
|
||||||
|
IN UINTN Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
pop eax ; skip return address
|
||||||
|
pop edx ; edx <- JumpBuffer
|
||||||
|
pop eax ; eax <- Value
|
||||||
|
mov ebx, [edx]
|
||||||
|
mov esi, [edx + 4]
|
||||||
|
mov edi, [edx + 8]
|
||||||
|
mov ebp, [edx + 12]
|
||||||
|
mov esp, [edx + 16]
|
||||||
|
jmp dword ptr [edx + 20]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
35
MdePkg/Library/BaseLib/Ia32/ModU64x32.c
Normal file
35
MdePkg/Library/BaseLib/Ia32/ModU64x32.c
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
/** @file
|
||||||
|
Calculate the remainder of a 64-bit integer by a 32-bit integer
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT32
|
||||||
|
EFIAPI
|
||||||
|
InternalMathModU64x32 (
|
||||||
|
IN UINT64 Dividend,
|
||||||
|
IN UINT32 Divisor
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, dword ptr [Dividend + 4]
|
||||||
|
mov ecx, Divisor
|
||||||
|
xor edx, edx
|
||||||
|
div ecx
|
||||||
|
mov eax, dword ptr [Dividend + 0]
|
||||||
|
div ecx
|
||||||
|
mov eax, edx
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
35
MdePkg/Library/BaseLib/Ia32/Monitor.c
Normal file
35
MdePkg/Library/BaseLib/Ia32/Monitor.c
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
/** @file
|
||||||
|
AsmMonitor function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmMonitor (
|
||||||
|
IN UINTN RegisterEax,
|
||||||
|
IN UINTN RegisterEcx,
|
||||||
|
IN UINTN RegisterEdx
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, RegisterEax
|
||||||
|
mov ecx, RegisterEcx
|
||||||
|
mov edx, RegisterEdx
|
||||||
|
_emit 0x0f // monitor
|
||||||
|
_emit 0x01
|
||||||
|
_emit 0xc8
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
33
MdePkg/Library/BaseLib/Ia32/MultU64x32.c
Normal file
33
MdePkg/Library/BaseLib/Ia32/MultU64x32.c
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/** @file
|
||||||
|
Calculate the product of a 64-bit integer and a 32-bit integer
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
InternalMathMultU64x32 (
|
||||||
|
IN UINT64 Multiplicand,
|
||||||
|
IN UINT32 Multiplier
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov ecx, Multiplier
|
||||||
|
mov eax, ecx
|
||||||
|
imul ecx, dword ptr [Multiplicand + 4] // overflow not detectable
|
||||||
|
mul dword ptr [Multiplicand + 0]
|
||||||
|
add edx, ecx
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
37
MdePkg/Library/BaseLib/Ia32/MultU64x64.c
Normal file
37
MdePkg/Library/BaseLib/Ia32/MultU64x64.c
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
/** @file
|
||||||
|
Calculate the product of a 64-bit integer and another 64-bit integer
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
InternalMathMultU64x64 (
|
||||||
|
IN UINT64 Multiplicand,
|
||||||
|
IN UINT64 Multiplier
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov ebx, dword ptr [Multiplicand + 0]
|
||||||
|
mov edx, dword ptr [Multiplier + 0]
|
||||||
|
mov ecx, ebx
|
||||||
|
mov eax, edx
|
||||||
|
imul ebx, dword ptr [Multiplier + 4]
|
||||||
|
imul edx, dword ptr [Multiplicand + 4]
|
||||||
|
add ebx, edx
|
||||||
|
mul ecx
|
||||||
|
add edx, ebx
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
33
MdePkg/Library/BaseLib/Ia32/Mwait.c
Normal file
33
MdePkg/Library/BaseLib/Ia32/Mwait.c
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/** @file
|
||||||
|
AsmMwait function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmMwait (
|
||||||
|
IN UINTN RegisterEax,
|
||||||
|
IN UINTN RegisterEcx
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, RegisterEax
|
||||||
|
mov ecx, RegisterEcx
|
||||||
|
_emit 0x0f // mwait
|
||||||
|
_emit 0x01
|
||||||
|
_emit 0xC9
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
39
MdePkg/Library/BaseLib/Ia32/RRotU64.c
Normal file
39
MdePkg/Library/BaseLib/Ia32/RRotU64.c
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/** @file
|
||||||
|
64-bit right rotation for Ia32
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
InternalMathRRotU64 (
|
||||||
|
IN UINT64 Operand,
|
||||||
|
IN UINTN Count
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov cl, byte ptr [Count]
|
||||||
|
mov eax, dword ptr [Operand + 0]
|
||||||
|
mov edx, dword ptr [Operand + 4]
|
||||||
|
shrd ebx, eax, cl
|
||||||
|
shrd eax, edx, cl
|
||||||
|
rol ebx, cl
|
||||||
|
shrd edx, ebx, cl
|
||||||
|
test cl, 32 // Count >= 32?
|
||||||
|
cmovnz ecx, eax
|
||||||
|
cmovnz eax, edx
|
||||||
|
cmovnz edx, ecx
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
36
MdePkg/Library/BaseLib/Ia32/RShiftU64.c
Normal file
36
MdePkg/Library/BaseLib/Ia32/RShiftU64.c
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/** @file
|
||||||
|
64-bit logical right shift function for IA-32
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
InternalMathRShiftU64 (
|
||||||
|
IN UINT64 Operand,
|
||||||
|
IN UINTN Count
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov cl, byte ptr [Count]
|
||||||
|
xor edx, edx
|
||||||
|
mov eax, dword ptr [Operand + 4]
|
||||||
|
test cl, 32
|
||||||
|
cmovz edx, eax
|
||||||
|
cmovz eax, dword ptr [Operand + 0]
|
||||||
|
shrd eax, edx, cl
|
||||||
|
shr edx, cl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/ReadCr0.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/ReadCr0.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadCr0 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmReadCr0 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
mov eax, cr0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/ReadCr2.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/ReadCr2.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadCr2 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmReadCr2 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
mov eax, cr2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/ReadCr3.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/ReadCr3.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadCr3 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmReadCr3 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
mov eax, cr3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
30
MdePkg/Library/BaseLib/Ia32/ReadCr4.c
Normal file
30
MdePkg/Library/BaseLib/Ia32/ReadCr4.c
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadCr4 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmReadCr4 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
_emit 0x0f // mov eax, cr4
|
||||||
|
_emit 0x20
|
||||||
|
_emit 0xE0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/ReadCs.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/ReadCs.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadCs function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT16
|
||||||
|
EFIAPI
|
||||||
|
AsmReadCs (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
xor eax, eax
|
||||||
|
mov ax, cs
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/ReadDr0.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/ReadDr0.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadDr0 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmReadDr0 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
mov eax, dr0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/ReadDr1.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/ReadDr1.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadDr1 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmReadDr1 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
mov eax, dr1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/ReadDr2.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/ReadDr2.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadDr2 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmReadDr2 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
mov eax, dr2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/ReadDr3.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/ReadDr3.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadDr3 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmReadDr3 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
mov eax, dr3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
30
MdePkg/Library/BaseLib/Ia32/ReadDr4.c
Normal file
30
MdePkg/Library/BaseLib/Ia32/ReadDr4.c
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadDr4 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmReadDr4 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
_emit 0x0f
|
||||||
|
_emit 0x21
|
||||||
|
_emit 0xe0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
30
MdePkg/Library/BaseLib/Ia32/ReadDr5.c
Normal file
30
MdePkg/Library/BaseLib/Ia32/ReadDr5.c
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadDr5 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmReadDr5 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
_emit 0x0f
|
||||||
|
_emit 0x21
|
||||||
|
_emit 0xe8
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/ReadDr6.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/ReadDr6.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadDr6 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmReadDr6 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
mov eax, dr6
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/ReadDr7.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/ReadDr7.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadDr7 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmReadDr7 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
mov eax, dr7
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/ReadDs.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/ReadDs.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadDs function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT16
|
||||||
|
EFIAPI
|
||||||
|
AsmReadDs (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
xor eax, eax
|
||||||
|
mov ax, ds
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/ReadEflags.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/ReadEflags.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadEflags function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmReadEflags (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
pushfd
|
||||||
|
pop eax
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/ReadEs.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/ReadEs.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadEs function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT16
|
||||||
|
EFIAPI
|
||||||
|
AsmReadEs (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
xor eax, eax
|
||||||
|
mov ax, es
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/ReadFs.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/ReadFs.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadFs function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT16
|
||||||
|
EFIAPI
|
||||||
|
AsmReadFs (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
xor eax, eax
|
||||||
|
mov ax, fs
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/ReadGdtr.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/ReadGdtr.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadGdtr function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
InternalX86ReadGdtr (
|
||||||
|
OUT IA32_DESCRIPTOR *Gdtr
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Gdtr
|
||||||
|
sgdt fword ptr [eax]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/ReadGs.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/ReadGs.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadGs function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT16
|
||||||
|
EFIAPI
|
||||||
|
AsmReadGs (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
xor eax, eax
|
||||||
|
mov ax, gs
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/ReadIdtr.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/ReadIdtr.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadIdtr function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
InternalX86ReadIdtr (
|
||||||
|
OUT IA32_DESCRIPTOR *Idtr
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Idtr
|
||||||
|
sidt fword ptr [eax]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/ReadLdtr.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/ReadLdtr.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadLdtr function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT16
|
||||||
|
EFIAPI
|
||||||
|
AsmReadLdtr (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
sldt ax
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
33
MdePkg/Library/BaseLib/Ia32/ReadMm0.c
Normal file
33
MdePkg/Library/BaseLib/Ia32/ReadMm0.c
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadMm0 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
AsmReadMm0 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
push eax
|
||||||
|
push eax
|
||||||
|
movq [esp], mm0
|
||||||
|
pop eax
|
||||||
|
pop edx
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
33
MdePkg/Library/BaseLib/Ia32/ReadMm1.c
Normal file
33
MdePkg/Library/BaseLib/Ia32/ReadMm1.c
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadMm1 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
AsmReadMm1 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
push eax
|
||||||
|
push eax
|
||||||
|
movq [esp], mm1
|
||||||
|
pop eax
|
||||||
|
pop edx
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
33
MdePkg/Library/BaseLib/Ia32/ReadMm2.c
Normal file
33
MdePkg/Library/BaseLib/Ia32/ReadMm2.c
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadMm2 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
AsmReadMm2 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
push eax
|
||||||
|
push eax
|
||||||
|
movq [esp], mm2
|
||||||
|
pop eax
|
||||||
|
pop edx
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
33
MdePkg/Library/BaseLib/Ia32/ReadMm3.c
Normal file
33
MdePkg/Library/BaseLib/Ia32/ReadMm3.c
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadMm3 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
AsmReadMm3 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
push eax
|
||||||
|
push eax
|
||||||
|
movq [esp], mm3
|
||||||
|
pop eax
|
||||||
|
pop edx
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
33
MdePkg/Library/BaseLib/Ia32/ReadMm4.c
Normal file
33
MdePkg/Library/BaseLib/Ia32/ReadMm4.c
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadMm4 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
AsmReadMm4 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
push eax
|
||||||
|
push eax
|
||||||
|
movq [esp], mm4
|
||||||
|
pop eax
|
||||||
|
pop edx
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
33
MdePkg/Library/BaseLib/Ia32/ReadMm5.c
Normal file
33
MdePkg/Library/BaseLib/Ia32/ReadMm5.c
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadMm5 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
AsmReadMm5 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
push eax
|
||||||
|
push eax
|
||||||
|
movq [esp], mm5
|
||||||
|
pop eax
|
||||||
|
pop edx
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
33
MdePkg/Library/BaseLib/Ia32/ReadMm6.c
Normal file
33
MdePkg/Library/BaseLib/Ia32/ReadMm6.c
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadMm6 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
AsmReadMm6 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
push eax
|
||||||
|
push eax
|
||||||
|
movq [esp], mm6
|
||||||
|
pop eax
|
||||||
|
pop edx
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
33
MdePkg/Library/BaseLib/Ia32/ReadMm7.c
Normal file
33
MdePkg/Library/BaseLib/Ia32/ReadMm7.c
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadMm7 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
AsmReadMm7 (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
push eax
|
||||||
|
push eax
|
||||||
|
movq [esp], mm7
|
||||||
|
pop eax
|
||||||
|
pop edx
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/ReadMsr64.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/ReadMsr64.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadMsr64 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
AsmReadMsr64 (
|
||||||
|
IN UINT32 Index
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov ecx, Index
|
||||||
|
rdmsr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/ReadPmc.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/ReadPmc.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadPmc function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
AsmReadPmc (
|
||||||
|
IN UINT32 PmcIndex
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov ecx, PmcIndex
|
||||||
|
rdpmc
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/ReadSs.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/ReadSs.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadSs function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT16
|
||||||
|
EFIAPI
|
||||||
|
AsmReadSs (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__asm {
|
||||||
|
xor eax, eax
|
||||||
|
mov ax, ss
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/ReadTr.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/ReadTr.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadTr function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT16
|
||||||
|
EFIAPI
|
||||||
|
AsmReadTr (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
str ax
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/ReadTsc.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/ReadTsc.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
AsmReadTsc function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
AsmReadTsc (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
rdtsc
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
47
MdePkg/Library/BaseLib/Ia32/SetJump.c
Normal file
47
MdePkg/Library/BaseLib/Ia32/SetJump.c
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
/** @file
|
||||||
|
Implementation of SetJump() on IA-32.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
InternalAssertJumpBuffer (
|
||||||
|
IN BASE_LIBRARY_JUMP_BUFFER *JumpBuffer
|
||||||
|
);
|
||||||
|
|
||||||
|
_declspec (naked)
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
SetJump (
|
||||||
|
OUT BASE_LIBRARY_JUMP_BUFFER *JumpBuffer
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
push [esp + 4]
|
||||||
|
call InternalAssertJumpBuffer
|
||||||
|
pop ecx
|
||||||
|
pop ecx
|
||||||
|
mov edx, [esp]
|
||||||
|
mov [edx], ebx
|
||||||
|
mov [edx + 4], esi
|
||||||
|
mov [edx + 8], edi
|
||||||
|
mov [edx + 12], ebp
|
||||||
|
mov [edx + 16], esp
|
||||||
|
mov [edx + 20], ecx
|
||||||
|
xor eax, eax
|
||||||
|
jmp ecx
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
31
MdePkg/Library/BaseLib/Ia32/SwapBytes64.c
Normal file
31
MdePkg/Library/BaseLib/Ia32/SwapBytes64.c
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
/** @file
|
||||||
|
Implementation of 64-bit swap bytes
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
InternalMathSwapBytes64 (
|
||||||
|
IN UINT64 Operand
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, dword ptr [Operand + 4]
|
||||||
|
mov edx, dword ptr [Operand + 0]
|
||||||
|
bswap eax
|
||||||
|
bswap edx
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
28
MdePkg/Library/BaseLib/Ia32/Wbinvd.c
Normal file
28
MdePkg/Library/BaseLib/Ia32/Wbinvd.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWbinvd function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
AsmWbinvd (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
wbinvd
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteCr0.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteCr0.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteCr0 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteCr0 (
|
||||||
|
UINTN Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Value
|
||||||
|
mov cr0, eax
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteCr2.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteCr2.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteCr2 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteCr2 (
|
||||||
|
UINTN Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Value
|
||||||
|
mov cr2, eax
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteCr3.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteCr3.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteCr3 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteCr3 (
|
||||||
|
UINTN Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Value
|
||||||
|
mov cr3, eax
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
31
MdePkg/Library/BaseLib/Ia32/WriteCr4.c
Normal file
31
MdePkg/Library/BaseLib/Ia32/WriteCr4.c
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteCr4 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteCr4 (
|
||||||
|
UINTN Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Value
|
||||||
|
_emit 0x0f // mov cr4, eax
|
||||||
|
_emit 0x22
|
||||||
|
_emit 0xE0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteDr0.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteDr0.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteDr0 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteDr0 (
|
||||||
|
IN UINTN Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Value
|
||||||
|
mov dr0, eax
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteDr1.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteDr1.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteDr1 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteDr1 (
|
||||||
|
IN UINTN Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Value
|
||||||
|
mov dr1, eax
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteDr2.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteDr2.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteDr2 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteDr2 (
|
||||||
|
IN UINTN Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Value
|
||||||
|
mov dr2, eax
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteDr3.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteDr3.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteDr3 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteDr3 (
|
||||||
|
IN UINTN Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Value
|
||||||
|
mov dr3, eax
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
31
MdePkg/Library/BaseLib/Ia32/WriteDr4.c
Normal file
31
MdePkg/Library/BaseLib/Ia32/WriteDr4.c
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteDr4 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteDr4 (
|
||||||
|
IN UINTN Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Value
|
||||||
|
_emit 0x0f // mov dr4, eax
|
||||||
|
_emit 0x23
|
||||||
|
_emit 0xe0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
31
MdePkg/Library/BaseLib/Ia32/WriteDr5.c
Normal file
31
MdePkg/Library/BaseLib/Ia32/WriteDr5.c
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteDr5 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteDr5 (
|
||||||
|
IN UINTN Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Value
|
||||||
|
_emit 0x0f // mov dr5, eax
|
||||||
|
_emit 0x23
|
||||||
|
_emit 0xe8
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteDr6.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteDr6.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteDr6 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteDr6 (
|
||||||
|
IN UINTN Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Value
|
||||||
|
mov dr6, eax
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteDr7.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteDr7.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteDr7 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINTN
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteDr7 (
|
||||||
|
IN UINTN Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Value
|
||||||
|
mov dr7, eax
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteGdtr.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteGdtr.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteGdtr function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
InternalX86WriteGdtr (
|
||||||
|
IN CONST IA32_DESCRIPTOR *Gdtr
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Gdtr
|
||||||
|
lgdt fword ptr [eax]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteIdtr.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteIdtr.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteIdtr function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
InternalX86WriteIdtr (
|
||||||
|
IN CONST IA32_DESCRIPTOR *Idtr
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, Idtr
|
||||||
|
lidt fword ptr [eax]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
30
MdePkg/Library/BaseLib/Ia32/WriteLdtr.c
Normal file
30
MdePkg/Library/BaseLib/Ia32/WriteLdtr.c
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteLdtr function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteLdtr (
|
||||||
|
IN UINT16 Ldtr
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
xor eax, eax
|
||||||
|
mov ax, Ldtr
|
||||||
|
lldt ax
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteMm0.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteMm0.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteMm0 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteMm0 (
|
||||||
|
IN UINT64 Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
movq mm0, qword ptr [Value]
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteMm1.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteMm1.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteMm1 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteMm1 (
|
||||||
|
IN UINT64 Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
movq mm1, qword ptr [Value]
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteMm2.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteMm2.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteMm2 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteMm2 (
|
||||||
|
IN UINT64 Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
movq mm2, qword ptr [Value]
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteMm3.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteMm3.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteMm3 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteMm3 (
|
||||||
|
IN UINT64 Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
movq mm3, qword ptr [Value]
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteMm4.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteMm4.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteMm4 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteMm4 (
|
||||||
|
IN UINT64 Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
movq mm4, qword ptr [Value]
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteMm5.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteMm5.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteMm5 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteMm5 (
|
||||||
|
IN UINT64 Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
movq mm5, qword ptr [Value]
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteMm6.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteMm6.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteMm6 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteMm6 (
|
||||||
|
IN UINT64 Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
movq mm6, qword ptr [Value]
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
29
MdePkg/Library/BaseLib/Ia32/WriteMm7.c
Normal file
29
MdePkg/Library/BaseLib/Ia32/WriteMm7.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteMm7 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteMm7 (
|
||||||
|
IN UINT64 Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
movq mm7, qword ptr [Value]
|
||||||
|
emms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
32
MdePkg/Library/BaseLib/Ia32/WriteMsr64.c
Normal file
32
MdePkg/Library/BaseLib/Ia32/WriteMsr64.c
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
/** @file
|
||||||
|
AsmWriteMsr64 function
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#if _MSC_EXTENSIONS
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
EFIAPI
|
||||||
|
AsmWriteMsr64 (
|
||||||
|
IN UINT32 Index,
|
||||||
|
IN UINT64 Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov edx, dword ptr [Value + 4]
|
||||||
|
mov eax, dword ptr [Value + 0]
|
||||||
|
mov ecx, Index
|
||||||
|
wrmsr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
Reference in New Issue
Block a user