NASM has replaced ASM and S files.
1. Remove ASM from all modules.
2. Remove S files from the drivers only.
3. https://bugzilla.tianocore.org/show_bug.cgi?id=881
After NASM is updated, S files can be removed from Library.
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>
Ia32/CpuFlushTlb.c | MSFT \r
\r
Ia32/CpuSleep.nasm| INTEL\r
- Ia32/CpuSleep.asm | INTEL \r
Ia32/CpuFlushTlb.nasm| INTEL\r
- Ia32/CpuFlushTlb.asm | INTEL \r
\r
Ia32/CpuSleepGcc.c | GCC \r
Ia32/CpuFlushTlbGcc.c | GCC \r
\r
[Sources.X64]\r
X64/CpuFlushTlb.nasm\r
- X64/CpuFlushTlb.asm \r
X64/CpuSleep.nasm\r
- X64/CpuSleep.asm\r
\r
X64/CpuSleep.nasm| GCC\r
X64/CpuSleep.S | GCC \r
+++ /dev/null
-;------------------------------------------------------------------------------ ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; CpuFlushTlb.Asm\r
-;\r
-; Abstract:\r
-;\r
-; CpuFlushTlb function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; CpuFlushTlb (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-CpuFlushTlb PROC\r
- mov eax, cr3\r
- mov cr3, eax ; moving to CR3 flushes TLB\r
- ret\r
-CpuFlushTlb ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------ ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; CpuSleep.Asm\r
-;\r
-; Abstract:\r
-;\r
-; CpuSleep function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; CpuSleep (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-CpuSleep PROC\r
- hlt\r
- ret\r
-CpuSleep ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------ ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; CpuFlushTlb.Asm\r
-;\r
-; Abstract:\r
-;\r
-; CpuFlushTlb function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; CpuFlushTlb (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-CpuFlushTlb PROC\r
- mov rax, cr3\r
- mov cr3, rax\r
- ret\r
-CpuFlushTlb ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------ ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; CpuSleep.Asm\r
-;\r
-; Abstract:\r
-;\r
-; CpuSleep function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; CpuSleep (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-CpuSleep PROC\r
- hlt\r
- ret\r
-CpuSleep ENDP\r
-\r
- END\r
# MMIO requests are forwarded directly to memory. For EBC, I/O port requests\r
# ASSERT().\r
#\r
-# Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
# Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
# Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>\r
#\r
IoLibIcc.c | INTEL\r
IoLib.c\r
Ia32/IoFifo.nasm\r
- Ia32/IoFifo.asm\r
\r
[Sources.X64]\r
IoLibGcc.c | GCC\r
IoLibIcc.c | INTEL\r
IoLib.c\r
X64/IoFifo.nasm\r
- X64/IoFifo.asm\r
\r
[Sources.EBC]\r
IoLibEbc.c\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
-; Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>\r
-;\r
-; This program and the accompanying materials are licensed and made available\r
-; under the terms and conditions of the BSD License which accompanies this\r
-; distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586P\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; IoReadFifo8 (\r
-; IN UINTN Port,\r
-; IN UINTN Size,\r
-; OUT VOID *Buffer\r
-; );\r
-;------------------------------------------------------------------------------\r
-IoReadFifo8 PROC\r
- push edi\r
- cld\r
- mov dx, [esp + 8]\r
- mov ecx, [esp + 12]\r
- mov edi, [esp + 16]\r
-rep insb\r
- pop edi\r
- ret\r
-IoReadFifo8 ENDP\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; IoReadFifo16 (\r
-; IN UINTN Port,\r
-; IN UINTN Size,\r
-; OUT VOID *Buffer\r
-; );\r
-;------------------------------------------------------------------------------\r
-IoReadFifo16 PROC\r
- push edi\r
- cld\r
- mov dx, [esp + 8]\r
- mov ecx, [esp + 12]\r
- mov edi, [esp + 16]\r
-rep insw\r
- pop edi\r
- ret\r
-IoReadFifo16 ENDP\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; IoReadFifo32 (\r
-; IN UINTN Port,\r
-; IN UINTN Size,\r
-; OUT VOID *Buffer\r
-; );\r
-;------------------------------------------------------------------------------\r
-IoReadFifo32 PROC\r
- push edi\r
- cld\r
- mov dx, [esp + 8]\r
- mov ecx, [esp + 12]\r
- mov edi, [esp + 16]\r
-rep insd\r
- pop edi\r
- ret\r
-IoReadFifo32 ENDP\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; IoWriteFifo8 (\r
-; IN UINTN Port,\r
-; IN UINTN Size,\r
-; IN VOID *Buffer\r
-; );\r
-;------------------------------------------------------------------------------\r
-IoWriteFifo8 PROC\r
- push esi\r
- cld\r
- mov dx, [esp + 8]\r
- mov ecx, [esp + 12]\r
- mov esi, [esp + 16]\r
-rep outsb\r
- pop esi\r
- ret\r
-IoWriteFifo8 ENDP\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; IoWriteFifo16 (\r
-; IN UINTN Port,\r
-; IN UINTN Size,\r
-; IN VOID *Buffer\r
-; );\r
-;------------------------------------------------------------------------------\r
-IoWriteFifo16 PROC\r
- push esi\r
- cld\r
- mov dx, [esp + 8]\r
- mov ecx, [esp + 12]\r
- mov esi, [esp + 16]\r
-rep outsw\r
- pop esi\r
- ret\r
-IoWriteFifo16 ENDP\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; IoWriteFifo32 (\r
-; IN UINTN Port,\r
-; IN UINTN Size,\r
-; IN VOID *Buffer\r
-; );\r
-;------------------------------------------------------------------------------\r
-IoWriteFifo32 PROC\r
- push esi\r
- cld\r
- mov dx, [esp + 8]\r
- mov ecx, [esp + 12]\r
- mov esi, [esp + 16]\r
-rep outsd\r
- pop esi\r
- ret\r
-IoWriteFifo32 ENDP\r
-\r
- END\r
-\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
-; Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>\r
-;\r
-; This program and the accompanying materials are licensed and made available\r
-; under the terms and conditions of the BSD License which accompanies this\r
-; distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; IoReadFifo8 (\r
-; IN UINTN Port, // rcx\r
-; IN UINTN Size, // rdx\r
-; OUT VOID *Buffer // r8\r
-; );\r
-;------------------------------------------------------------------------------\r
-IoReadFifo8 PROC\r
- cld\r
- xchg rcx, rdx\r
- xchg rdi, r8 ; rdi: buffer address; r8: save rdi\r
-rep insb\r
- mov rdi, r8 ; restore rdi\r
- ret\r
-IoReadFifo8 ENDP\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; IoReadFifo16 (\r
-; IN UINTN Port, // rcx\r
-; IN UINTN Size, // rdx\r
-; OUT VOID *Buffer // r8\r
-; );\r
-;------------------------------------------------------------------------------\r
-IoReadFifo16 PROC\r
- cld\r
- xchg rcx, rdx\r
- xchg rdi, r8 ; rdi: buffer address; r8: save rdi\r
-rep insw\r
- mov rdi, r8 ; restore rdi\r
- ret\r
-IoReadFifo16 ENDP\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; IoReadFifo32 (\r
-; IN UINTN Port, // rcx\r
-; IN UINTN Size, // rdx\r
-; OUT VOID *Buffer // r8\r
-; );\r
-;------------------------------------------------------------------------------\r
-IoReadFifo32 PROC\r
- cld\r
- xchg rcx, rdx\r
- xchg rdi, r8 ; rdi: buffer address; r8: save rdi\r
-rep insd\r
- mov rdi, r8 ; restore rdi\r
- ret\r
-IoReadFifo32 ENDP\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; IoWriteFifo8 (\r
-; IN UINTN Port, // rcx\r
-; IN UINTN Size, // rdx\r
-; IN VOID *Buffer // r8\r
-; );\r
-;------------------------------------------------------------------------------\r
-IoWriteFifo8 PROC\r
- cld\r
- xchg rcx, rdx\r
- xchg rsi, r8 ; rsi: buffer address; r8: save rsi\r
-rep outsb\r
- mov rsi, r8 ; restore rsi\r
- ret\r
-IoWriteFifo8 ENDP\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; IoWriteFifo16 (\r
-; IN UINTN Port, // rcx\r
-; IN UINTN Size, // rdx\r
-; IN VOID *Buffer // r8\r
-; );\r
-;------------------------------------------------------------------------------\r
-IoWriteFifo16 PROC\r
- cld\r
- xchg rcx, rdx\r
- xchg rsi, r8 ; rsi: buffer address; r8: save rsi\r
-rep outsw\r
- mov rsi, r8 ; restore rsi\r
- ret\r
-IoWriteFifo16 ENDP\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; IoWriteFifo32 (\r
-; IN UINTN Port, // rcx\r
-; IN UINTN Size, // rdx\r
-; IN VOID *Buffer // r8\r
-; );\r
-;------------------------------------------------------------------------------\r
-IoWriteFifo32 PROC\r
- cld\r
- xchg rcx, rdx\r
- xchg rsi, r8 ; rsi: buffer address; r8: save rsi\r
-rep outsd\r
- mov rsi, r8 ; restore rsi\r
- ret\r
-IoWriteFifo32 ENDP\r
-\r
- END\r
-\r
## @file\r
# Base Library implementation.\r
#\r
-# Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
# Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
# Portions copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.<BR>\r
#\r
Ia32/EnableInterrupts.c | MSFT \r
Ia32/EnableDisableInterrupts.c | MSFT \r
Ia32/DivU64x64Remainder.nasm| MSFT\r
- Ia32/DivU64x64Remainder.asm | MSFT \r
Ia32/DivU64x32Remainder.c | MSFT \r
Ia32/DivU64x32.c | MSFT \r
Ia32/DisablePaging32.c | MSFT \r
Ia32/CpuBreakpoint.c | MSFT \r
Ia32/ARShiftU64.c | MSFT \r
Ia32/Thunk16.nasm | MSFT\r
- Ia32/Thunk16.asm | MSFT\r
Ia32/EnablePaging64.nasm| MSFT\r
- Ia32/EnablePaging64.asm | MSFT\r
Ia32/EnableCache.c | MSFT\r
Ia32/DisableCache.c | MSFT\r
Ia32/RdRand.nasm| MSFT\r
- Ia32/RdRand.asm | MSFT\r
\r
Ia32/Wbinvd.nasm| INTEL\r
- Ia32/Wbinvd.asm | INTEL \r
Ia32/WriteMm7.nasm| INTEL\r
- Ia32/WriteMm7.asm | INTEL \r
Ia32/WriteMm6.nasm| INTEL\r
- Ia32/WriteMm6.asm | INTEL \r
Ia32/WriteMm5.nasm| INTEL\r
- Ia32/WriteMm5.asm | INTEL \r
Ia32/WriteMm4.nasm| INTEL\r
- Ia32/WriteMm4.asm | INTEL \r
Ia32/WriteMm3.nasm| INTEL\r
- Ia32/WriteMm3.asm | INTEL \r
Ia32/WriteMm2.nasm| INTEL\r
- Ia32/WriteMm2.asm | INTEL \r
Ia32/WriteMm1.nasm| INTEL\r
- Ia32/WriteMm1.asm | INTEL \r
Ia32/WriteMm0.nasm| INTEL\r
- Ia32/WriteMm0.asm | INTEL \r
Ia32/WriteLdtr.nasm| INTEL\r
- Ia32/WriteLdtr.asm | INTEL \r
Ia32/WriteIdtr.nasm| INTEL\r
- Ia32/WriteIdtr.asm | INTEL \r
Ia32/WriteGdtr.nasm| INTEL\r
- Ia32/WriteGdtr.asm | INTEL \r
Ia32/WriteDr7.nasm| INTEL\r
- Ia32/WriteDr7.asm | INTEL \r
Ia32/WriteDr6.nasm| INTEL\r
- Ia32/WriteDr6.asm | INTEL \r
Ia32/WriteDr5.nasm| INTEL\r
- Ia32/WriteDr5.asm | INTEL \r
Ia32/WriteDr4.nasm| INTEL\r
- Ia32/WriteDr4.asm | INTEL \r
Ia32/WriteDr3.nasm| INTEL\r
- Ia32/WriteDr3.asm | INTEL \r
Ia32/WriteDr2.nasm| INTEL\r
- Ia32/WriteDr2.asm | INTEL \r
Ia32/WriteDr1.nasm| INTEL\r
- Ia32/WriteDr1.asm | INTEL \r
Ia32/WriteDr0.nasm| INTEL\r
- Ia32/WriteDr0.asm | INTEL \r
Ia32/WriteCr4.nasm| INTEL\r
- Ia32/WriteCr4.asm | INTEL \r
Ia32/WriteCr3.nasm| INTEL\r
- Ia32/WriteCr3.asm | INTEL \r
Ia32/WriteCr2.nasm| INTEL\r
- Ia32/WriteCr2.asm | INTEL \r
Ia32/WriteCr0.nasm| INTEL\r
- Ia32/WriteCr0.asm | INTEL \r
Ia32/WriteMsr64.nasm| INTEL\r
- Ia32/WriteMsr64.asm | INTEL \r
Ia32/SwapBytes64.nasm| INTEL\r
- Ia32/SwapBytes64.asm | INTEL \r
Ia32/SetJump.nasm| INTEL\r
- Ia32/SetJump.asm | INTEL \r
Ia32/RRotU64.nasm| INTEL\r
- Ia32/RRotU64.asm | INTEL \r
Ia32/RShiftU64.nasm| INTEL\r
- Ia32/RShiftU64.asm | INTEL \r
Ia32/ReadPmc.nasm| INTEL\r
- Ia32/ReadPmc.asm | INTEL \r
Ia32/ReadTsc.nasm| INTEL\r
- Ia32/ReadTsc.asm | INTEL \r
Ia32/ReadLdtr.nasm| INTEL\r
- Ia32/ReadLdtr.asm | INTEL \r
Ia32/ReadIdtr.nasm| INTEL\r
- Ia32/ReadIdtr.asm | INTEL \r
Ia32/ReadGdtr.nasm| INTEL\r
- Ia32/ReadGdtr.asm | INTEL \r
Ia32/ReadTr.nasm| INTEL\r
- Ia32/ReadTr.asm | INTEL \r
Ia32/ReadSs.nasm| INTEL\r
- Ia32/ReadSs.asm | INTEL \r
Ia32/ReadGs.nasm| INTEL\r
- Ia32/ReadGs.asm | INTEL \r
Ia32/ReadFs.nasm| INTEL\r
- Ia32/ReadFs.asm | INTEL \r
Ia32/ReadEs.nasm| INTEL\r
- Ia32/ReadEs.asm | INTEL \r
Ia32/ReadDs.nasm| INTEL\r
- Ia32/ReadDs.asm | INTEL \r
Ia32/ReadCs.nasm| INTEL\r
- Ia32/ReadCs.asm | INTEL \r
Ia32/ReadMsr64.nasm| INTEL\r
- Ia32/ReadMsr64.asm | INTEL \r
Ia32/ReadMm7.nasm| INTEL\r
- Ia32/ReadMm7.asm | INTEL \r
Ia32/ReadMm6.nasm| INTEL\r
- Ia32/ReadMm6.asm | INTEL \r
Ia32/ReadMm5.nasm| INTEL\r
- Ia32/ReadMm5.asm | INTEL \r
Ia32/ReadMm4.nasm| INTEL\r
- Ia32/ReadMm4.asm | INTEL \r
Ia32/ReadMm3.nasm| INTEL\r
- Ia32/ReadMm3.asm | INTEL \r
Ia32/ReadMm2.nasm| INTEL\r
- Ia32/ReadMm2.asm | INTEL \r
Ia32/ReadMm1.nasm| INTEL\r
- Ia32/ReadMm1.asm | INTEL \r
Ia32/ReadMm0.nasm| INTEL\r
- Ia32/ReadMm0.asm | INTEL \r
Ia32/ReadEflags.nasm| INTEL\r
- Ia32/ReadEflags.asm | INTEL \r
Ia32/ReadDr7.nasm| INTEL\r
- Ia32/ReadDr7.asm | INTEL \r
Ia32/ReadDr6.nasm| INTEL\r
- Ia32/ReadDr6.asm | INTEL \r
Ia32/ReadDr5.nasm| INTEL\r
- Ia32/ReadDr5.asm | INTEL \r
Ia32/ReadDr4.nasm| INTEL\r
- Ia32/ReadDr4.asm | INTEL \r
Ia32/ReadDr3.nasm| INTEL\r
- Ia32/ReadDr3.asm | INTEL \r
Ia32/ReadDr2.nasm| INTEL\r
- Ia32/ReadDr2.asm | INTEL \r
Ia32/ReadDr1.nasm| INTEL\r
- Ia32/ReadDr1.asm | INTEL \r
Ia32/ReadDr0.nasm| INTEL\r
- Ia32/ReadDr0.asm | INTEL \r
Ia32/ReadCr4.nasm| INTEL\r
- Ia32/ReadCr4.asm | INTEL \r
Ia32/ReadCr3.nasm| INTEL\r
- Ia32/ReadCr3.asm | INTEL \r
Ia32/ReadCr2.nasm| INTEL\r
- Ia32/ReadCr2.asm | INTEL \r
Ia32/ReadCr0.nasm| INTEL\r
- Ia32/ReadCr0.asm | INTEL \r
Ia32/Mwait.nasm| INTEL\r
- Ia32/Mwait.asm | INTEL \r
Ia32/Monitor.nasm| INTEL\r
- Ia32/Monitor.asm | INTEL \r
Ia32/ModU64x32.nasm| INTEL\r
- Ia32/ModU64x32.asm | INTEL \r
Ia32/MultU64x64.nasm| INTEL\r
- Ia32/MultU64x64.asm | INTEL \r
Ia32/MultU64x32.nasm| INTEL\r
- Ia32/MultU64x32.asm | INTEL \r
Ia32/LShiftU64.nasm| INTEL\r
- Ia32/LShiftU64.asm | INTEL \r
Ia32/LRotU64.nasm| INTEL\r
- Ia32/LRotU64.asm | INTEL \r
Ia32/LongJump.nasm| INTEL\r
- Ia32/LongJump.asm | INTEL \r
Ia32/Invd.nasm| INTEL\r
- Ia32/Invd.asm | INTEL \r
Ia32/FxRestore.nasm| INTEL\r
- Ia32/FxRestore.asm | INTEL \r
Ia32/FxSave.nasm| INTEL\r
- Ia32/FxSave.asm | INTEL \r
Ia32/FlushCacheLine.nasm| INTEL\r
- Ia32/FlushCacheLine.asm | INTEL \r
Ia32/EnablePaging32.nasm| INTEL\r
- Ia32/EnablePaging32.asm | INTEL \r
Ia32/EnableInterrupts.nasm| INTEL\r
- Ia32/EnableInterrupts.asm | INTEL \r
Ia32/EnableDisableInterrupts.nasm| INTEL\r
- Ia32/EnableDisableInterrupts.asm | INTEL \r
Ia32/DivU64x64Remainder.nasm| INTEL\r
- Ia32/DivU64x64Remainder.asm | INTEL \r
Ia32/DivU64x32Remainder.nasm| INTEL\r
- Ia32/DivU64x32Remainder.asm | INTEL \r
Ia32/DivU64x32.nasm| INTEL\r
- Ia32/DivU64x32.asm | INTEL \r
Ia32/DisablePaging32.nasm| INTEL\r
- Ia32/DisablePaging32.asm | INTEL\r
Ia32/DisableInterrupts.nasm| INTEL\r
- Ia32/DisableInterrupts.asm | INTEL \r
Ia32/CpuPause.nasm| INTEL\r
- Ia32/CpuPause.asm | INTEL \r
Ia32/CpuIdEx.nasm| INTEL\r
- Ia32/CpuIdEx.asm | INTEL \r
Ia32/CpuId.nasm| INTEL\r
- Ia32/CpuId.asm | INTEL \r
Ia32/CpuBreakpoint.nasm| INTEL\r
- Ia32/CpuBreakpoint.asm | INTEL \r
Ia32/ARShiftU64.nasm| INTEL\r
- Ia32/ARShiftU64.asm | INTEL \r
Ia32/Thunk16.nasm | INTEL\r
- Ia32/Thunk16.asm | INTEL\r
Ia32/EnablePaging64.nasm| INTEL\r
- Ia32/EnablePaging64.asm | INTEL\r
Ia32/EnableCache.nasm| INTEL\r
- Ia32/EnableCache.asm | INTEL\r
Ia32/DisableCache.nasm| INTEL\r
- Ia32/DisableCache.asm | INTEL\r
Ia32/RdRand.nasm| INTEL\r
- Ia32/RdRand.asm | INTEL\r
\r
Ia32/GccInline.c | GCC\r
Ia32/Thunk16.nasm | GCC \r
\r
[Sources.X64]\r
X64/Thunk16.nasm\r
- X64/Thunk16.asm\r
X64/CpuIdEx.nasm\r
- X64/CpuIdEx.asm\r
X64/CpuId.nasm\r
- X64/CpuId.asm\r
X64/LongJump.nasm\r
- X64/LongJump.asm\r
X64/SetJump.nasm\r
- X64/SetJump.asm\r
X64/SwitchStack.nasm\r
- X64/SwitchStack.asm\r
X64/EnableCache.nasm\r
- X64/EnableCache.asm\r
X64/DisableCache.nasm\r
- X64/DisableCache.asm\r
X64/WriteTr.nasm\r
\r
X64/CpuBreakpoint.c | MSFT \r
X64/WriteMsr64.c | MSFT \r
X64/ReadMsr64.c | MSFT \r
X64/RdRand.nasm| MSFT\r
- X64/RdRand.asm | MSFT\r
X64/CpuPause.nasm| MSFT\r
- X64/CpuPause.asm | MSFT\r
X64/EnableDisableInterrupts.nasm| MSFT\r
- X64/EnableDisableInterrupts.asm | MSFT\r
X64/DisableInterrupts.nasm| MSFT\r
- X64/DisableInterrupts.asm | MSFT\r
X64/EnableInterrupts.nasm| MSFT\r
- X64/EnableInterrupts.asm | MSFT\r
X64/FlushCacheLine.nasm| MSFT\r
- X64/FlushCacheLine.asm | MSFT\r
X64/Invd.nasm| MSFT\r
- X64/Invd.asm | MSFT\r
X64/Wbinvd.nasm| MSFT\r
- X64/Wbinvd.asm | MSFT\r
X64/DisablePaging64.nasm| MSFT\r
- X64/DisablePaging64.asm | MSFT\r
X64/Mwait.nasm| MSFT\r
- X64/Mwait.asm | MSFT\r
X64/Monitor.nasm| MSFT\r
- X64/Monitor.asm | MSFT\r
X64/ReadPmc.nasm| MSFT\r
- X64/ReadPmc.asm | MSFT\r
X64/ReadTsc.nasm| MSFT\r
- X64/ReadTsc.asm | MSFT\r
X64/WriteMm7.nasm| MSFT\r
- X64/WriteMm7.asm | MSFT\r
X64/WriteMm6.nasm| MSFT\r
- X64/WriteMm6.asm | MSFT\r
X64/WriteMm5.nasm| MSFT\r
- X64/WriteMm5.asm | MSFT\r
X64/WriteMm4.nasm| MSFT\r
- X64/WriteMm4.asm | MSFT\r
X64/WriteMm3.nasm| MSFT\r
- X64/WriteMm3.asm | MSFT\r
X64/WriteMm2.nasm| MSFT\r
- X64/WriteMm2.asm | MSFT\r
X64/WriteMm1.nasm| MSFT\r
- X64/WriteMm1.asm | MSFT\r
X64/WriteMm0.nasm| MSFT\r
- X64/WriteMm0.asm | MSFT\r
X64/ReadMm7.nasm| MSFT\r
- X64/ReadMm7.asm | MSFT\r
X64/ReadMm6.nasm| MSFT\r
- X64/ReadMm6.asm | MSFT\r
X64/ReadMm5.nasm| MSFT\r
- X64/ReadMm5.asm | MSFT\r
X64/ReadMm4.nasm| MSFT\r
- X64/ReadMm4.asm | MSFT\r
X64/ReadMm3.nasm| MSFT\r
- X64/ReadMm3.asm | MSFT\r
X64/ReadMm2.nasm| MSFT\r
- X64/ReadMm2.asm | MSFT\r
X64/ReadMm1.nasm| MSFT\r
- X64/ReadMm1.asm | MSFT\r
X64/ReadMm0.nasm| MSFT\r
- X64/ReadMm0.asm | MSFT\r
X64/FxRestore.nasm| MSFT\r
- X64/FxRestore.asm | MSFT\r
X64/FxSave.nasm| MSFT\r
- X64/FxSave.asm | MSFT\r
X64/WriteLdtr.nasm| MSFT\r
- X64/WriteLdtr.asm | MSFT\r
X64/ReadLdtr.nasm| MSFT\r
- X64/ReadLdtr.asm | MSFT\r
X64/WriteIdtr.nasm| MSFT\r
- X64/WriteIdtr.asm | MSFT\r
X64/ReadIdtr.nasm| MSFT\r
- X64/ReadIdtr.asm | MSFT\r
X64/WriteGdtr.nasm| MSFT\r
- X64/WriteGdtr.asm | MSFT\r
X64/ReadGdtr.nasm| MSFT\r
- X64/ReadGdtr.asm | MSFT\r
X64/ReadTr.nasm| MSFT\r
- X64/ReadTr.asm | MSFT\r
X64/ReadSs.nasm| MSFT\r
- X64/ReadSs.asm | MSFT\r
X64/ReadGs.nasm| MSFT\r
- X64/ReadGs.asm | MSFT\r
X64/ReadFs.nasm| MSFT\r
- X64/ReadFs.asm | MSFT\r
X64/ReadEs.nasm| MSFT\r
- X64/ReadEs.asm | MSFT\r
X64/ReadDs.nasm| MSFT\r
- X64/ReadDs.asm | MSFT\r
X64/ReadCs.nasm| MSFT\r
- X64/ReadCs.asm | MSFT\r
X64/WriteDr7.nasm| MSFT\r
- X64/WriteDr7.asm | MSFT\r
X64/WriteDr6.nasm| MSFT\r
- X64/WriteDr6.asm | MSFT\r
X64/WriteDr5.nasm| MSFT\r
- X64/WriteDr5.asm | MSFT\r
X64/WriteDr4.nasm| MSFT\r
- X64/WriteDr4.asm | MSFT\r
X64/WriteDr3.nasm| MSFT\r
- X64/WriteDr3.asm | MSFT\r
X64/WriteDr2.nasm| MSFT\r
- X64/WriteDr2.asm | MSFT\r
X64/WriteDr1.nasm| MSFT\r
- X64/WriteDr1.asm | MSFT\r
X64/WriteDr0.nasm| MSFT\r
- X64/WriteDr0.asm | MSFT\r
X64/ReadDr7.nasm| MSFT\r
- X64/ReadDr7.asm | MSFT\r
X64/ReadDr6.nasm| MSFT\r
- X64/ReadDr6.asm | MSFT\r
X64/ReadDr5.nasm| MSFT\r
- X64/ReadDr5.asm | MSFT\r
X64/ReadDr4.nasm| MSFT\r
- X64/ReadDr4.asm | MSFT\r
X64/ReadDr3.nasm| MSFT\r
- X64/ReadDr3.asm | MSFT\r
X64/ReadDr2.nasm| MSFT\r
- X64/ReadDr2.asm | MSFT\r
X64/ReadDr1.nasm| MSFT\r
- X64/ReadDr1.asm | MSFT\r
X64/ReadDr0.nasm| MSFT\r
- X64/ReadDr0.asm | MSFT\r
X64/WriteCr4.nasm| MSFT\r
- X64/WriteCr4.asm | MSFT\r
X64/WriteCr3.nasm| MSFT\r
- X64/WriteCr3.asm | MSFT\r
X64/WriteCr2.nasm| MSFT\r
- X64/WriteCr2.asm | MSFT\r
X64/WriteCr0.nasm| MSFT\r
- X64/WriteCr0.asm | MSFT\r
X64/ReadCr4.nasm| MSFT\r
- X64/ReadCr4.asm | MSFT\r
X64/ReadCr3.nasm| MSFT\r
- X64/ReadCr3.asm | MSFT\r
X64/ReadCr2.nasm| MSFT\r
- X64/ReadCr2.asm | MSFT\r
X64/ReadCr0.nasm| MSFT\r
- X64/ReadCr0.asm | MSFT\r
X64/ReadEflags.nasm| MSFT\r
- X64/ReadEflags.asm | MSFT\r
\r
X64/CpuBreakpoint.nasm| INTEL\r
- X64/CpuBreakpoint.asm | INTEL \r
X64/WriteMsr64.nasm| INTEL\r
- X64/WriteMsr64.asm | INTEL \r
X64/ReadMsr64.nasm| INTEL\r
- X64/ReadMsr64.asm | INTEL \r
X64/RdRand.nasm| INTEL\r
- X64/RdRand.asm | INTEL\r
X64/CpuPause.nasm| INTEL\r
- X64/CpuPause.asm | INTEL\r
X64/EnableDisableInterrupts.nasm| INTEL\r
- X64/EnableDisableInterrupts.asm | INTEL\r
X64/DisableInterrupts.nasm| INTEL\r
- X64/DisableInterrupts.asm | INTEL\r
X64/EnableInterrupts.nasm| INTEL\r
- X64/EnableInterrupts.asm | INTEL\r
X64/FlushCacheLine.nasm| INTEL\r
- X64/FlushCacheLine.asm | INTEL\r
X64/Invd.nasm| INTEL\r
- X64/Invd.asm | INTEL\r
X64/Wbinvd.nasm| INTEL\r
- X64/Wbinvd.asm | INTEL\r
X64/DisablePaging64.nasm| INTEL\r
- X64/DisablePaging64.asm | INTEL\r
X64/Mwait.nasm| INTEL\r
- X64/Mwait.asm | INTEL\r
X64/Monitor.nasm| INTEL\r
- X64/Monitor.asm | INTEL\r
X64/ReadPmc.nasm| INTEL\r
- X64/ReadPmc.asm | INTEL\r
X64/ReadTsc.nasm| INTEL\r
- X64/ReadTsc.asm | INTEL\r
X64/WriteMm7.nasm| INTEL\r
- X64/WriteMm7.asm | INTEL\r
X64/WriteMm6.nasm| INTEL\r
- X64/WriteMm6.asm | INTEL\r
X64/WriteMm5.nasm| INTEL\r
- X64/WriteMm5.asm | INTEL\r
X64/WriteMm4.nasm| INTEL\r
- X64/WriteMm4.asm | INTEL\r
X64/WriteMm3.nasm| INTEL\r
- X64/WriteMm3.asm | INTEL\r
X64/WriteMm2.nasm| INTEL\r
- X64/WriteMm2.asm | INTEL\r
X64/WriteMm1.nasm| INTEL\r
- X64/WriteMm1.asm | INTEL\r
X64/WriteMm0.nasm| INTEL\r
- X64/WriteMm0.asm | INTEL\r
X64/ReadMm7.nasm| INTEL\r
- X64/ReadMm7.asm | INTEL\r
X64/ReadMm6.nasm| INTEL\r
- X64/ReadMm6.asm | INTEL\r
X64/ReadMm5.nasm| INTEL\r
- X64/ReadMm5.asm | INTEL\r
X64/ReadMm4.nasm| INTEL\r
- X64/ReadMm4.asm | INTEL\r
X64/ReadMm3.nasm| INTEL\r
- X64/ReadMm3.asm | INTEL\r
X64/ReadMm2.nasm| INTEL\r
- X64/ReadMm2.asm | INTEL\r
X64/ReadMm1.nasm| INTEL\r
- X64/ReadMm1.asm | INTEL\r
X64/ReadMm0.nasm| INTEL\r
- X64/ReadMm0.asm | INTEL\r
X64/FxRestore.nasm| INTEL\r
- X64/FxRestore.asm | INTEL\r
X64/FxSave.nasm| INTEL\r
- X64/FxSave.asm | INTEL\r
X64/WriteLdtr.nasm| INTEL\r
- X64/WriteLdtr.asm | INTEL\r
X64/ReadLdtr.nasm| INTEL\r
- X64/ReadLdtr.asm | INTEL\r
X64/WriteIdtr.nasm| INTEL\r
- X64/WriteIdtr.asm | INTEL\r
X64/ReadIdtr.nasm| INTEL\r
- X64/ReadIdtr.asm | INTEL\r
X64/WriteGdtr.nasm| INTEL\r
- X64/WriteGdtr.asm | INTEL\r
X64/ReadGdtr.nasm| INTEL\r
- X64/ReadGdtr.asm | INTEL\r
X64/ReadTr.nasm| INTEL\r
- X64/ReadTr.asm | INTEL\r
X64/ReadSs.nasm| INTEL\r
- X64/ReadSs.asm | INTEL\r
X64/ReadGs.nasm| INTEL\r
- X64/ReadGs.asm | INTEL\r
X64/ReadFs.nasm| INTEL\r
- X64/ReadFs.asm | INTEL\r
X64/ReadEs.nasm| INTEL\r
- X64/ReadEs.asm | INTEL\r
X64/ReadDs.nasm| INTEL\r
- X64/ReadDs.asm | INTEL\r
X64/ReadCs.nasm| INTEL\r
- X64/ReadCs.asm | INTEL\r
X64/WriteDr7.nasm| INTEL\r
- X64/WriteDr7.asm | INTEL\r
X64/WriteDr6.nasm| INTEL\r
- X64/WriteDr6.asm | INTEL\r
X64/WriteDr5.nasm| INTEL\r
- X64/WriteDr5.asm | INTEL\r
X64/WriteDr4.nasm| INTEL\r
- X64/WriteDr4.asm | INTEL\r
X64/WriteDr3.nasm| INTEL\r
- X64/WriteDr3.asm | INTEL\r
X64/WriteDr2.nasm| INTEL\r
- X64/WriteDr2.asm | INTEL\r
X64/WriteDr1.nasm| INTEL\r
- X64/WriteDr1.asm | INTEL\r
X64/WriteDr0.nasm| INTEL\r
- X64/WriteDr0.asm | INTEL\r
X64/ReadDr7.nasm| INTEL\r
- X64/ReadDr7.asm | INTEL\r
X64/ReadDr6.nasm| INTEL\r
- X64/ReadDr6.asm | INTEL\r
X64/ReadDr5.nasm| INTEL\r
- X64/ReadDr5.asm | INTEL\r
X64/ReadDr4.nasm| INTEL\r
- X64/ReadDr4.asm | INTEL\r
X64/ReadDr3.nasm| INTEL\r
- X64/ReadDr3.asm | INTEL\r
X64/ReadDr2.nasm| INTEL\r
- X64/ReadDr2.asm | INTEL\r
X64/ReadDr1.nasm| INTEL\r
- X64/ReadDr1.asm | INTEL\r
X64/ReadDr0.nasm| INTEL\r
- X64/ReadDr0.asm | INTEL\r
X64/WriteCr4.nasm| INTEL\r
- X64/WriteCr4.asm | INTEL\r
X64/WriteCr3.nasm| INTEL\r
- X64/WriteCr3.asm | INTEL\r
X64/WriteCr2.nasm| INTEL\r
- X64/WriteCr2.asm | INTEL\r
X64/WriteCr0.nasm| INTEL\r
- X64/WriteCr0.asm | INTEL\r
X64/ReadCr4.nasm| INTEL\r
- X64/ReadCr4.asm | INTEL\r
X64/ReadCr3.nasm| INTEL\r
- X64/ReadCr3.asm | INTEL\r
X64/ReadCr2.nasm| INTEL\r
- X64/ReadCr2.asm | INTEL\r
X64/ReadCr0.nasm| INTEL\r
- X64/ReadCr0.asm | INTEL\r
X64/ReadEflags.nasm| INTEL\r
- X64/ReadEflags.asm | INTEL\r
\r
X64/Non-existing.c\r
Math64.c\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ARShiftU64.asm\r
-;\r
-; Abstract:\r
-;\r
-; 64-bit arithmetic right shift function for IA-32\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .686\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; InternalMathARShiftU64 (\r
-; IN UINT64 Operand,\r
-; IN UINTN Count\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalMathARShiftU64 PROC\r
- mov cl, [esp + 12]\r
- mov eax, [esp + 8]\r
- cdq\r
- test cl, 32\r
- jnz @F\r
- mov edx, eax\r
- mov eax, [esp + 4]\r
-@@: \r
- shrd eax, edx, cl\r
- sar edx, cl\r
- ret\r
-InternalMathARShiftU64 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------ ;\r
-; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; CpuBreakpoint.Asm\r
-;\r
-; Abstract:\r
-;\r
-; CpuBreakpoint function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .686\r
- .model flat\r
- .xmm\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; CpuBreakpoint (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-CpuBreakpoint PROC\r
- int 3\r
- ret\r
-CpuBreakpoint ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; CpuId.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmCpuid function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586P\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; AsmCpuid (\r
-; IN UINT32 RegisterInEax,\r
-; OUT UINT32 *RegisterOutEax OPTIONAL,\r
-; OUT UINT32 *RegisterOutEbx OPTIONAL,\r
-; OUT UINT32 *RegisterOutEcx OPTIONAL,\r
-; OUT UINT32 *RegisterOutEdx OPTIONAL\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmCpuid PROC USES ebx\r
- push ebp\r
- mov ebp, esp\r
- mov eax, [ebp + 12]\r
- cpuid\r
- push ecx\r
- mov ecx, [ebp + 16]\r
- jecxz @F\r
- mov [ecx], eax\r
-@@:\r
- mov ecx, [ebp + 20]\r
- jecxz @F\r
- mov [ecx], ebx\r
-@@:\r
- mov ecx, [ebp + 24]\r
- jecxz @F\r
- pop DWORD [ecx]\r
-@@:\r
- mov ecx, [ebp + 28]\r
- jecxz @F\r
- mov [ecx], edx\r
-@@:\r
- mov eax, [ebp + 12]\r
- leave\r
- ret\r
-AsmCpuid ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; CpuIdEx.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmCpuidEx function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .686\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT32\r
-; EFIAPI\r
-; AsmCpuidEx (\r
-; IN UINT32 RegisterInEax,\r
-; IN UINT32 RegisterInEcx,\r
-; OUT UINT32 *RegisterOutEax OPTIONAL,\r
-; OUT UINT32 *RegisterOutEbx OPTIONAL,\r
-; OUT UINT32 *RegisterOutEcx OPTIONAL,\r
-; OUT UINT32 *RegisterOutEdx OPTIONAL\r
-; )\r
-;------------------------------------------------------------------------------\r
-AsmCpuidEx PROC USES ebx\r
- push ebp\r
- mov ebp, esp\r
- mov eax, [ebp + 12]\r
- mov ecx, [ebp + 16]\r
- cpuid\r
- push ecx\r
- mov ecx, [ebp + 20]\r
- jecxz @F\r
- mov [ecx], eax\r
-@@:\r
- mov ecx, [ebp + 24]\r
- jecxz @F\r
- mov [ecx], ebx\r
-@@:\r
- mov ecx, [ebp + 32]\r
- jecxz @F\r
- mov [ecx], edx\r
-@@:\r
- mov ecx, [ebp + 28]\r
- jecxz @F\r
- pop DWORD [ecx]\r
-@@:\r
- mov eax, [ebp + 12]\r
- leave\r
- ret\r
-AsmCpuidEx ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------ ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; CpuPause.Asm\r
-;\r
-; Abstract:\r
-;\r
-; CpuPause function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .686\r
- .model flat,C\r
- .xmm\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; CpuPause (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-CpuPause PROC\r
- pause\r
- ret\r
-CpuPause ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; DisableCache.Asm\r
-;\r
-; Abstract:\r
-;\r
-; Set the CD bit of CR0 to 1, clear the NW bit of CR0 to 0, and flush all caches with a\r
-; WBINVD instruction.\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .486p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; AsmDisableCache (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmDisableCache PROC\r
- mov eax, cr0\r
- bts eax, 30\r
- btr eax, 29\r
- mov cr0, eax\r
- wbinvd\r
- ret\r
-AsmDisableCache ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; DisableInterrupts.Asm\r
-;\r
-; Abstract:\r
-;\r
-; DisableInterrupts function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; DisableInterrupts (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-DisableInterrupts PROC\r
- cli\r
- ret\r
-DisableInterrupts ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; DisablePaging32.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmDisablePaging32 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; InternalX86DisablePaging32 (\r
-; IN SWITCH_STACK_ENTRY_POINT EntryPoint,\r
-; IN VOID *Context1, OPTIONAL\r
-; IN VOID *Context2, OPTIONAL\r
-; IN VOID *NewStack\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalX86DisablePaging32 PROC\r
- mov ebx, [esp + 4]\r
- mov ecx, [esp + 8]\r
- mov edx, [esp + 12]\r
- pushfd\r
- pop edi ; save EFLAGS to edi\r
- cli\r
- mov eax, cr0\r
- btr eax, 31\r
- mov esp, [esp + 16]\r
- mov cr0, eax\r
- push edi\r
- popfd ; restore EFLAGS from edi\r
- push edx\r
- push ecx\r
- call ebx\r
- jmp $ ; EntryPoint() should not return\r
-InternalX86DisablePaging32 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; DivU64x32.asm\r
-;\r
-; Abstract:\r
-;\r
-; Calculate the quotient of a 64-bit integer by a 32-bit integer\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; InternalMathDivU64x32 (\r
-; IN UINT64 Dividend,\r
-; IN UINT32 Divisor\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalMathDivU64x32 PROC\r
- mov eax, [esp + 8]\r
- mov ecx, [esp + 12]\r
- xor edx, edx\r
- div ecx\r
- push eax ; save quotient on stack\r
- mov eax, [esp + 8]\r
- div ecx\r
- pop edx ; restore high-order dword of the quotient\r
- ret\r
-InternalMathDivU64x32 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; DivError.asm\r
-;\r
-; Abstract:\r
-;\r
-; Set error flag for all division functions\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; InternalMathDivRemU64x32 (\r
-; IN UINT64 Dividend,\r
-; IN UINT32 Divisor,\r
-; OUT UINT32 *Remainder\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalMathDivRemU64x32 PROC\r
- mov ecx, [esp + 12] ; ecx <- divisor\r
- mov eax, [esp + 8] ; eax <- dividend[32..63]\r
- xor edx, edx\r
- div ecx ; eax <- quotient[32..63], edx <- remainder\r
- push eax\r
- mov eax, [esp + 8] ; eax <- dividend[0..31]\r
- div ecx ; eax <- quotient[0..31]\r
- mov ecx, [esp + 20] ; ecx <- Remainder\r
- jecxz @F ; abandon remainder if Remainder == NULL\r
- mov [ecx], edx\r
-@@:\r
- pop edx ; edx <- quotient[32..63]\r
- ret\r
-InternalMathDivRemU64x32 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; DivU64x64Remainder.asm\r
-;\r
-; Abstract:\r
-;\r
-; Calculate the quotient of a 64-bit integer by a 64-bit integer and returns\r
-; both the quotient and the remainder\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-EXTERN InternalMathDivRemU64x32:PROC\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; InternalMathDivRemU64x64 (\r
-; IN UINT64 Dividend,\r
-; IN UINT64 Divisor,\r
-; OUT UINT64 *Remainder OPTIONAL\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalMathDivRemU64x64 PROC\r
- mov ecx, [esp + 16] ; ecx <- divisor[32..63]\r
- test ecx, ecx\r
- jnz _@DivRemU64x64 ; call _@DivRemU64x64 if Divisor > 2^32\r
- mov ecx, [esp + 20]\r
- jecxz @F\r
- and dword ptr [ecx + 4], 0 ; zero high dword of remainder\r
- mov [esp + 16], ecx ; set up stack frame to match DivRemU64x32\r
-@@:\r
- jmp InternalMathDivRemU64x32\r
-InternalMathDivRemU64x64 ENDP\r
-\r
-_@DivRemU64x64 PROC PRIVATE USES ebx esi edi\r
- mov edx, dword ptr [esp + 20]\r
- mov eax, dword ptr [esp + 16] ; edx:eax <- dividend\r
- mov edi, edx\r
- mov esi, eax ; edi:esi <- dividend\r
- mov ebx, dword ptr [esp + 24] ; ecx:ebx <- divisor\r
-@@:\r
- shr edx, 1\r
- rcr eax, 1\r
- shrd ebx, ecx, 1\r
- shr ecx, 1\r
- jnz @B\r
- div ebx\r
- mov ebx, eax ; ebx <- quotient\r
- mov ecx, [esp + 28] ; ecx <- high dword of divisor\r
- mul dword ptr [esp + 24] ; edx:eax <- quotient * divisor[0..31]\r
- imul ecx, ebx ; ecx <- quotient * divisor[32..63]\r
- add edx, ecx ; edx <- (quotient * divisor)[32..63]\r
- mov ecx, dword ptr [esp + 32] ; ecx <- addr for Remainder\r
- jc @TooLarge ; product > 2^64\r
- cmp edi, edx ; compare high 32 bits\r
- ja @Correct\r
- jb @TooLarge ; product > dividend\r
- cmp esi, eax\r
- jae @Correct ; product <= dividend\r
-@TooLarge:\r
- dec ebx ; adjust quotient by -1\r
- jecxz @Return ; return if Remainder == NULL\r
- sub eax, dword ptr [esp + 24]\r
- sbb edx, dword ptr [esp + 28] ; edx:eax <- (quotient - 1) * divisor\r
-@Correct:\r
- jecxz @Return\r
- sub esi, eax\r
- sbb edi, edx ; edi:esi <- remainder\r
- mov [ecx], esi\r
- mov [ecx + 4], edi\r
-@Return:\r
- mov eax, ebx ; eax <- quotient\r
- xor edx, edx ; quotient is 32 bits long\r
- ret\r
-_@DivRemU64x64 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; EnableCache.Asm\r
-;\r
-; Abstract:\r
-;\r
-; Flush all caches with a WBINVD instruction, clear the CD bit of CR0 to 0, and clear \r
-; the NW bit of CR0 to 0\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .486p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; AsmEnableCache (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmEnableCache PROC\r
- wbinvd\r
- mov eax, cr0\r
- btr eax, 29\r
- btr eax, 30\r
- mov cr0, eax\r
- ret\r
-AsmEnableCache ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; EnableDisableInterrupts.Asm\r
-;\r
-; Abstract:\r
-;\r
-; EnableDisableInterrupts function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386p\r
- .model flat\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; EnableDisableInterrupts (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-EnableDisableInterrupts PROC\r
- sti\r
- cli\r
- ret\r
-EnableDisableInterrupts ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; EnableInterrupts.Asm\r
-;\r
-; Abstract:\r
-;\r
-; EnableInterrupts function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386p\r
- .model flat\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; EnableInterrupts (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-EnableInterrupts PROC\r
- sti\r
- ret\r
-EnableInterrupts ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; EnablePaging32.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmEnablePaging32 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; InternalX86EnablePaging32 (\r
-; IN SWITCH_STACK_ENTRY_POINT EntryPoint,\r
-; IN VOID *Context1, OPTIONAL\r
-; IN VOID *Context2, OPTIONAL\r
-; IN VOID *NewStack\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalX86EnablePaging32 PROC\r
- mov ebx, [esp + 4]\r
- mov ecx, [esp + 8]\r
- mov edx, [esp + 12]\r
- pushfd\r
- pop edi ; save flags in edi\r
- cli\r
- mov eax, cr0\r
- bts eax, 31\r
- mov esp, [esp + 16]\r
- mov cr0, eax\r
- push edi\r
- popfd ; restore flags\r
- push edx\r
- push ecx\r
- call ebx\r
- jmp $\r
-InternalX86EnablePaging32 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; EnablePaging64.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmEnablePaging64 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .686p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; InternalX86EnablePaging64 (\r
-; IN UINT16 Cs,\r
-; IN UINT64 EntryPoint,\r
-; IN UINT64 Context1, OPTIONAL\r
-; IN UINT64 Context2, OPTIONAL\r
-; IN UINT64 NewStack\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalX86EnablePaging64 PROC\r
- cli\r
- mov DWORD PTR [esp], @F ; offset for far retf, seg is the 1st arg\r
- mov eax, cr4\r
- or al, (1 SHL 5)\r
- mov cr4, eax ; enable PAE\r
- mov ecx, 0c0000080h\r
- rdmsr\r
- or ah, 1 ; set LME\r
- wrmsr\r
- mov eax, cr0\r
- bts eax, 31 ; set PG\r
- mov cr0, eax ; enable paging\r
- retf ; topmost 2 dwords hold the address\r
-@@: ; long mode starts here\r
- DB 67h, 48h ; 32-bit address size, 64-bit operand size\r
- mov ebx, [esp] ; mov rbx, [esp]\r
- DB 67h, 48h\r
- mov ecx, [esp + 8] ; mov rcx, [esp + 8]\r
- DB 67h, 48h\r
- mov edx, [esp + 10h] ; mov rdx, [esp + 10h]\r
- DB 67h, 48h\r
- mov esp, [esp + 18h] ; mov rsp, [esp + 18h]\r
- DB 48h\r
- add esp, -20h ; add rsp, -20h\r
- call ebx ; call rbx\r
- hlt ; no one should get here\r
-InternalX86EnablePaging64 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; FlushCacheLine.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmFlushCacheLine function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586P\r
- .model flat,C\r
- .xmm\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID *\r
-; EFIAPI\r
-; AsmFlushCacheLine (\r
-; IN VOID *LinearAddress\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmFlushCacheLine PROC\r
- ;\r
- ; If the CPU does not support CLFLUSH instruction, \r
- ; then promote flush range to flush entire cache.\r
- ;\r
- mov eax, 1\r
- push ebx\r
- cpuid\r
- pop ebx\r
- mov eax, [esp + 4]\r
- test edx, BIT19\r
- jz @F\r
- clflush [eax]\r
- ret\r
-@@:\r
- wbinvd\r
- ret\r
-AsmFlushCacheLine ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; FxRestore.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmFxRestore function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .xmm\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; InternalX86FxRestore (\r
-; IN CONST IA32_FX_BUFFER *Buffer\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalX86FxRestore PROC\r
- mov eax, [esp + 4] ; Buffer must be 16-byte aligned\r
- fxrstor [eax]\r
- ret\r
-InternalX86FxRestore ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; FxSave.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmFxSave function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .xmm\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; InternalX86FxSave (\r
-; OUT IA32_FX_BUFFER *Buffer\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalX86FxSave PROC\r
- mov eax, [esp + 4] ; Buffer must be 16-byte aligned\r
- fxsave [eax]\r
- ret\r
-InternalX86FxSave ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; Invd.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmInvd function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .486p\r
- .model flat\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; AsmInvd (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmInvd PROC\r
- invd\r
- ret\r
-AsmInvd ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; LRotU64.asm\r
-;\r
-; Abstract:\r
-;\r
-; 64-bit left rotation for Ia32\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .686\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; InternalMathLRotU64 (\r
-; IN UINT64 Operand,\r
-; IN UINTN Count\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalMathLRotU64 PROC USES ebx\r
- mov cl, [esp + 16]\r
- mov edx, [esp + 12]\r
- mov eax, [esp + 8]\r
- shld ebx, edx, cl\r
- shld edx, eax, cl\r
- ror ebx, cl\r
- shld eax, ebx, cl\r
- test cl, 32 ; Count >= 32?\r
- jz @F\r
- mov ecx, eax\r
- mov eax, edx\r
- mov edx, ecx\r
-@@: \r
- ret\r
-InternalMathLRotU64 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; LShiftU64.asm\r
-;\r
-; Abstract:\r
-;\r
-; 64-bit left shift function for IA-32\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .686\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; InternalMathLShiftU64 (\r
-; IN UINT64 Operand,\r
-; IN UINTN Count\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalMathLShiftU64 PROC\r
- mov cl, [esp + 12]\r
- xor eax, eax\r
- mov edx, [esp + 4]\r
- test cl, 32 ; Count >= 32?\r
- jnz @F\r
- mov eax, edx\r
- mov edx, [esp + 8]\r
-@@: \r
- shld edx, eax, cl\r
- shl eax, cl\r
- ret\r
-InternalMathLShiftU64 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; LongJump.Asm\r
-;\r
-; Abstract:\r
-;\r
-; Implementation of _LongJump() on IA-32.\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; InternalLongJump (\r
-; IN BASE_LIBRARY_JUMP_BUFFER *JumpBuffer,\r
-; IN UINTN Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalLongJump PROC\r
- pop eax ; skip return address\r
- pop edx ; edx <- JumpBuffer\r
- pop eax ; eax <- Value\r
- mov ebx, [edx]\r
- mov esi, [edx + 4]\r
- mov edi, [edx + 8]\r
- mov ebp, [edx + 12]\r
- mov esp, [edx + 16]\r
- jmp dword ptr [edx + 20] ; restore "eip"\r
-InternalLongJump ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; DivU64x32.asm\r
-;\r
-; Abstract:\r
-;\r
-; Calculate the remainder of a 64-bit integer by a 32-bit integer\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT32\r
-; EFIAPI\r
-; InternalMathModU64x32 (\r
-; IN UINT64 Dividend,\r
-; IN UINT32 Divisor\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalMathModU64x32 PROC\r
- mov eax, [esp + 8]\r
- mov ecx, [esp + 12]\r
- xor edx, edx\r
- div ecx\r
- mov eax, [esp + 4]\r
- div ecx\r
- mov eax, edx\r
- ret\r
-InternalMathModU64x32 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; Monitor.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmMonitor function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .686\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmMonitor (\r
-; IN UINTN Eax,\r
-; IN UINTN Ecx,\r
-; IN UINTN Edx\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmMonitor PROC\r
- mov eax, [esp + 4]\r
- mov ecx, [esp + 8]\r
- mov edx, [esp + 12]\r
- DB 0fh, 1, 0c8h ; monitor\r
- ret\r
-AsmMonitor ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; MultU64x32.asm\r
-;\r
-; Abstract:\r
-;\r
-; Calculate the product of a 64-bit integer and a 32-bit integer\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; InternalMathMultU64x32 (\r
-; IN UINT64 Multiplicand,\r
-; IN UINT32 Multiplier\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalMathMultU64x32 PROC\r
- mov ecx, [esp + 12]\r
- mov eax, ecx\r
- imul ecx, [esp + 8] ; overflow not detectable\r
- mul dword ptr [esp + 4]\r
- add edx, ecx\r
- ret\r
-InternalMathMultU64x32 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; MultU64x64.asm\r
-;\r
-; Abstract:\r
-;\r
-; Calculate the product of a 64-bit integer and another 64-bit integer\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; InternalMathMultU64x64 (\r
-; IN UINT64 Multiplicand,\r
-; IN UINT64 Multiplier\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalMathMultU64x64 PROC USES ebx\r
- mov ebx, [esp + 8] ; ebx <- M1[0..31]\r
- mov edx, [esp + 16] ; edx <- M2[0..31]\r
- mov ecx, ebx\r
- mov eax, edx\r
- imul ebx, [esp + 20] ; ebx <- M1[0..31] * M2[32..63]\r
- imul edx, [esp + 12] ; edx <- M1[32..63] * M2[0..31]\r
- add ebx, edx ; carries are abandoned\r
- mul ecx ; edx:eax <- M1[0..31] * M2[0..31]\r
- add edx, ebx ; carries are abandoned\r
- ret\r
-InternalMathMultU64x64 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; Mwait.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmMwait function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .686\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmMwait (\r
-; IN UINTN Eax,\r
-; IN UINTN Ecx\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmMwait PROC\r
- mov eax, [esp + 4]\r
- mov ecx, [esp + 8]\r
- DB 0fh, 1, 0c9h ; mwait\r
- ret\r
-AsmMwait ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; RRotU64.asm\r
-;\r
-; Abstract:\r
-;\r
-; 64-bit right rotation for Ia32\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .686\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; InternalMathRRotU64 (\r
-; IN UINT64 Operand,\r
-; IN UINTN Count\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalMathRRotU64 PROC USES ebx\r
- mov cl, [esp + 16]\r
- mov eax, [esp + 8]\r
- mov edx, [esp + 12]\r
- shrd ebx, eax, cl\r
- shrd eax, edx, cl\r
- rol ebx, cl\r
- shrd edx, ebx, cl\r
- test cl, 32 ; Count >= 32?\r
- jz @F\r
- mov ecx, eax ; switch eax & edx if Count >= 32\r
- mov eax, edx\r
- mov edx, ecx\r
-@@: \r
- ret\r
-InternalMathRRotU64 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; RShiftU64.asm\r
-;\r
-; Abstract:\r
-;\r
-; 64-bit logical right shift function for IA-32\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .686\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; InternalMathRShiftU64 (\r
-; IN UINT64 Operand,\r
-; IN UINTN Count\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalMathRShiftU64 PROC\r
- mov cl, [esp + 12] ; cl <- Count\r
- xor edx, edx\r
- mov eax, [esp + 8]\r
- test cl, 32 ; Count >= 32?\r
- jnz @F\r
- mov edx, eax\r
- mov eax, [esp + 4]\r
-@@: \r
- shrd eax, edx, cl\r
- shr edx, cl\r
- ret\r
-InternalMathRShiftU64 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; RdRand.asm\r
-;\r
-; Abstract:\r
-;\r
-; Generates random number through CPU RdRand instruction under 32-bit platform.\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
-.686P\r
-.model flat, C\r
-\r
-.code\r
-\r
-;------------------------------------------------------------------------------\r
-; Generates a 16 bit random number through RDRAND instruction.\r
-; Return TRUE if Rand generated successfully, or FALSE if not.\r
-;\r
-; BOOLEAN EFIAPI InternalX86RdRand16 (UINT16 *Rand);\r
-;------------------------------------------------------------------------------\r
-InternalX86RdRand16 PROC\r
- ; rdrand ax ; generate a 16 bit RN into ax\r
- ; CF=1 if RN generated ok, otherwise CF=0\r
- db 0fh, 0c7h, 0f0h ; rdrand r16: "0f c7 /6 ModRM:r/m(w)"\r
- jc rn16_ok ; jmp if CF=1\r
- xor eax, eax ; reg=0 if CF=0\r
- ret ; return with failure status\r
-rn16_ok:\r
- mov edx, dword ptr [esp + 4]\r
- mov [edx], ax\r
- mov eax, 1\r
- ret\r
-InternalX86RdRand16 ENDP\r
-\r
-;------------------------------------------------------------------------------\r
-; Generates a 32 bit random number through RDRAND instruction.\r
-; Return TRUE if Rand generated successfully, or FALSE if not.\r
-;\r
-; BOOLEAN EFIAPI InternalX86RdRand32 (UINT32 *Rand);\r
-;------------------------------------------------------------------------------\r
-InternalX86RdRand32 PROC\r
- ; rdrand eax ; generate a 32 bit RN into eax\r
- ; CF=1 if RN generated ok, otherwise CF=0\r
- db 0fh, 0c7h, 0f0h ; rdrand r32: "0f c7 /6 ModRM:r/m(w)"\r
- jc rn32_ok ; jmp if CF=1\r
- xor eax, eax ; reg=0 if CF=0\r
- ret ; return with failure status\r
-rn32_ok:\r
- mov edx, dword ptr [esp + 4]\r
- mov [edx], eax\r
- mov eax, 1\r
- ret\r
-InternalX86RdRand32 ENDP\r
-\r
-;------------------------------------------------------------------------------\r
-; Generates a 64 bit random number through RDRAND instruction.\r
-; Return TRUE if Rand generated successfully, or FALSE if not.\r
-;\r
-; BOOLEAN EFIAPI InternalX86RdRand64 (UINT64 *Rand);\r
-;------------------------------------------------------------------------------\r
-InternalX86RdRand64 PROC\r
- ; rdrand eax ; generate a 32 bit RN into eax\r
- ; CF=1 if RN generated ok, otherwise CF=0\r
- db 0fh, 0c7h, 0f0h ; rdrand r32: "0f c7 /6 ModRM:r/m(w)"\r
- jnc rn64_ret ; jmp if CF=0\r
- mov edx, dword ptr [esp + 4]\r
- mov [edx], eax\r
-\r
- db 0fh, 0c7h, 0f0h ; generate another 32 bit RN\r
- jnc rn64_ret ; jmp if CF=0\r
- mov [edx + 4], eax\r
-\r
- mov eax, 1\r
- ret\r
-rn64_ret:\r
- xor eax, eax\r
- ret ; return with failure status\r
-InternalX86RdRand64 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadCr0.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadCr0 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmReadCr0 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadCr0 PROC\r
- mov eax, cr0\r
- ret\r
-AsmReadCr0 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadCr2.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadCr2 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmReadCr2 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadCr2 PROC\r
- mov eax, cr2\r
- ret\r
-AsmReadCr2 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadCr3.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadCr3 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmReadCr3 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadCr3 PROC\r
- mov eax, cr3\r
- ret\r
-AsmReadCr3 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadCr4.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadCr4 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmReadCr4 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadCr4 PROC\r
- mov eax, cr4\r
- ret\r
-AsmReadCr4 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadCs.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadCs function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT16\r
-; EFIAPI\r
-; AsmReadCs (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadCs PROC\r
- mov eax, cs\r
- ret\r
-AsmReadCs ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadDr0.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadDr0 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmReadDr0 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadDr0 PROC\r
- mov eax, dr0\r
- ret\r
-AsmReadDr0 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadDr1.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadDr1 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmReadDr1 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadDr1 PROC\r
- mov eax, dr1\r
- ret\r
-AsmReadDr1 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadDr2.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadDr2 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmReadDr2 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadDr2 PROC\r
- mov eax, dr2\r
- ret\r
-AsmReadDr2 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadDr3.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadDr3 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmReadDr3 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadDr3 PROC\r
- mov eax, dr3\r
- ret\r
-AsmReadDr3 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadDr4.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadDr4 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmReadDr4 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadDr4 PROC\r
- ;\r
- ; DR4 is alias to DR6 only if DE (in CR4) is cleared. Otherwise, reading\r
- ; this register will cause a #UD exception.\r
- ;\r
- ; MS assembler doesn't support this instruction since no one would use it\r
- ; under normal circustances. Here opcode is used.\r
- ;\r
- DB 0fh, 21h, 0e0h\r
- ret\r
-AsmReadDr4 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadDr5.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadDr5 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmReadDr5 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadDr5 PROC\r
- ;\r
- ; DR5 is alias to DR7 only if DE (in CR4) is cleared. Otherwise, reading\r
- ; this register will cause a #UD exception.\r
- ;\r
- ; MS assembler doesn't support this instruction since no one would use it\r
- ; under normal circustances. Here opcode is used.\r
- ;\r
- DB 0fh, 21h, 0e8h\r
- ret\r
-AsmReadDr5 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadDr6.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadDr6 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmReadDr6 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadDr6 PROC\r
- mov eax, dr6\r
- ret\r
-AsmReadDr6 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadDr7.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadDr7 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmReadDr7 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadDr7 PROC\r
- mov eax, dr7\r
- ret\r
-AsmReadDr7 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadDs.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadDs function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT16\r
-; EFIAPI\r
-; AsmReadDs (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadDs PROC\r
- mov eax, ds\r
- ret\r
-AsmReadDs ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadEflags.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadEflags function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmReadEflags (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadEflags PROC\r
- pushfd\r
- pop eax\r
- ret\r
-AsmReadEflags ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadEs.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadEs function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT16\r
-; EFIAPI\r
-; AsmReadEs (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadEs PROC\r
- mov eax, es\r
- ret\r
-AsmReadEs ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadFs.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadFs function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT16\r
-; EFIAPI\r
-; AsmReadFs (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadFs PROC\r
- mov eax, fs\r
- ret\r
-AsmReadFs ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadGdtr.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadGdtr function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; InternalX86ReadGdtr (\r
-; OUT IA32_DESCRIPTOR *Gdtr\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalX86ReadGdtr PROC\r
- mov eax, [esp + 4]\r
- sgdt fword ptr [eax]\r
- ret\r
-InternalX86ReadGdtr ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadGs.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadGs function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT16\r
-; EFIAPI\r
-; AsmReadGs (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadGs PROC\r
- mov eax, gs\r
- ret\r
-AsmReadGs ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadIdtr.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadIdtr function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; InternalX86ReadIdtr (\r
-; OUT IA32_DESCRIPTOR *Idtr\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalX86ReadIdtr PROC\r
- mov eax, [esp + 4]\r
- sidt fword ptr [eax]\r
- ret\r
-InternalX86ReadIdtr ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadLdtr.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadLdtr function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT16\r
-; EFIAPI\r
-; AsmReadLdtr (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadLdtr PROC\r
- sldt ax\r
- ret\r
-AsmReadLdtr ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadMm0.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadMm0 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .mmx\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; AsmReadMm0 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadMm0 PROC\r
- push eax\r
- push eax\r
- movq [esp], mm0\r
- pop eax\r
- pop edx\r
- ret\r
-AsmReadMm0 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadMm1.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadMm1 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .mmx\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; AsmReadMm1 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadMm1 PROC\r
- push eax\r
- push eax\r
- movq [esp], mm1\r
- pop eax\r
- pop edx\r
- ret\r
-AsmReadMm1 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadMm2.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadMm2 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .mmx\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; AsmReadMm2 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadMm2 PROC\r
- push eax\r
- push eax\r
- movq [esp], mm2\r
- pop eax\r
- pop edx\r
- ret\r
-AsmReadMm2 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadMm3.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadMm3 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .mmx\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; AsmReadMm3 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadMm3 PROC\r
- push eax\r
- push eax\r
- movq [esp], mm3\r
- pop eax\r
- pop edx\r
- ret\r
-AsmReadMm3 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadMm4.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadMm4 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .mmx\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; AsmReadMm4 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadMm4 PROC\r
- push eax\r
- push eax\r
- movq [esp], mm4\r
- pop eax\r
- pop edx\r
- ret\r
-AsmReadMm4 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadMm5.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadMm5 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .mmx\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; AsmReadMm5 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadMm5 PROC\r
- push eax\r
- push eax\r
- movq [esp], mm5\r
- pop eax\r
- pop edx\r
- ret\r
-AsmReadMm5 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadMm6.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadMm6 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .mmx\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; AsmReadMm6 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadMm6 PROC\r
- push eax\r
- push eax\r
- movq [esp], mm6\r
- pop eax\r
- pop edx\r
- ret\r
-AsmReadMm6 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadMm7.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadMm7 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .mmx\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; AsmReadMm7 (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadMm7 PROC\r
- push eax\r
- push eax\r
- movq [esp], mm7\r
- pop eax\r
- pop edx\r
- ret\r
-AsmReadMm7 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadMsr64.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadMsr64 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; AsmReadMsr64 (\r
-; IN UINT64 Index\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadMsr64 PROC\r
- mov ecx, [esp + 4]\r
- rdmsr\r
- ret\r
-AsmReadMsr64 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadPmc.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadPmc function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; AsmReadPmc (\r
-; IN UINT32 PmcIndex\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadPmc PROC\r
- mov ecx, [esp + 4]\r
- rdpmc\r
- ret\r
-AsmReadPmc ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadSs.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadSs function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT16\r
-; EFIAPI\r
-; AsmReadSs (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadSs PROC\r
- mov eax, ss\r
- ret\r
-AsmReadSs ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadTr.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadTr function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT16\r
-; EFIAPI\r
-; AsmReadTr (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadTr PROC\r
- str ax\r
- ret\r
-AsmReadTr ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; ReadTsc.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmReadTsc function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; AsmReadTsc (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmReadTsc PROC\r
- rdtsc\r
- ret\r
-AsmReadTsc ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; SetJump.Asm\r
-;\r
-; Abstract:\r
-;\r
-; Implementation of SetJump() on IA-32.\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386\r
- .model flat,C\r
- .code\r
-\r
-InternalAssertJumpBuffer PROTO C\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; SetJump (\r
-; OUT BASE_LIBRARY_JUMP_BUFFER *JumpBuffer\r
-; );\r
-;------------------------------------------------------------------------------\r
-SetJump PROC\r
- push DWORD [esp + 4]\r
- call InternalAssertJumpBuffer ; To validate JumpBuffer\r
- pop ecx\r
- pop ecx ; ecx <- return address\r
- mov edx, [esp]\r
- mov [edx], ebx\r
- mov [edx + 4], esi\r
- mov [edx + 8], edi\r
- mov [edx + 12], ebp\r
- mov [edx + 16], esp\r
- mov [edx + 20], ecx ; eip value to restore in LongJump\r
- xor eax, eax\r
- jmp ecx\r
-SetJump ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; CpuId.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmCpuid function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; InternalMathSwapBytes64 (\r
-; IN UINT64 Operand\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalMathSwapBytes64 PROC\r
- mov eax, [esp + 8] ; eax <- upper 32 bits\r
- mov edx, [esp + 4] ; edx <- lower 32 bits\r
- bswap eax\r
- bswap edx\r
- ret\r
-InternalMathSwapBytes64 ENDP\r
-\r
- END\r
+++ /dev/null
-\r
-#include "BaseLibInternals.h"\r
-\r
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; Thunk.asm\r
-;\r
-; Abstract:\r
-;\r
-; Real mode thunk\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .686p\r
- .model flat,C\r
-\r
-EXTERNDEF C m16Start:BYTE\r
-EXTERNDEF C m16Size:WORD\r
-EXTERNDEF C mThunk16Attr:WORD\r
-EXTERNDEF C m16Gdt:WORD\r
-EXTERNDEF C m16GdtrBase:WORD\r
-EXTERNDEF C mTransition:WORD\r
-\r
-;\r
-; Here is the layout of the real mode stack. _ToUserCode() is responsible for\r
-; loading all these registers from real mode stack.\r
-;\r
-IA32_REGS STRUC 4t\r
-_EDI DD ?\r
-_ESI DD ?\r
-_EBP DD ?\r
-_ESP DD ?\r
-_EBX DD ?\r
-_EDX DD ?\r
-_ECX DD ?\r
-_EAX DD ?\r
-_DS DW ?\r
-_ES DW ?\r
-_FS DW ?\r
-_GS DW ?\r
-_EFLAGS DD ?\r
-_EIP DD ?\r
-_CS DW ?\r
-_SS DW ?\r
-IA32_REGS ENDS\r
-\r
- .const\r
-\r
-;\r
-; These are global constant to convey information to C code.\r
-;\r
-m16Size DW InternalAsmThunk16 - m16Start\r
-mThunk16Attr DW _ThunkAttr - m16Start\r
-m16Gdt DW _NullSegDesc - m16Start\r
-m16GdtrBase DW _16GdtrBase - m16Start\r
-mTransition DW _EntryPoint - m16Start\r
-\r
- .code\r
-\r
-m16Start LABEL BYTE\r
-\r
-SavedGdt LABEL FWORD\r
- DW ?\r
- DD ?\r
-;------------------------------------------------------------------------------\r
-; _BackFromUserCode() takes control in real mode after 'retf' has been executed\r
-; by user code. It will be shadowed to somewhere in memory below 1MB.\r
-;------------------------------------------------------------------------------\r
-_BackFromUserCode PROC\r
- ;\r
- ; The order of saved registers on the stack matches the order they appears\r
- ; in IA32_REGS structure. This facilitates wrapper function to extract them\r
- ; into that structure.\r
- ;\r
- push ss\r
- push cs\r
- DB 66h\r
- call @Base ; push eip\r
-@Base:\r
- pushf ; pushfd actually\r
- cli ; disable interrupts\r
- push gs\r
- push fs\r
- push es\r
- push ds\r
- pushaw ; pushad actually\r
- DB 66h, 0bah ; mov edx, imm32\r
-_ThunkAttr DD ?\r
- test dl, THUNK_ATTRIBUTE_DISABLE_A20_MASK_INT_15\r
- jz @1\r
- mov eax, 15cd2401h ; mov ax, 2401h & int 15h\r
- cli ; disable interrupts\r
- jnc @2\r
-@1:\r
- test dl, THUNK_ATTRIBUTE_DISABLE_A20_MASK_KBD_CTRL\r
- jz @2\r
- in al, 92h\r
- or al, 2\r
- out 92h, al ; deactivate A20M#\r
-@2:\r
- xor ax, ax ; xor eax, eax\r
- mov eax, ss ; mov ax, ss\r
- DB 67h\r
- lea bp, [esp + sizeof (IA32_REGS)]\r
- ;\r
- ; esi's in the following 2 instructions are indeed bp in 16-bit code. Fact\r
- ; is "esi" in 32-bit addressing mode has the same encoding of "bp" in 16-\r
- ; bit addressing mode.\r
- ;\r
- mov word ptr (IA32_REGS ptr [esi - sizeof (IA32_REGS)])._ESP, bp\r
- mov ebx, (IA32_REGS ptr [esi - sizeof (IA32_REGS)])._EIP\r
- shl ax, 4 ; shl eax, 4\r
- add bp, ax ; add ebp, eax\r
- DB 66h, 0b8h ; mov eax, imm32\r
-SavedCr4 DD ?\r
- mov cr4, eax\r
- DB 66h\r
- lgdt fword ptr cs:[edi + (SavedGdt - @Base)]\r
- DB 66h, 0b8h ; mov eax, imm32\r
-SavedCr0 DD ?\r
- mov cr0, eax\r
- DB 0b8h ; mov ax, imm16\r
-SavedSs DW ?\r
- mov ss, eax\r
- DB 66h, 0bch ; mov esp, imm32\r
-SavedEsp DD ?\r
- DB 66h\r
- retf ; return to protected mode\r
-_BackFromUserCode ENDP\r
-\r
-_EntryPoint DD _ToUserCode - m16Start\r
- DW 8h\r
-_16Idtr FWORD (1 SHL 10) - 1\r
-_16Gdtr LABEL FWORD\r
- DW GdtEnd - _NullSegDesc - 1\r
-_16GdtrBase DD _NullSegDesc\r
-\r
-;------------------------------------------------------------------------------\r
-; _ToUserCode() takes control in real mode before passing control to user code.\r
-; It will be shadowed to somewhere in memory below 1MB.\r
-;------------------------------------------------------------------------------\r
-_ToUserCode PROC\r
- mov edx, ss\r
- mov ss, ecx ; set new segment selectors\r
- mov ds, ecx\r
- mov es, ecx\r
- mov fs, ecx\r
- mov gs, ecx\r
- mov cr0, eax ; real mode starts at next instruction\r
- ; which (per SDM) *must* be a far JMP.\r
- DB 0eah\r
-_RealAddr DW 0,0 ; filled in by InternalAsmThunk16\r
-\r
- mov cr4, ebp\r
- mov ss, esi ; set up 16-bit stack segment\r
- xchg sp, bx ; set up 16-bit stack pointer\r
-\r
-; mov bp, [esp + sizeof(IA32_REGS)\r
- DB 67h\r
- mov ebp, [esp + sizeof(IA32_REGS)] ; BackFromUserCode address from stack\r
-\r
-; mov cs:[bp + (SavedSs - _BackFromUserCode)], dx\r
- mov cs:[esi + (SavedSs - _BackFromUserCode)], edx\r
-\r
-; mov cs:[bp + (SavedEsp - _BackFromUserCode)], ebx\r
- DB 2eh, 66h, 89h, 9eh\r
- DW SavedEsp - _BackFromUserCode\r
-\r
-; lidt cs:[bp + (_16Idtr - _BackFromUserCode)]\r
- DB 2eh, 66h, 0fh, 01h, 9eh\r
- DW _16Idtr - _BackFromUserCode\r
-\r
- popaw ; popad actually\r
- pop ds\r
- pop es\r
- pop fs\r
- pop gs\r
- popf ; popfd\r
- DB 66h ; Use 32-bit addressing for "retf" below\r
- retf ; transfer control to user code\r
-_ToUserCode ENDP\r
-\r
-_NullSegDesc DQ 0\r
-_16CsDesc LABEL QWORD\r
- DW -1\r
- DW 0\r
- DB 0\r
- DB 9bh\r
- DB 8fh ; 16-bit segment, 4GB limit\r
- DB 0\r
-_16DsDesc LABEL QWORD\r
- DW -1\r
- DW 0\r
- DB 0\r
- DB 93h\r
- DB 8fh ; 16-bit segment, 4GB limit\r
- DB 0\r
-GdtEnd LABEL QWORD\r
-\r
-;------------------------------------------------------------------------------\r
-; IA32_REGISTER_SET *\r
-; EFIAPI\r
-; InternalAsmThunk16 (\r
-; IN IA32_REGISTER_SET *RegisterSet,\r
-; IN OUT VOID *Transition\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalAsmThunk16 PROC USES ebp ebx esi edi ds es fs gs\r
- mov esi, [esp + 36] ; esi <- RegSet, the 1st parameter\r
- movzx edx, (IA32_REGS ptr [esi])._SS\r
- mov edi, (IA32_REGS ptr [esi])._ESP\r
- add edi, - (sizeof (IA32_REGS) + 4) ; reserve stack space\r
- mov ebx, edi ; ebx <- stack offset\r
- imul eax, edx, 16 ; eax <- edx * 16\r
- push sizeof (IA32_REGS) / 4\r
- add edi, eax ; edi <- linear address of 16-bit stack\r
- pop ecx\r
- rep movsd ; copy RegSet\r
- mov eax, [esp + 40] ; eax <- address of transition code\r
- mov esi, edx ; esi <- 16-bit stack segment\r
- lea edx, [eax + (SavedCr0 - m16Start)]\r
- mov ecx, eax\r
- and ecx, 0fh\r
- shl eax, 12\r
- lea ecx, [ecx + (_BackFromUserCode - m16Start)]\r
- mov ax, cx\r
- stosd ; [edi] <- return address of user code\r
- add eax, _RealAddr + 4 - _BackFromUserCode\r
- mov dword ptr [edx + (_RealAddr - SavedCr0)], eax\r
- sgdt fword ptr [edx + (SavedGdt - SavedCr0)]\r
- sidt fword ptr [esp + 36] ; save IDT stack in argument space\r
- mov eax, cr0\r
- mov [edx], eax ; save CR0 in SavedCr0\r
- and eax, 7ffffffeh ; clear PE, PG bits\r
- mov ebp, cr4\r
- mov [edx + (SavedCr4 - SavedCr0)], ebp\r
- and ebp, NOT 30h ; clear PAE, PSE bits\r
- push 10h\r
- pop ecx ; ecx <- selector for data segments\r
- lgdt fword ptr [edx + (_16Gdtr - SavedCr0)]\r
- pushfd ; Save df/if indeed\r
- call fword ptr [edx + (_EntryPoint - SavedCr0)]\r
- popfd\r
- lidt fword ptr [esp + 36] ; restore protected mode IDTR\r
- lea eax, [ebp - sizeof (IA32_REGS)] ; eax <- the address of IA32_REGS\r
- ret\r
-InternalAsmThunk16 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; Wbinvd.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWbinvd function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .486p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; AsmWbinvd (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWbinvd PROC\r
- wbinvd\r
- ret\r
-AsmWbinvd ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteCr0.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteCr0 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmWriteCr0 (\r
-; UINTN Cr0\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteCr0 PROC\r
- mov eax, [esp + 4]\r
- mov cr0, eax\r
- ret\r
-AsmWriteCr0 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteCr2.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteCr2 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmWriteCr2 (\r
-; UINTN Cr2\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteCr2 PROC\r
- mov eax, [esp + 4]\r
- mov cr2, eax\r
- ret\r
-AsmWriteCr2 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteCr3.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteCr3 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmWriteCr3 (\r
-; UINTN Cr3\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteCr3 PROC\r
- mov eax, [esp + 4]\r
- mov cr3, eax\r
- ret\r
-AsmWriteCr3 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteCr4.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteCr4 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmWriteCr4 (\r
-; UINTN Cr4\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteCr4 PROC\r
- mov eax, [esp + 4]\r
- mov cr4, eax\r
- ret\r
-AsmWriteCr4 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteDr0.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteDr0 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmWriteDr0 (\r
-; IN UINTN Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteDr0 PROC\r
- mov eax, [esp + 4]\r
- mov dr0, eax\r
- ret\r
-AsmWriteDr0 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteDr1.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteDr1 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmWriteDr1 (\r
-; IN UINTN Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteDr1 PROC\r
- mov eax, [esp + 4]\r
- mov dr1, eax\r
- ret\r
-AsmWriteDr1 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteDr2.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteDr2 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmWriteDr2 (\r
-; IN UINTN Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteDr2 PROC\r
- mov eax, [esp + 4]\r
- mov dr2, eax\r
- ret\r
-AsmWriteDr2 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteDr3.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteDr3 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmWriteDr3 (\r
-; IN UINTN Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteDr3 PROC\r
- mov eax, [esp + 4]\r
- mov dr3, eax\r
- ret\r
-AsmWriteDr3 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteDr4.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteDr4 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmWriteDr4 (\r
-; IN UINTN Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteDr4 PROC\r
- mov eax, [esp + 4]\r
- ;\r
- ; DR4 is alias to DR6 only if DE (in CR4) is cleared. Otherwise, writing to\r
- ; this register will cause a #UD exception.\r
- ;\r
- ; MS assembler doesn't support this instruction since no one would use it\r
- ; under normal circustances. Here opcode is used.\r
- ;\r
- DB 0fh, 23h, 0e0h\r
- ret\r
-AsmWriteDr4 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteDr5.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteDr5 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmWriteDr5 (\r
-; IN UINTN Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteDr5 PROC\r
- mov eax, [esp + 4]\r
- ;\r
- ; DR5 is alias to DR7 only if DE (in CR4) is cleared. Otherwise, writing to\r
- ; this register will cause a #UD exception.\r
- ;\r
- ; MS assembler doesn't support this instruction since no one would use it\r
- ; under normal circustances. Here opcode is used.\r
- ;\r
- DB 0fh, 23h, 0e8h\r
- ret\r
-AsmWriteDr5 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteDr6.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteDr6 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmWriteDr6 (\r
-; IN UINTN Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteDr6 PROC\r
- mov eax, [esp + 4]\r
- mov dr6, eax\r
- ret\r
-AsmWriteDr6 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteDr7.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteDr7 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINTN\r
-; EFIAPI\r
-; AsmWriteDr7 (\r
-; IN UINTN Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteDr7 PROC\r
- mov eax, [esp + 4]\r
- mov dr7, eax\r
- ret\r
-AsmWriteDr7 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteGdtr.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteGdtr function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; InternalX86WriteGdtr (\r
-; IN CONST IA32_DESCRIPTOR *Idtr\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalX86WriteGdtr PROC\r
- mov eax, [esp + 4]\r
- lgdt fword ptr [eax]\r
- ret\r
-InternalX86WriteGdtr ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteIdtr.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteIdtr function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; InternalX86WriteIdtr (\r
-; IN CONST IA32_DESCRIPTOR *Idtr\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalX86WriteIdtr PROC\r
- mov eax, [esp + 4]\r
- pushfd\r
- cli\r
- lidt fword ptr [eax]\r
- popfd\r
- ret\r
-InternalX86WriteIdtr ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteLdtr.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteLdtr function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .386p\r
- .model flat\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; AsmWriteLdtr (\r
-; IN UINT16 Ldtr\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteLdtr PROC\r
- mov eax, [esp + 4]\r
- lldt ax\r
- ret\r
-AsmWriteLdtr ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteMm0.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteMm0 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .mmx\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; AsmWriteMm0 (\r
-; IN UINT64 Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteMm0 PROC\r
- movq mm0, [esp + 4]\r
- ret\r
-AsmWriteMm0 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteMm1.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteMm1 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .mmx\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; AsmWriteMm1 (\r
-; IN UINT64 Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteMm1 PROC\r
- movq mm1, [esp + 4]\r
- ret\r
-AsmWriteMm1 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteMm2.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteMm2 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .mmx\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; AsmWriteMm2 (\r
-; IN UINT64 Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteMm2 PROC\r
- movq mm2, [esp + 4]\r
- ret\r
-AsmWriteMm2 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteMm3.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteMm3 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .mmx\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; AsmWriteMm3 (\r
-; IN UINT64 Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteMm3 PROC\r
- movq mm3, [esp + 4]\r
- ret\r
-AsmWriteMm3 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteMm4.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteMm4 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .mmx\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; AsmWriteMm4 (\r
-; IN UINT64 Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteMm4 PROC\r
- movq mm4, [esp + 4]\r
- ret\r
-AsmWriteMm4 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteMm5.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteMm5 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .mmx\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; AsmWriteMm5 (\r
-; IN UINT64 Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteMm5 PROC\r
- movq mm5, [esp + 4]\r
- ret\r
-AsmWriteMm5 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteMm6.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteMm6 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .mmx\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; AsmWriteMm6 (\r
-; IN UINT64 Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteMm6 PROC\r
- movq mm6, [esp + 4]\r
- ret\r
-AsmWriteMm6 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteMm7.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteMm7 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586\r
- .model flat,C\r
- .mmx\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; AsmWriteMm7 (\r
-; IN UINT64 Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteMm7 PROC\r
- movq mm7, [esp + 4]\r
- ret\r
-AsmWriteMm7 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; WriteMsr64.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmWriteMsr64 function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .586p\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; AsmWriteMsr64 (\r
-; IN UINT32 Index,\r
-; IN UINT64 Value\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmWriteMsr64 PROC\r
- mov edx, [esp + 12]\r
- mov eax, [esp + 8]\r
- mov ecx, [esp + 4]\r
- wrmsr\r
- ret\r
-AsmWriteMsr64 ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------ ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; CpuBreakpoint.Asm\r
-;\r
-; Abstract:\r
-;\r
-; CpuBreakpoint function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; CpuBreakpoint (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-CpuBreakpoint PROC\r
- int 3\r
- ret\r
-CpuBreakpoint ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; CpuId.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmCpuid function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; AsmCpuid (\r
-; IN UINT32 RegisterInEax,\r
-; OUT UINT32 *RegisterOutEax OPTIONAL,\r
-; OUT UINT32 *RegisterOutEbx OPTIONAL,\r
-; OUT UINT32 *RegisterOutEcx OPTIONAL,\r
-; OUT UINT32 *RegisterOutEdx OPTIONAL\r
-; )\r
-;------------------------------------------------------------------------------\r
-AsmCpuid PROC USES rbx\r
- mov eax, ecx\r
- push rax ; save Index on stack\r
- push rdx\r
- cpuid\r
- test r9, r9\r
- jz @F\r
- mov [r9], ecx\r
-@@:\r
- pop rcx\r
- jrcxz @F\r
- mov [rcx], eax\r
-@@:\r
- mov rcx, r8\r
- jrcxz @F\r
- mov [rcx], ebx\r
-@@:\r
- mov rcx, [rsp + 38h]\r
- jrcxz @F\r
- mov [rcx], edx\r
-@@:\r
- pop rax ; restore Index to rax as return value\r
- ret\r
-AsmCpuid ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; CpuIdEx.Asm\r
-;\r
-; Abstract:\r
-;\r
-; AsmCpuidEx function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT32\r
-; EFIAPI\r
-; AsmCpuidEx (\r
-; IN UINT32 RegisterInEax,\r
-; IN UINT32 RegisterInEcx,\r
-; OUT UINT32 *RegisterOutEax OPTIONAL,\r
-; OUT UINT32 *RegisterOutEbx OPTIONAL,\r
-; OUT UINT32 *RegisterOutEcx OPTIONAL,\r
-; OUT UINT32 *RegisterOutEdx OPTIONAL\r
-; )\r
-;------------------------------------------------------------------------------\r
-AsmCpuidEx PROC USES rbx\r
- mov eax, ecx\r
- mov ecx, edx\r
- push rax ; save Index on stack\r
- cpuid\r
- mov r10, [rsp + 38h]\r
- test r10, r10\r
- jz @F\r
- mov [r10], ecx\r
-@@:\r
- mov rcx, r8\r
- jrcxz @F\r
- mov [rcx], eax\r
-@@:\r
- mov rcx, r9\r
- jrcxz @F\r
- mov [rcx], ebx\r
-@@:\r
- mov rcx, [rsp + 40h]\r
- jrcxz @F\r
- mov [rcx], edx\r
-@@:\r
- pop rax ; restore Index to rax as return value\r
- ret\r
-AsmCpuidEx ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------ ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; CpuPause.Asm\r
-;\r
-; Abstract:\r
-;\r
-; CpuPause function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; CpuPause (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-CpuPause PROC\r
- pause\r
- ret\r
-CpuPause ENDP\r
-\r
- END\r
+++ /dev/null
-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-; This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php.\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; DisableCache.Asm\r
-;\r
-; Abstract:\r
-;\r
-; Set the CD bit of CR0 to 1, clear the NW bit of CR0 to 0, and flush all caches with a\r
-; WBINVD instruction.\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID\r
-; EFIAPI\r
-; AsmDisableCache (\r
-; VOID\r
-; );\r
-;------------------------------------------------------------------------------\r
-AsmDisableCache PROC\r
- mov rax, cr0\r
- bts rax, 30\r
- btr rax, 29\r
- mov cr0, rax\r
- wbinvd\r
- ret\r
-AsmDisableCache ENDP\r
-\r
- END\r