//\r
#define EFI_FILE_MODE_READ 0x0000000000000001\r
#define EFI_FILE_MODE_WRITE 0x0000000000000002\r
-#define EFI_FILE_MODE_CREATE 0x8000000000000000\r
+#define EFI_FILE_MODE_CREATE 0x8000000000000000ULL\r
\r
//\r
// File attributes\r
\r
#define _EFI_INT_SIZE_OF(n) ((sizeof (n) + sizeof (UINTN) - 1) &~(sizeof (UINTN) - 1))\r
\r
+#if defined(__GNUC__)\r
+//\r
+// Use GCC built-in macros for variable argument lists.\r
+//\r
+\r
+///\r
+/// Variable used to traverse the list of arguments. This type can vary by \r
+/// implementation and could be an array or structure. \r
+///\r
+typedef __builtin_va_list VA_LIST;\r
+\r
+#define VA_START(Marker, Parameter) __builtin_va_start (Marker, Parameter)\r
+\r
+#define VA_ARG(Marker, TYPE) ((sizeof (TYPE) < sizeof (UINTN)) ? (TYPE)(__builtin_va_arg (Marker, UINTN)) : (TYPE)(__builtin_va_arg (Marker, TYPE)))\r
+\r
+#define VA_END(Marker) __builtin_va_end (Marker)\r
+\r
+#else\r
+\r
//\r
// Also support coding convention rules for var arg macros\r
//\r
#define VA_ARG(ap, t) (*(t *) ((ap += _EFI_INT_SIZE_OF (t)) - _EFI_INT_SIZE_OF (t)))\r
#define VA_END(ap) (ap = (VA_LIST) 0)\r
\r
+#endif\r
+\r
+\r
#endif\r
\r
#endif\r
//\r
// Make sure we are useing the correct packing rules per EFI specification\r
//\r
+#ifndef __GNUC__\r
#pragma pack()\r
+#endif\r
\r
#if __INTEL_COMPILER\r
//\r
//\r
// Make sure we are useing the correct packing rules per EFI specification\r
//\r
+#ifndef __GNUC__\r
#pragma pack()\r
+#endif\r
\r
#if __INTEL_COMPILER\r
//\r
[sources.common] \r
\r
[sources.ia32]\r
- Ia32\memcpyRep1.asm\r
- Ia32\memsetRep4.asm\r
-# Ia32\memcpy.asm\r
-# Ia32\memset.asm\r
+ Ia32/memcpyRep1.asm | MSFT\r
+ Ia32/memcpyRep1.asm | INTEL\r
+ Ia32/memsetRep4.asm | MSFT\r
+ Ia32/memsetRep4.asm | INTEL\r
+ memcpy.c | GCC\r
+ memset.c | GCC\r
\r
[sources.x64] \r
- x64\memcpyRep1.asm\r
- x64\memsetRep4.asm\r
-# x64\memcpy.asm\r
-# x64\memset.asm\r
+ x64/memcpyRep1.asm | MSFT\r
+ x64/memcpyRep1.asm | INTEL \r
+ x64/memsetRep4.asm | MSFT\r
+ x64/memsetRep4.asm | INTEL\r
+ memcpy.c | GCC\r
+ memset.c | GCC\r
\r
[sources.Ipf] \r
memcpy.c\r
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# Implementation of CpuBreakpoint() on x86_64\r
-#\r
-#------------------------------------------------------------------------------\r
-#include <EdkIIGlueBase.h>\r
-\r
-.global ASM_PFX(CpuBreakpoint)\r
-ASM_PFX(CpuBreakpoint):\r
- int $0x3\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# CpuBreakpoint.S
+#
+# Abstract:
+#
+# Implementation of CpuBreakpoint() on x86_64
+#
+#------------------------------------------------------------------------------
+#include <EdkIIGlueBase.h>
+
+.globl ASM_PFX(CpuBreakpoint)
+ASM_PFX(CpuBreakpoint):
+ int $0x3
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmCpuid function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\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
-.global ASM_PFX(AsmCpuid)\r
-ASM_PFX(AsmCpuid):\r
- push %rbx\r
- mov %ecx, %eax\r
- push %rax # save Index on stack\r
- push %rdx\r
- cpuid\r
- test %r9, %r9\r
- jz L1\r
- mov %ecx, (%r9)\r
-L1:\r
- pop %rcx\r
- jrcxz L2\r
- mov %eax, (%rcx)\r
-L2:\r
- mov %r8, %rcx\r
- jrcxz L3\r
- mov %ebx, (%rcx)\r
-L3:\r
- mov 0x38(%rsp), %rcx\r
- jrcxz L4\r
- mov %edx, (%rcx)\r
-L4:\r
- pop %rax # restore Index to rax as return value\r
- pop %rbx\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# CpuId.S
+#
+# Abstract:
+#
+# AsmCpuid function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# AsmCpuid (
+# IN UINT32 RegisterInEax,
+# OUT UINT32 *RegisterOutEax OPTIONAL,
+# OUT UINT32 *RegisterOutEbx OPTIONAL,
+# OUT UINT32 *RegisterOutEcx OPTIONAL,
+# OUT UINT32 *RegisterOutEdx OPTIONAL
+# )
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmCpuid)
+ASM_PFX(AsmCpuid):
+ push %rbx
+ mov %ecx, %eax
+ push %rax # save Index on stack
+ push %rdx
+ cpuid
+ test %r9, %r9
+ jz L1
+ mov %ecx, (%r9)
+L1:
+ pop %rcx
+ jrcxz L2
+ mov %eax, (%rcx)
+L2:
+ mov %r8, %rcx
+ jrcxz L3
+ mov %ebx, (%rcx)
+L3:
+ mov 0x38(%rsp), %rcx
+ jrcxz L4
+ mov %edx, (%rcx)
+L4:
+ pop %rax # restore Index to rax as return value
+ pop %rbx
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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
-#include <EdkIIGlueBase.h>\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
-.global ASM_PFX(AsmCpuidEx)\r
-ASM_PFX(AsmCpuidEx):\r
- push %rbx\r
- movl %ecx,%eax\r
- movl %edx,%ecx\r
- push %rax\r
- cpuid\r
- mov 0x38(%rsp), %r10\r
- test %r10, %r10\r
- jz L1\r
- mov %ecx,(%r10)\r
-L1: \r
- mov %r8, %rcx\r
- jrcxz L2\r
- movl %eax,(%rcx)\r
-L2: \r
- mov %r9, %rcx\r
- jrcxz L3\r
- mov %ebx, (%rcx)\r
-L3: \r
- mov 0x40(%rsp), %rcx\r
- jrcxz L4\r
- mov %edx, (%rcx)\r
-L4: \r
- pop %rax\r
- pop %rbx\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# CpuIdEx.Asm
+#
+# Abstract:
+#
+# AsmCpuidEx function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+#include <EdkIIGlueBase.h>
+
+#------------------------------------------------------------------------------
+# UINT32
+# EFIAPI
+# AsmCpuidEx (
+# IN UINT32 RegisterInEax,
+# IN UINT32 RegisterInEcx,
+# OUT UINT32 *RegisterOutEax OPTIONAL,
+# OUT UINT32 *RegisterOutEbx OPTIONAL,
+# OUT UINT32 *RegisterOutEcx OPTIONAL,
+# OUT UINT32 *RegisterOutEdx OPTIONAL
+# )
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmCpuidEx)
+ASM_PFX(AsmCpuidEx):
+ push %rbx
+ movl %ecx,%eax
+ movl %edx,%ecx
+ push %rax
+ cpuid
+ mov 0x38(%rsp), %r10
+ test %r10, %r10
+ jz L1
+ mov %ecx,(%r10)
+L1:
+ mov %r8, %rcx
+ jrcxz L2
+ movl %eax,(%rcx)
+L2:
+ mov %r9, %rcx
+ jrcxz L3
+ mov %ebx, (%rcx)
+L3:
+ mov 0x40(%rsp), %rcx
+ jrcxz L4
+ mov %edx, (%rcx)
+L4:
+ pop %rax
+ pop %rbx
+ ret
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(CpuPause)\r
+.globl ASM_PFX(CpuPause)\r
ASM_PFX(CpuPause):\r
pause\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(CpuSleep)\r
+.globl ASM_PFX(CpuSleep)\r
ASM_PFX(CpuSleep):\r
hlt\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(DisableInterrupts)\r
+.globl ASM_PFX(DisableInterrupts)\r
ASM_PFX(DisableInterrupts):\r
cli\r
ret\r
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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
-# DisablePaging64.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmDisablePaging64 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
- \r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86DisablePaging64 (\r
-# IN UINT16 Cs, %rdi\r
-# IN UINT64 EntryPoint, %rsi\r
-# IN UINT64 Context1, OPTIONAL %rdx\r
-# IN UINT32 Context2, OPTIONAL %rcx\r
-# IN UINT64 NewStack %r8\r
-# );\r
-#------------------------------------------------------------------------------\r
-\r
-.global ASM_PFX(InternalX86DisablePaging64)\r
-ASM_PFX(InternalX86DisablePaging64):\r
- cli \r
- shl $0x20,%rcx\r
- lea (%rip), %eax\r
- mov %eax,%ecx\r
- push %rcx\r
- mov %edx,%ebx\r
- mov %r8d,%esi\r
- mov %r9d,%edi\r
- mov 0x28(%rsp),%eax\r
- lret \r
-L1:\r
- mov %eax,%esp\r
- mov %cr0,%rax\r
- btr $0x1f,%eax\r
- mov %rax,%cr0\r
- mov $0xc0000080,%ecx\r
- rdmsr \r
- and $0xfe,%ah\r
- wrmsr \r
- mov %cr4,%rax\r
- and $0xdf,%al\r
- mov %rax,%cr4\r
- push %rdi\r
- push %rsi\r
- callq *%rbx\r
- jmp .\r
-\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# DisablePaging64.S
+#
+# Abstract:
+#
+# AsmDisablePaging64 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# InternalX86DisablePaging64 (
+# IN UINT16 Cs, %rdi
+# IN UINT64 EntryPoint, %rsi
+# IN UINT64 Context1, OPTIONAL %rdx
+# IN UINT32 Context2, OPTIONAL %rcx
+# IN UINT64 NewStack %r8
+# );
+#------------------------------------------------------------------------------
+
+.globl ASM_PFX(InternalX86DisablePaging64)
+ASM_PFX(InternalX86DisablePaging64):
+ cli
+ shl $0x20,%rcx
+ lea (%rip), %eax
+ mov %eax,%ecx
+ push %rcx
+ mov %edx,%ebx
+ mov %r8d,%esi
+ mov %r9d,%edi
+ mov 0x28(%rsp),%eax
+ lret
+L1:
+ mov %eax,%esp
+ mov %cr0,%rax
+ btr $0x1f,%eax
+ mov %rax,%cr0
+ mov $0xc0000080,%ecx
+ rdmsr
+ and $0xfe,%ah
+ wrmsr
+ mov %cr4,%rax
+ and $0xdf,%al
+ mov %rax,%cr4
+ push %rdi
+ push %rsi
+ callq *%rbx
+ jmp .
+
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# EnableDisableInterrupts function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# EnableDisableInterrupts (\r
-# VOID\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(EnableDisableInterrupts)\r
-ASM_PFX(EnableDisableInterrupts):\r
- sti\r
- cli\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006 - 2009, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# EnableDisableInterrupts.S
+#
+# Abstract:
+#
+# EnableDisableInterrupts function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# EnableDisableInterrupts (
+# VOID
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(EnableDisableInterrupts)
+ASM_PFX(EnableDisableInterrupts):
+ sti
+ cli
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# EnableInterrupts function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# EnableInterrupts (\r
-# VOID\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(EnableInterrupts)\r
-ASM_PFX(EnableInterrupts):\r
- sti\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# EnableInterrupts.S
+#
+# Abstract:
+#
+# EnableInterrupts function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# EnableInterrupts (
+# VOID
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(EnableInterrupts)
+ASM_PFX(EnableInterrupts):
+ sti
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmEnablePaging64 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86EnablePaging64 (\r
-# IN UINT16 Cs, %rdi\r
-# IN UINT64 EntryPoint, %rsi\r
-# IN UINT64 Context1, OPTIONAL %rdx\r
-# IN UINT64 Context2, OPTIONAL %rcx\r
-# IN UINT64 NewStack %r8\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(InternalX86EnablePaging64)\r
-ASM_PFX(InternalX86EnablePaging64):\r
- cli \r
- pop %rax\r
- callq Base\r
-Base:\r
- addl $(L1-Base),(%rsp)\r
- mov %cr4,%rax\r
- or $0x20,%al\r
- mov %rax,%cr4\r
- mov $0xc0000080,%ecx\r
- rdmsr \r
- or $0x1,%ah\r
- wrmsr \r
- mov %cr0,%rax\r
- bts $0x1f,%eax\r
- mov %rax,%cr0\r
- lret \r
-L1:\r
- addr32 mov (%esp),%rbx\r
- addr32 mov 0x8(%esp),%rcx\r
- addr32 mov 0x10(%esp),%rdx\r
- addr32 mov 0x18(%esp),%rsp\r
- add $-0x20,%rsp\r
- callq *%rbx\r
- jmp .\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# EnablePaging64.S
+#
+# Abstract:
+#
+# AsmEnablePaging64 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# InternalX86EnablePaging64 (
+# IN UINT16 Cs, %rdi
+# IN UINT64 EntryPoint, %rsi
+# IN UINT64 Context1, OPTIONAL %rdx
+# IN UINT64 Context2, OPTIONAL %rcx
+# IN UINT64 NewStack %r8
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(InternalX86EnablePaging64)
+ASM_PFX(InternalX86EnablePaging64):
+ cli
+ pop %rax
+ callq Base
+Base:
+ addl $(L1-Base),(%rsp)
+ mov %cr4,%rax
+ or $0x20,%al
+ mov %rax,%cr4
+ mov $0xc0000080,%ecx
+ rdmsr
+ or $0x1,%ah
+ wrmsr
+ mov %cr0,%rax
+ bts $0x1f,%eax
+ mov %rax,%cr0
+ lret
+L1:
+ addr32 mov (%esp),%rbx
+ addr32 mov 0x8(%esp),%rcx
+ addr32 mov 0x10(%esp),%rdx
+ addr32 mov 0x18(%esp),%rsp
+ add $-0x20,%rsp
+ callq *%rbx
+ jmp .
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmFlushCacheLine function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID *\r
-# EFIAPI \r
-# AsmFlushCacheLine (\r
-# IN VOID *LinearAddress\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmFlushCacheLine)\r
-ASM_PFX(AsmFlushCacheLine):\r
- clflush (%rdi)\r
- mov %rdi, %rax\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# FlushCacheLine.S
+#
+# Abstract:
+#
+# AsmFlushCacheLine function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID *
+# EFIAPI
+# AsmFlushCacheLine (
+# IN VOID *LinearAddress
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmFlushCacheLine)
+ASM_PFX(AsmFlushCacheLine):
+ clflush (%rdi)
+ mov %rdi, %rax
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmFxRestore function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86FxRestore (\r
-# IN CONST IA32_FX_BUFFER *Buffer\r
-# )#\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(InternalX86FxRestore)\r
-ASM_PFX(InternalX86FxRestore):\r
- fxrstor (%rcx)\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# FxRestore.S
+#
+# Abstract:
+#
+# AsmFxRestore function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# InternalX86FxRestore (
+# IN CONST IA32_FX_BUFFER *Buffer
+# )#
+#------------------------------------------------------------------------------
+.globl ASM_PFX(InternalX86FxRestore)
+ASM_PFX(InternalX86FxRestore):
+ fxrstor (%rcx)
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmFxSave function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86FxSave (\r
-# OUT IA32_FX_BUFFER *Buffer\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(InternalX86FxSave)\r
-ASM_PFX(InternalX86FxSave):\r
- fxsave (%rcx)\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# FxSave.S
+#
+# Abstract:
+#
+# AsmFxSave function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# InternalX86FxSave (
+# OUT IA32_FX_BUFFER *Buffer
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(InternalX86FxSave)
+ASM_PFX(InternalX86FxSave):
+ fxsave (%rcx)
+ ret
# IN UINT32 ExchangeValue\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(InternalSyncCompareExchange32)\r
+.globl ASM_PFX(InternalSyncCompareExchange32)\r
ASM_PFX(InternalSyncCompareExchange32):\r
mov %edx, %eax\r
lock cmpxchg %r8d, (%rcx)\r
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation\r
-# All rights reserved. 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
-# InterlockedCompareExchange64.S\r
-#\r
-# Abstract:\r
-#\r
-# InterlockedCompareExchange64 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# InterlockedCompareExchange64 (\r
-# IN UINT64 *Value,\r
-# IN UINT64 CompareValue,\r
-# IN UINT64 ExchangeValue\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(InternalSyncCompareExchange64)\r
-ASM_PFX(InternalSyncCompareExchange64):\r
- mov %rsi, %rax\r
- lock cmpxchg %rdx,(%rdi)\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006 - 2009, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# InterlockedCompareExchange64.S
+#
+# Abstract:
+#
+# InterlockedCompareExchange64 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# UINT64
+# EFIAPI
+# InterlockedCompareExchange64 (
+# IN UINT64 *Value,
+# IN UINT64 CompareValue,
+# IN UINT64 ExchangeValue
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(InternalSyncCompareExchange64)
+ASM_PFX(InternalSyncCompareExchange64):
+ mov %rsi, %rax
+ lock cmpxchg %rdx,(%rdi)
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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
-# InterlockedDecrement.S\r
-#\r
-# Abstract:\r
-#\r
-# InterlockedDecrement function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# UINT32\r
-# EFIAPI\r
-# InterlockedDecrement (\r
-# IN UINT32 *Value\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(InternalSyncDecrement)\r
-ASM_PFX(InternalSyncDecrement):\r
- lock decl (%rcx)\r
- mov (%rcx), %eax\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# InterlockedDecrement.S
+#
+# Abstract:
+#
+# InterlockedDecrement function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# UINT32
+# EFIAPI
+# InterlockedDecrement (
+# IN UINT32 *Value
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(InternalSyncDecrement)
+ASM_PFX(InternalSyncDecrement):
+ lock decl (%rcx)
+ mov (%rcx), %eax
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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
-# InterlockedIncrement.S\r
-#\r
-# Abstract:\r
-#\r
-# InterlockedIncrement function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# UINT32\r
-# EFIAPI\r
-# InterlockedIncrement (\r
-# IN UINT32 *Value\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(InternalSyncIncrement)\r
-ASM_PFX(InternalSyncIncrement):\r
- lock incl (%rcx)\r
- mov (%rcx), %eax\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# InterlockedIncrement.S
+#
+# Abstract:
+#
+# InterlockedIncrement function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# UINT32
+# EFIAPI
+# InterlockedIncrement (
+# IN UINT32 *Value
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(InternalSyncIncrement)
+ASM_PFX(InternalSyncIncrement):
+ lock incl (%rcx)
+ mov (%rcx), %eax
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmInvd function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmInvd (\r
-# VOID\r
-# )#\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmInvd)\r
-ASM_PFX(AsmInvd):\r
- invd\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# Invd.S
+#
+# Abstract:
+#
+# AsmInvd function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# AsmInvd (
+# VOID
+# )#
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmInvd)
+ASM_PFX(AsmInvd):
+ invd
+ ret
# IN UINTN Value\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(InternalLongJump)\r
+.globl ASM_PFX(InternalLongJump)\r
ASM_PFX(InternalLongJump):\r
mov (%rcx), %rbx\r
mov 0x8(%rcx), %rsp\r
# IN UINTN Edx\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmMonitor)\r
+.globl ASM_PFX(AsmMonitor)\r
ASM_PFX(AsmMonitor):\r
mov %ecx,%eax\r
mov %edx,%ecx\r
# IN UINTN Ecx\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmMwait)\r
+.globl ASM_PFX(AsmMwait)\r
ASM_PFX(AsmMwait):\r
mov %ecx,%eax\r
mov %edx,%ecx\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadCr0)\r
+.globl ASM_PFX(AsmReadCr0)\r
ASM_PFX(AsmReadCr0):\r
mov %cr0, %rax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadCr2)\r
+.globl ASM_PFX(AsmReadCr2)\r
ASM_PFX(AsmReadCr2):\r
mov %cr2, %rax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadCr3)\r
+.globl ASM_PFX(AsmReadCr3)\r
ASM_PFX(AsmReadCr3):\r
mov %cr3, %rax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadCr4)\r
+.globl ASM_PFX(AsmReadCr4)\r
ASM_PFX(AsmReadCr4):\r
mov %cr4, %rax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadCs)\r
+.globl ASM_PFX(AsmReadCs)\r
ASM_PFX(AsmReadCs):\r
mov %cs, %eax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadDr0)\r
+.globl ASM_PFX(AsmReadDr0)\r
ASM_PFX(AsmReadDr0):\r
mov %dr0, %rax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadDr1)\r
+.globl ASM_PFX(AsmReadDr1)\r
ASM_PFX(AsmReadDr1):\r
mov %dr1, %rax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadDr2)\r
+.globl ASM_PFX(AsmReadDr2)\r
ASM_PFX(AsmReadDr2):\r
mov %dr2, %rax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadDr3)\r
+.globl ASM_PFX(AsmReadDr3)\r
ASM_PFX(AsmReadDr3):\r
mov %dr3, %rax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadDr4)\r
+.globl ASM_PFX(AsmReadDr4)\r
ASM_PFX(AsmReadDr4):\r
#DB 0fh, 21h, 0e0h\r
mov %dr4, %rax\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadDr5)\r
+.globl ASM_PFX(AsmReadDr5)\r
ASM_PFX(AsmReadDr5):\r
mov %dr5, %rax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadDr6)\r
+.globl ASM_PFX(AsmReadDr6)\r
ASM_PFX(AsmReadDr6):\r
mov %dr6, %rax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadDr7)\r
+.globl ASM_PFX(AsmReadDr7)\r
ASM_PFX(AsmReadDr7):\r
mov %dr7, %rax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadDs)\r
+.globl ASM_PFX(AsmReadDs)\r
ASM_PFX(AsmReadDs):\r
movl %ds, %eax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadEflags)\r
+.globl ASM_PFX(AsmReadEflags)\r
ASM_PFX(AsmReadEflags):\r
pushfq\r
pop %rax\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadEs)\r
+.globl ASM_PFX(AsmReadEs)\r
ASM_PFX(AsmReadEs):\r
mov %es, %eax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadFs)\r
+.globl ASM_PFX(AsmReadFs)\r
ASM_PFX(AsmReadFs):\r
mov %fs, %eax\r
ret\r
# OUT IA32_DESCRIPTOR *Gdtr\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(InternalX86ReadGdtr)\r
+.globl ASM_PFX(InternalX86ReadGdtr)\r
ASM_PFX(InternalX86ReadGdtr):\r
sgdt (%rcx)\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadGs)\r
+.globl ASM_PFX(AsmReadGs)\r
ASM_PFX(AsmReadGs):\r
mov %gs, %eax\r
ret\r
# OUT IA32_DESCRIPTOR *Idtr\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(InternalX86ReadIdtr)\r
+.globl ASM_PFX(InternalX86ReadIdtr)\r
ASM_PFX(InternalX86ReadIdtr):\r
sidt (%rcx)\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadLdtr)\r
+.globl ASM_PFX(AsmReadLdtr)\r
ASM_PFX(AsmReadLdtr):\r
sldt %eax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadMm0)\r
+.globl ASM_PFX(AsmReadMm0)\r
ASM_PFX(AsmReadMm0):\r
#DB 48h, 0fh, 7eh, 0c0h\r
movd %mm0, %rax\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadMm1)\r
+.globl ASM_PFX(AsmReadMm1)\r
ASM_PFX(AsmReadMm1):\r
#DB 48h, 0fh, 7eh, 0c8h\r
movd %mm1, %rax\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadMm2)\r
+.globl ASM_PFX(AsmReadMm2)\r
ASM_PFX(AsmReadMm2):\r
#DB 48h, 0fh, 7eh, 0d0h\r
movd %mm2, %rax\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadMm3)\r
+.globl ASM_PFX(AsmReadMm3)\r
ASM_PFX(AsmReadMm3):\r
#DB 48h, 0fh, 7eh, 0d8h\r
movd %mm3, %rax\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadMm4)\r
+.globl ASM_PFX(AsmReadMm4)\r
ASM_PFX(AsmReadMm4):\r
#DB 48h, 0fh, 7eh, 0e0h\r
movd %mm4, %rax\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadMm5)\r
+.globl ASM_PFX(AsmReadMm5)\r
ASM_PFX(AsmReadMm5):\r
#DB 48h, 0fh, 7eh, 0e8h\r
movd %mm5, %rax\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadMm6)\r
+.globl ASM_PFX(AsmReadMm6)\r
ASM_PFX(AsmReadMm6):\r
#DB 48h, 0fh, 7eh, 0f0h\r
movd %mm6, %rax\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadMm7)\r
+.globl ASM_PFX(AsmReadMm7)\r
ASM_PFX(AsmReadMm7):\r
#DB 48h, 0fh, 7eh, 0f8h\r
movd %mm7, %rax\r
# IN UINT32 Index\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadMsr64)\r
+.globl ASM_PFX(AsmReadMsr64)\r
ASM_PFX(AsmReadMsr64):\r
rdmsr # edx & eax are zero extended\r
shl $0x20, %rdx\r
# IN UINT32 PmcIndex\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadPmc)\r
+.globl ASM_PFX(AsmReadPmc)\r
ASM_PFX(AsmReadPmc):\r
rdpmc\r
shl $0x20, %rdx\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadSs);\r
+.globl ASM_PFX(AsmReadSs);\r
ASM_PFX(AsmReadSs):\r
movl %ss, %eax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadTr)\r
+.globl ASM_PFX(AsmReadTr)\r
ASM_PFX(AsmReadTr): \r
str %eax\r
ret\r
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmReadTsc)\r
+.globl ASM_PFX(AsmReadTsc)\r
ASM_PFX(AsmReadTsc):\r
rdtsc\r
shl $0x20, %rdx\r
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# Implementation of SetJump() on x86_64\r
-#\r
-#------------------------------------------------------------------------------\r
-#include <EdkIIGlueBase.h>\r
-.extern InternalAssertJumpBuffer;\r
-.global ASM_PFX(SetJump)\r
-ASM_PFX(SetJump):\r
- push %rcx\r
- add $0xffffffffffffffe0,%rsp\r
- call _InternalAssertJumpBuffer\r
- add $0x20,%rsp\r
- pop %rcx\r
- pop %rdx\r
- mov %rbx,(%rcx)\r
- mov %rsp,0x8(%rcx)\r
- mov %rbp,0x10(%rcx)\r
- mov %rdi,0x18(%rcx)\r
- mov %rsi,0x20(%rcx)\r
- mov %r12,0x28(%rcx)\r
- mov %r13,0x30(%rcx)\r
- mov %r14,0x38(%rcx)\r
- mov %r15,0x40(%rcx)\r
- mov %rdx,0x48(%rcx)\r
- xor %rax,%rax\r
- jmpq *%rdx\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# SetJump.S
+#
+# Abstract:
+#
+# Implementation of SetJump() on x86_64
+#
+#------------------------------------------------------------------------------
+#include <EdkIIGlueBase.h>
+.extern InternalAssertJumpBuffer;
+.globl ASM_PFX(SetJump)
+ASM_PFX(SetJump):
+ push %rcx
+ add $0xffffffffffffffe0,%rsp
+ call _InternalAssertJumpBuffer
+ add $0x20,%rsp
+ pop %rcx
+ pop %rdx
+ mov %rbx,(%rcx)
+ mov %rsp,0x8(%rcx)
+ mov %rbp,0x10(%rcx)
+ mov %rdi,0x18(%rcx)
+ mov %rsi,0x20(%rcx)
+ mov %r12,0x28(%rcx)
+ mov %r13,0x30(%rcx)
+ mov %r14,0x38(%rcx)
+ mov %r15,0x40(%rcx)
+ mov %rdx,0x48(%rcx)
+ xor %rax,%rax
+ jmpq *%rdx
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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
-# SwitchStack.S\r
-#\r
-# Abstract:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# Routine Description:\r
-#\r
-# Routine for switching stacks with 1 parameter\r
-#\r
-# Arguments:\r
-#\r
-# (rdi) EntryPoint - Entry point with new stack.\r
-# (rsi) Context1 - Parameter1 for entry point.\r
-# (rdx) Context2 - Parameter2 for entry point.\r
-# (rcx) NewStack - Pointer to new stack.\r
-#\r
-# Returns:\r
-#\r
-# None\r
-#\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(InternalSwitchStack)\r
-ASM_PFX(InternalSwitchStack):\r
- mov %rcx, %rax\r
- mov %rdx, %rcx\r
- mov %r8, %rdx\r
- lea -0x20(%r9), %rsp\r
- call *%rax\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# SwitchStack.S
+#
+# Abstract:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# Routine Description:
+#
+# Routine for switching stacks with 1 parameter
+#
+# Arguments:
+#
+# (rdi) EntryPoint - Entry point with new stack.
+# (rsi) Context1 - Parameter1 for entry point.
+# (rdx) Context2 - Parameter2 for entry point.
+# (rcx) NewStack - Pointer to new stack.
+#
+# Returns:
+#
+# None
+#
+#------------------------------------------------------------------------------
+.globl ASM_PFX(InternalSwitchStack)
+ASM_PFX(InternalSwitchStack):
+ mov %rcx, %rax
+ mov %rdx, %rcx
+ mov %r8, %rdx
+ lea -0x20(%r9), %rsp
+ call *%rax
# VOID\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWbinvd)\r
+.globl ASM_PFX(AsmWbinvd)\r
ASM_PFX(AsmWbinvd):\r
wbinvd\r
ret\r
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteCr0 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteCr0 (\r
-# UINTN Cr0\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteCr0)\r
-ASM_PFX(AsmWriteCr0):\r
- mov %rcx,%cr0\r
- mov %rcx,%rax\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteCr0.S
+#
+# Abstract:
+#
+# AsmWriteCr0 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# UINTN
+# EFIAPI
+# AsmWriteCr0 (
+# UINTN Cr0
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteCr0)
+ASM_PFX(AsmWriteCr0):
+ mov %rcx,%cr0
+ mov %rcx,%rax
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteCr2 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteCr2 (\r
-# UINTN Cr2\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteCr2)\r
-ASM_PFX(AsmWriteCr2):\r
- mov %rcx,%cr2\r
- mov %rcx,%rax\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteCr2.S
+#
+# Abstract:
+#
+# AsmWriteCr2 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# UINTN
+# EFIAPI
+# AsmWriteCr2 (
+# UINTN Cr2
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteCr2)
+ASM_PFX(AsmWriteCr2):
+ mov %rcx,%cr2
+ mov %rcx,%rax
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteCr3 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteCr3 (\r
-# UINTN Cr3\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteCr3)\r
-ASM_PFX(AsmWriteCr3):\r
- mov %rcx,%cr3\r
- mov %rcx,%rax\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteCr3.S
+#
+# Abstract:
+#
+# AsmWriteCr3 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# UINTN
+# EFIAPI
+# AsmWriteCr3 (
+# UINTN Cr3
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteCr3)
+ASM_PFX(AsmWriteCr3):
+ mov %rcx,%cr3
+ mov %rcx,%rax
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteCr4 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteCr4 (\r
-# UINTN Cr4\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteCr4)\r
-ASM_PFX(AsmWriteCr4):\r
- mov %rcx,%cr4\r
- mov %rcx,%rax\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteCr4.S
+#
+# Abstract:
+#
+# AsmWriteCr4 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# UINTN
+# EFIAPI
+# AsmWriteCr4 (
+# UINTN Cr4
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteCr4)
+ASM_PFX(AsmWriteCr4):
+ mov %rcx,%cr4
+ mov %rcx,%rax
+ ret
# UINTN Value\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteDr0)\r
+.globl ASM_PFX(AsmWriteDr0)\r
ASM_PFX(AsmWriteDr0):\r
mov %rcx, %dr0\r
mov %rcx, %rax\r
# UINTN Value\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteDr1)\r
+.globl ASM_PFX(AsmWriteDr1)\r
ASM_PFX(AsmWriteDr1):\r
mov %rcx, %dr1\r
mov %rcx, %rax\r
# UINTN Value\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteDr2)\r
+.globl ASM_PFX(AsmWriteDr2)\r
ASM_PFX(AsmWriteDr2):\r
mov %rcx, %dr2\r
mov %rcx, %rax\r
# UINTN Value\r
# );\r
#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteDr3)\r
+.globl ASM_PFX(AsmWriteDr3)\r
ASM_PFX(AsmWriteDr3):\r
mov %rcx, %dr3\r
mov %rcx, %rax\r
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteDr4 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr4 (\r
-# IN UINTN Value\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteDr4)\r
-ASM_PFX(AsmWriteDr4):\r
- mov %rcx, %dr4\r
- mov %rcx, %rax\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteDr4.S
+#
+# Abstract:
+#
+# AsmWriteDr4 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# UINTN
+# EFIAPI
+# AsmWriteDr4 (
+# IN UINTN Value
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteDr4)
+ASM_PFX(AsmWriteDr4):
+ mov %rcx, %dr4
+ mov %rcx, %rax
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteDr5 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr5 (\r
-# IN UINTN Value\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteDr5)\r
-ASM_PFX(AsmWriteDr5):\r
- mov %rcx, %dr5\r
- mov %rcx, %rax\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteDr5.S
+#
+# Abstract:
+#
+# AsmWriteDr5 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# UINTN
+# EFIAPI
+# AsmWriteDr5 (
+# IN UINTN Value
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteDr5)
+ASM_PFX(AsmWriteDr5):
+ mov %rcx, %dr5
+ mov %rcx, %rax
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteDr6 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr6 (\r
-# IN UINTN Value\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteDr6)\r
-ASM_PFX(AsmWriteDr6):\r
- mov %rcx, %dr6\r
- mov %rcx, %rax\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteDr6.S
+#
+# Abstract:
+#
+# AsmWriteDr6 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# UINTN
+# EFIAPI
+# AsmWriteDr6 (
+# IN UINTN Value
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteDr6)
+ASM_PFX(AsmWriteDr6):
+ mov %rcx, %dr6
+ mov %rcx, %rax
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteDr7 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr7 (\r
-# IN UINTN Value\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteDr7)\r
-ASM_PFX(AsmWriteDr7):\r
- mov %rcx, %dr7\r
- mov %rcx, %rax\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteDr7.S
+#
+# Abstract:
+#
+# AsmWriteDr7 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# UINTN
+# EFIAPI
+# AsmWriteDr7 (
+# IN UINTN Value
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteDr7)
+ASM_PFX(AsmWriteDr7):
+ mov %rcx, %dr7
+ mov %rcx, %rax
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteGdtr function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86WriteGdtr (\r
-# IN CONST IA32_DESCRIPTOR *Idtr\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(InternalX86WriteGdtr)\r
-ASM_PFX(InternalX86WriteGdtr):\r
- lgdt (%rcx)\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteGdtr.S
+#
+# Abstract:
+#
+# AsmWriteGdtr function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# InternalX86WriteGdtr (
+# IN CONST IA32_DESCRIPTOR *Idtr
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(InternalX86WriteGdtr)
+ASM_PFX(InternalX86WriteGdtr):
+ lgdt (%rcx)
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteIdtr function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86WriteIdtr (\r
-# IN CONST IA32_DESCRIPTOR *Idtr\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(InternalX86WriteIdtr)\r
-ASM_PFX(InternalX86WriteIdtr):\r
- lidt (%rcx)\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006 - 2009, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteIdtr.S
+#
+# Abstract:
+#
+# AsmWriteIdtr function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# InternalX86WriteIdtr (
+# IN CONST IA32_DESCRIPTOR *Idtr
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(InternalX86WriteIdtr)
+ASM_PFX(InternalX86WriteIdtr):
+ lidt (%rcx)
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteLdtr function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteLdtr (\r
-# IN UINT16 Ldtr\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteLdtr);\r
-ASM_PFX(AsmWriteLdtr):\r
- lldt %cx\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006 - 2009, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteLdtr.S
+#
+# Abstract:
+#
+# AsmWriteLdtr function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# AsmWriteLdtr (
+# IN UINT16 Ldtr
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteLdtr);
+ASM_PFX(AsmWriteLdtr):
+ lldt %cx
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteMm0 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm0 (\r
-# IN UINT64 Value\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteMm0);\r
-ASM_PFX(AsmWriteMm0):\r
- movd %rcx, %xmm0\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteMm0.S
+#
+# Abstract:
+#
+# AsmWriteMm0 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# AsmWriteMm0 (
+# IN UINT64 Value
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteMm0);
+ASM_PFX(AsmWriteMm0):
+ movd %rcx, %xmm0
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteMm1 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm1 (\r
-# IN UINT64 Value\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteMm1);\r
-ASM_PFX(AsmWriteMm1):\r
- movd %rcx, %mm1\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteMm1.S
+#
+# Abstract:
+#
+# AsmWriteMm1 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# AsmWriteMm1 (
+# IN UINT64 Value
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteMm1);
+ASM_PFX(AsmWriteMm1):
+ movd %rcx, %mm1
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteMm2 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm2 (\r
-# IN UINT64 Value\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteMm2)\r
-ASM_PFX(AsmWriteMm2):\r
- movd %rcx, %mm2\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteMm2.S
+#
+# Abstract:
+#
+# AsmWriteMm2 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# AsmWriteMm2 (
+# IN UINT64 Value
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteMm2)
+ASM_PFX(AsmWriteMm2):
+ movd %rcx, %mm2
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteMm3 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm3 (\r
-# IN UINT64 Value\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteMm3)\r
-ASM_PFX(AsmWriteMm3):\r
- movd %rcx, %mm3\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteMm3.S
+#
+# Abstract:
+#
+# AsmWriteMm3 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# AsmWriteMm3 (
+# IN UINT64 Value
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteMm3)
+ASM_PFX(AsmWriteMm3):
+ movd %rcx, %mm3
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteMm4 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm4 (\r
-# IN UINT64 Value\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteMm4)\r
-ASM_PFX(AsmWriteMm4):\r
- movd %rcx, %mm4\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteMm4.S
+#
+# Abstract:
+#
+# AsmWriteMm4 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# AsmWriteMm4 (
+# IN UINT64 Value
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteMm4)
+ASM_PFX(AsmWriteMm4):
+ movd %rcx, %mm4
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteMm5 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm5 (\r
-# IN UINT64 Value\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteMm5)\r
-ASM_PFX(AsmWriteMm5):\r
- movd %rcx, %mm5\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteMm5.S
+#
+# Abstract:
+#
+# AsmWriteMm5 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# AsmWriteMm5 (
+# IN UINT64 Value
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteMm5)
+ASM_PFX(AsmWriteMm5):
+ movd %rcx, %mm5
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteMm6 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm6 (\r
-# IN UINT64 Value\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteMm6)\r
-ASM_PFX(AsmWriteMm6):\r
- movd %rcx, %mm6\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteMm6.S
+#
+# Abstract:
+#
+# AsmWriteMm6 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# AsmWriteMm6 (
+# IN UINT64 Value
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteMm6)
+ASM_PFX(AsmWriteMm6):
+ movd %rcx, %mm6
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteMm7 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm7 (\r
-# IN UINT64 Value\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteMm7)\r
-ASM_PFX(AsmWriteMm7):\r
- movd %rcx, %mm7\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteMm7.S
+#
+# Abstract:
+#
+# AsmWriteMm7 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# VOID
+# EFIAPI
+# AsmWriteMm7 (
+# IN UINT64 Value
+# );
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteMm7)
+ASM_PFX(AsmWriteMm7):
+ movd %rcx, %mm7
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation\r
-# All rights reserved. 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.S\r
-#\r
-# Abstract:\r
-#\r
-# AsmWriteMsr64 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#include <EdkIIGlueBase.h>\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmWriteMsr64 (\r
-# IN UINT32 Index,\r
-# IN UINT64 Value\r
-# );\r
-# TODO:\r
-#------------------------------------------------------------------------------\r
-.global ASM_PFX(AsmWriteMsr64)\r
-ASM_PFX(AsmWriteMsr64):\r
- mov %rdx, %rax\r
- shr $0x20, %rdx\r
- wrmsr\r
- ret\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006 - 2009, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# WriteMsr64.S
+#
+# Abstract:
+#
+# AsmWriteMsr64 function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+#include <EdkIIGlueBase.h>
+#------------------------------------------------------------------------------
+# UINT64
+# EFIAPI
+# AsmWriteMsr64 (
+# IN UINT32 Index,
+# IN UINT64 Value
+# );
+# TODO:
+#------------------------------------------------------------------------------
+.globl ASM_PFX(AsmWriteMsr64)
+ASM_PFX(AsmWriteMsr64):
+ mov %rdx, %rax
+ shr $0x20, %rdx
+ wrmsr
+ ret
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2008, Intel Corporation\r
-# All rights reserved. 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
-# EfiCopyMemRep1.S\r
-#\r
-# Abstract:\r
-#\r
-# CopyMem function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-#include <EfiBind.h>\r
-\r
- .code: \r
-\r
-.global ASM_PFX(EfiCommonLibCopyMem)\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EfiCommonLibCopyMem (\r
-# OUT VOID *Destination,\r
-# IN VOID *Source,\r
-# IN UINTN Count\r
-# );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(EfiCommonLibCopyMem):\r
- push %rsi\r
- push %rdi\r
- cmp %rcx,%rdx\r
- je CopyMemDone\r
- cmp $0x0,%r8\r
- je CopyMemDone\r
- mov %rdx,%rsi\r
- mov %rcx,%rdi\r
- lea -1(%r8,%rsi,1),%r9\r
- cmp %rdi,%rsi\r
- jae CopyBytes\r
- cmp %rdi,%r9\r
- jb CopyBytes\r
- mov %r9,%rsi\r
- lea -1(%r8,%rdi,1),%rdi\r
- std \r
-\r
-CopyBytes:\r
- mov %r8,%rcx\r
- rep movsb %ds:(%rsi),%es:(%rdi)\r
- cld \r
-\r
-CopyMemDone:\r
- pop %rdi\r
- pop %rsi\r
- retq \r
-\r
-\r
-\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2008, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# EfiCopyMemRep1.S
+#
+# Abstract:
+#
+# CopyMem function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+#include <EfiBind.h>
+
+ .code:
+
+.globl ASM_PFX(EfiCommonLibCopyMem)
+
+#------------------------------------------------------------------------------
+# VOID
+# EfiCommonLibCopyMem (
+# OUT VOID *Destination,
+# IN VOID *Source,
+# IN UINTN Count
+# );
+#------------------------------------------------------------------------------
+ASM_PFX(EfiCommonLibCopyMem):
+ push %rsi
+ push %rdi
+ cmp %rcx,%rdx
+ je CopyMemDone
+ cmp $0x0,%r8
+ je CopyMemDone
+ mov %rdx,%rsi
+ mov %rcx,%rdi
+ lea -1(%r8,%rsi,1),%r9
+ cmp %rdi,%rsi
+ jae CopyBytes
+ cmp %rdi,%r9
+ jb CopyBytes
+ mov %r9,%rsi
+ lea -1(%r8,%rdi,1),%rdi
+ std
+
+CopyBytes:
+ mov %r8,%rcx
+ rep movsb %ds:(%rsi),%es:(%rdi)
+ cld
+
+CopyMemDone:
+ pop %rdi
+ pop %rsi
+ retq
+
+
+
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2008, Intel Corporation\r
-# All rights reserved. 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
-# EfiSetMemRep4.S\r
-#\r
-# Abstract:\r
-#\r
-# SetMem function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-#include <EfiBind.h>\r
-\r
- .code: \r
-\r
-.global ASM_PFX(EfiCommonLibCopyMem)\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EfiCommonLibSetMem (\r
-# OUT VOID *Buffer,\r
-# IN UINTN Size,\r
-# IN UINT8 Value\r
-# );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(EfiCommonLibSetMem):\r
- push %rdi\r
- cmp $0x0,%rdx\r
- je SetDone\r
- mov %rcx,%rdi\r
- mov %r8b,%al\r
- mov %al,%ah\r
- shrd $0x10,%eax,%ecx\r
- shld $0x10,%ecx,%eax\r
- mov %rdx,%rcx\r
- shr $0x2,%rcx\r
- rep stos %eax,%es:(%rdi)\r
- mov %rdx,%rcx\r
- and $0x3,%rcx\r
- rep stos %al,%es:(%rdi)\r
-SetDone:\r
- pop %rdi\r
- retq \r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2008, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# EfiSetMemRep4.S
+#
+# Abstract:
+#
+# SetMem function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+#include <EfiBind.h>
+
+ .code:
+
+.globl ASM_PFX(EfiCommonLibCopyMem)
+
+#------------------------------------------------------------------------------
+# VOID
+# EfiCommonLibSetMem (
+# OUT VOID *Buffer,
+# IN UINTN Size,
+# IN UINT8 Value
+# );
+#------------------------------------------------------------------------------
+ASM_PFX(EfiCommonLibSetMem):
+ push %rdi
+ cmp $0x0,%rdx
+ je SetDone
+ mov %rcx,%rdi
+ mov %r8b,%al
+ mov %al,%ah
+ shrd $0x10,%eax,%ecx
+ shld $0x10,%ecx,%eax
+ mov %rdx,%rcx
+ shr $0x2,%rcx
+ rep stos %eax,%es:(%rdi)
+ mov %rdx,%rcx
+ and $0x3,%rcx
+ rep stos %al,%es:(%rdi)
+SetDone:
+ pop %rdi
+ retq
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2008, Intel Corporation\r
-# All rights reserved. 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
-# EfiZeroMemRep4.S\r
-#\r
-# Abstract:\r
-#\r
-# ZeroMem function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-#include <EfiBind.h>\r
-\r
- .code: \r
-\r
-.global ASM_PFX(EfiCommonLibZeroMem)\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EfiCommonLibZeroMem (\r
-# IN VOID *Buffer,\r
-# IN UINTN Size\r
-# );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(EfiCommonLibZeroMem):\r
- push %rdi\r
- xor %rax,%rax\r
- mov %rcx,%rdi\r
- mov %rdx,%rcx\r
- shr $0x2,%rcx\r
- and $0x3,%rdx\r
- rep stos %eax,%es:(%rdi)\r
- mov %rdx,%rcx\r
- rep stos %al,%es:(%rdi)\r
- pop %rdi\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2008, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# EfiZeroMemRep4.S
+#
+# Abstract:
+#
+# ZeroMem function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+#include <EfiBind.h>
+
+ .code:
+
+.globl ASM_PFX(EfiCommonLibZeroMem)
+#------------------------------------------------------------------------------
+# VOID
+# EfiCommonLibZeroMem (
+# IN VOID *Buffer,
+# IN UINTN Size
+# );
+#------------------------------------------------------------------------------
+ASM_PFX(EfiCommonLibZeroMem):
+ push %rdi
+ xor %rax,%rax
+ mov %rcx,%rdi
+ mov %rdx,%rcx
+ shr $0x2,%rcx
+ and $0x3,%rdx
+ rep stos %eax,%es:(%rdi)
+ mov %rdx,%rcx
+ rep stos %al,%es:(%rdi)
+ pop %rdi
retq
\ No newline at end of file
-#\r
-# Copyright (c) 2004, Intel Corporation \r
-# All rights reserved. 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
-# ProcessorAsms.Asm\r
-#\r
-#\r
-#\r
-#include "EfiBind.h"\r
-#------------------------------------------------------------------------------\r
-\r
- .686P: \r
- .MMX: \r
- #.MODEL SMALL\r
- .CODE: \r
-#------------------------------------------------------------------------------\r
- \r
-.globl ASM_PFX(TransferControlSetJump) \r
-.globl ASM_PFX(TransferControlLongJump)\r
-.globl ASM_PFX(SwitchStacks)\r
-.globl ASM_PFX(SwitchIplStacks)\r
-\r
-.equ EFI_SUCCESS, 0\r
-.equ EFI_WARN_RETURN_FROM_LONG_JUMP, 5\r
-\r
-#\r
-# typedef struct {\r
-# UINT32 ebx;\r
-# UINT32 esi;\r
-# UINT32 edi;\r
-# UINT32 ebp;\r
-# UINT32 esp;\r
-# UINT32 eip;\r
-#} EFI_JUMP_BUFFER;\r
-#\r
-\r
-#typedef \r
-#EFI_STATUS\r
-#(EFIAPI *EFI_PEI_TRANSFER_CONTROL_SET_JUMP) (\r
-# IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This,\r
-# OUT EFI_JUMP_BUFFER *Context\r
-# );\r
-#\r
-#Routine Description:\r
-#\r
-# This routine implements the IA32 variant of the SetJump call. Its\r
-# responsibility is to store system state information for a possible\r
-# subsequent LongJump.\r
-#\r
-#Arguments:\r
-#\r
-# Pointer to CPU context save buffer.\r
-#\r
-#Returns:\r
-#\r
-# EFI_SUCCESS\r
-#\r
-ASM_PFX(TransferControlSetJump):\r
- push %ebp\r
- mov %esp,%ebp\r
- mov 0x8(%ebp),%eax\r
- mov 0xc(%ebp),%ecx\r
- mov %ebx,(%ecx)\r
- mov %esi,0x4(%ecx)\r
- mov %edi,0x8(%ecx)\r
- mov 0x0(%ebp),%eax\r
- mov %eax,0xc(%ecx)\r
- lea 0x4(%ebp),%eax\r
- mov %eax,0x10(%ecx)\r
- mov 0x4(%ebp),%eax\r
- mov %eax,0x14(%ecx)\r
- mov $0x0,%eax\r
- leave \r
- ret \r
-\r
-#typedef \r
-#EFI_STATUS\r
-#(EFIAPI *EFI_PEI_TRANSFER_CONTROL_LONG_JUMP) (\r
-# IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This,\r
-# IN EFI_JUMP_BUFFER *Context\r
-# );\r
-#\r
-# Routine Description:\r
-# \r
-# This routine implements the IA32 variant of the LongJump call. Its\r
-# responsibility is restore the system state to the Context Buffer and\r
-# pass control back.\r
-#\r
-# Arguments:\r
-# \r
-# Pointer to CPU context save buffer.\r
-#\r
-# Returns:\r
-#\r
-# EFI_WARN_RETURN_FROM_LONG_JUMP\r
-#\r
-\r
-ASM_PFX(TransferControlLongJump):\r
- push %ebp\r
- mov %esp,%ebp\r
- push %ebx\r
- push %esi\r
- push %edi\r
- mov 0x8(%ebp),%eax\r
- mov $0x5,%eax\r
- mov 0xc(%ebp),%ecx\r
- mov (%ecx),%ebx\r
- mov 0x4(%ecx),%esi\r
- mov 0x8(%ecx),%edi\r
- mov 0xc(%ecx),%ebp\r
- mov 0x10(%ecx),%esp\r
- add $0x4,%esp\r
- jmp *0x14(%ecx)\r
- mov $0x5,%eax\r
- pop %edi\r
- pop %esi\r
- pop %ebx\r
- leave \r
- ret \r
-\r
-#\r
-# Routine Description:\r
-# This allows the caller to switch the stack and goes to the new entry point\r
-#\r
-# Arguments:\r
-# EntryPoint - Pointer to the location to enter\r
-# Parameter - Parameter to pass in\r
-# NewStack - New Location of the stack\r
-# NewBsp - New BSP\r
-#\r
-# Returns:\r
-#\r
-# Nothing. Goes to the Entry Point passing in the new parameters\r
-#\r
-#SwitchStacks PROC C \\r
-# EntryPoint:PTR DWORD, \\r
-# Parameter:DWORD, \\r
-# NewStack:PTR DWORD, \\r
-# NewBsp:PTR DWORD\r
-ASM_PFX(SwitchStacks):\r
- push %ebp\r
- mov %esp,%ebp\r
- push %ebx\r
- mov 0x14(%ebp),%eax\r
- mov 0xc(%ebp),%ebx\r
- mov 0x8(%ebp),%ecx\r
- mov 0x10(%ebp),%eax\r
- mov %eax,%esp\r
- push %ebx\r
- push $0x0\r
- jmp *%ecx\r
- pop %ebx\r
- leave \r
- ret \r
-\r
-\r
-\r
-\r
-#\r
-# Routine Description:\r
-# This allows the caller to switch the stack and goes to the new entry point\r
-#\r
-# Arguments:\r
-# EntryPoint - Pointer to the location to enter\r
-# Parameter1/Parameter2 - Parameter to pass in\r
-# NewStack - New Location of the stack\r
-# NewBsp - New BSP\r
-#\r
-# Returns:\r
-#\r
-# Nothing. Goes to the Entry Point passing in the new parameters\r
-#\r
-#SwitchIplStacks PROC C \\r
-# EntryPoint:PTR DWORD, \\r
-# Parameter1:DWORD, \\r
-# Parameter2:DWORD, \\r
-# NewStack:PTR DWORD, \\r
-# NewBsp:PTR DWORD\r
-ASM_PFX(SwitchIplStacks):\r
- push %ebp\r
- mov %esp,%ebp\r
- push %ebx\r
- mov 0x18(%ebp),%eax\r
- mov 0xc(%ebp),%ebx\r
- mov 0x10(%ebp),%edx\r
- mov 0x8(%ebp),%ecx\r
- mov 0x14(%ebp),%eax\r
- mov %eax,%esp\r
- push %edx\r
- push %ebx\r
- call *%ecx\r
- pop %ebx\r
- leave \r
- ret \r
-\r
-#SwitchIplStacks ENDP\r
-\r
-\r
-\r
+#
+# Copyright (c) 2004, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# ProcessorAsms.Asm
+#
+#
+#
+#include "EfiBind.h"
+#------------------------------------------------------------------------------
+
+ .686P:
+ .MMX:
+ #.MODEL SMALL
+ .CODE:
+#------------------------------------------------------------------------------
+
+.globl ASM_PFX(TransferControlSetJump)
+.globl ASM_PFX(TransferControlLongJump)
+.globl ASM_PFX(SwitchStacks)
+.globl ASM_PFX(SwitchIplStacks)
+
+#define EFI_SUCCESS 0
+#define EFI_WARN_RETURN_FROM_LONG_JUMP 5
+
+#
+# typedef struct {
+# UINT32 ebx;
+# UINT32 esi;
+# UINT32 edi;
+# UINT32 ebp;
+# UINT32 esp;
+# UINT32 eip;
+#} EFI_JUMP_BUFFER;
+#
+
+#typedef
+#EFI_STATUS
+#(EFIAPI *EFI_PEI_TRANSFER_CONTROL_SET_JUMP) (
+# IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This,
+# OUT EFI_JUMP_BUFFER *Context
+# );
+#
+#Routine Description:
+#
+# This routine implements the IA32 variant of the SetJump call. Its
+# responsibility is to store system state information for a possible
+# subsequent LongJump.
+#
+#Arguments:
+#
+# Pointer to CPU context save buffer.
+#
+#Returns:
+#
+# EFI_SUCCESS
+#
+ASM_PFX(TransferControlSetJump):
+ push %ebp
+ mov %esp,%ebp
+ mov 0x8(%ebp),%eax
+ mov 0xc(%ebp),%ecx
+ mov %ebx,(%ecx)
+ mov %esi,0x4(%ecx)
+ mov %edi,0x8(%ecx)
+ mov 0x0(%ebp),%eax
+ mov %eax,0xc(%ecx)
+ lea 0x4(%ebp),%eax
+ mov %eax,0x10(%ecx)
+ mov 0x4(%ebp),%eax
+ mov %eax,0x14(%ecx)
+ mov $0x0,%eax
+ leave
+ ret
+
+#typedef
+#EFI_STATUS
+#(EFIAPI *EFI_PEI_TRANSFER_CONTROL_LONG_JUMP) (
+# IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This,
+# IN EFI_JUMP_BUFFER *Context
+# );
+#
+# Routine Description:
+#
+# This routine implements the IA32 variant of the LongJump call. Its
+# responsibility is restore the system state to the Context Buffer and
+# pass control back.
+#
+# Arguments:
+#
+# Pointer to CPU context save buffer.
+#
+# Returns:
+#
+# EFI_WARN_RETURN_FROM_LONG_JUMP
+#
+
+ASM_PFX(TransferControlLongJump):
+ push %ebp
+ mov %esp,%ebp
+ push %ebx
+ push %esi
+ push %edi
+ mov 0x8(%ebp),%eax
+ mov $0x5,%eax
+ mov 0xc(%ebp),%ecx
+ mov (%ecx),%ebx
+ mov 0x4(%ecx),%esi
+ mov 0x8(%ecx),%edi
+ mov 0xc(%ecx),%ebp
+ mov 0x10(%ecx),%esp
+ add $0x4,%esp
+ jmp *0x14(%ecx)
+ mov $0x5,%eax
+ pop %edi
+ pop %esi
+ pop %ebx
+ leave
+ ret
+
+#
+# Routine Description:
+# This allows the caller to switch the stack and goes to the new entry point
+#
+# Arguments:
+# EntryPoint - Pointer to the location to enter
+# Parameter - Parameter to pass in
+# NewStack - New Location of the stack
+# NewBsp - New BSP
+#
+# Returns:
+#
+# Nothing. Goes to the Entry Point passing in the new parameters
+#
+#SwitchStacks PROC C \
+# EntryPoint:PTR DWORD, \
+# Parameter:DWORD, \
+# NewStack:PTR DWORD, \
+# NewBsp:PTR DWORD
+ASM_PFX(SwitchStacks):
+ push %ebp
+ mov %esp,%ebp
+ push %ebx
+ mov 0x14(%ebp),%eax
+ mov 0xc(%ebp),%ebx
+ mov 0x8(%ebp),%ecx
+ mov 0x10(%ebp),%eax
+ mov %eax,%esp
+ push %ebx
+ push $0x0
+ jmp *%ecx
+ pop %ebx
+ leave
+ ret
+
+
+
+
+#
+# Routine Description:
+# This allows the caller to switch the stack and goes to the new entry point
+#
+# Arguments:
+# EntryPoint - Pointer to the location to enter
+# Parameter1/Parameter2 - Parameter to pass in
+# NewStack - New Location of the stack
+# NewBsp - New BSP
+#
+# Returns:
+#
+# Nothing. Goes to the Entry Point passing in the new parameters
+#
+#SwitchIplStacks PROC C \
+# EntryPoint:PTR DWORD, \
+# Parameter1:DWORD, \
+# Parameter2:DWORD, \
+# NewStack:PTR DWORD, \
+# NewBsp:PTR DWORD
+ASM_PFX(SwitchIplStacks):
+ push %ebp
+ mov %esp,%ebp
+ push %ebx
+ mov 0x18(%ebp),%eax
+ mov 0xc(%ebp),%ebx
+ mov 0x10(%ebp),%edx
+ mov 0x8(%ebp),%ecx
+ mov 0x14(%ebp),%eax
+ mov %eax,%esp
+ push %edx
+ push %ebx
+ call *%ecx
+ pop %ebx
+ leave
+ ret
+
+#SwitchIplStacks ENDP
+
+
+
.section .rtcode, "ax", "progbits"\r
.align 32\r
.type RtPioICacheFlush# ,@function \r
- .global RtPioICacheFlush#\r
+ .globl RtPioICacheFlush#\r
// Function compile flags: /Ogsy\r
.section .rtcode\r
\r
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2008, Intel Corporation \r
-# All rights reserved. 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
-# ProcessorAsms.S\r
-#\r
-# Abstract:\r
-# This is separated from processor.c to allow this functions to be built with /O1\r
-#\r
-#\r
-#------------------------------------------------------------------------------\r
-#include <EfiBind.h>\r
-\r
- .text\r
-\r
-.global ASM_PFX(SwitchStacks)\r
-.global ASM_PFX(TransferControlSetJump)\r
-.global ASM_PFX(TransferControlLongJump)\r
-\r
-#\r
-# Routine Description:\r
-# This allows the caller to switch the stack and goes to the new entry point\r
-#\r
-# Arguments:\r
-# EntryPoint - Pointer to the location to enter // rcx\r
-# Parameter - Parameter to pass in // rdx\r
-# NewStack - New Location of the stack // r8\r
-# NewBsp - New BSP // r9 - not used\r
-#\r
-# Returns:\r
-# Nothing. Goes to the Entry Point passing in the new parameters\r
-#\r
-ASM_PFX(SwitchStacks):\r
-\r
- # Adjust stack for\r
- # 1) leave 4 registers space\r
- # 2) let it 16 bytes aligned after call\r
- sub $0x20,%r8\r
- and -0x10,%r8w # do not assume 16 bytes aligned\r
-\r
- mov %r8,%rsp\r
- mov %rcx,%r10\r
- mov %rdx,%rcx\r
- callq *%r10\r
-\r
- #\r
- # no ret as we have a new stack and we jumped to the new location\r
- # \r
- ret\r
-\r
-#SwitchStacks ENDP\r
-\r
-\r
-.equ EFI_SUCCESS, 0\r
-.equ EFI_WARN_RETURN_FROM_LONG_JUMP, 5\r
-\r
-#\r
-#Routine Description:\r
-#\r
-# This routine implements the x64 variant of the SetJump call. Its\r
-# responsibility is to store system state information for a possible\r
-# subsequent LongJump.\r
-#\r
-#Arguments:\r
-#\r
-# Pointer to CPU context save buffer.\r
-#\r
-#Returns:\r
-#\r
-# EFI_SUCCESS\r
-#\r
-# EFI_STATUS\r
-# EFIAPI\r
-# TransferControlLongJump (\r
-# IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This,\r
-# IN EFI_JUMP_BUFFER *Jump\r
-# );\r
-#\r
-# rcx - *This\r
-# rdx - JumpBuffer\r
-#\r
-ASM_PFX(TransferControlSetJump):\r
- mov %rbx,(%rdx)\r
- mov %rsp,0x8(%rdx)\r
- mov %rbp,0x10(%rdx)\r
- mov %rdi,0x18(%rdx)\r
- mov %rsi,0x20(%rdx)\r
- mov %r10,0x28(%rdx)\r
- mov %r11,0x30(%rdx)\r
- mov %r12,0x38(%rdx)\r
- mov %r13,0x40(%rdx)\r
- mov %r14,0x48(%rdx)\r
- mov %r15,0x50(%rdx)\r
- mov (%rsp),%rax\r
- mov %rax,0x58(%rdx)\r
- mov $0x0,%rax\r
- retq \r
-\r
-\r
-#\r
-# EFI_STATUS\r
-# EFIAPI\r
-# TransferControlLongJump (\r
-# IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This, // rcx\r
-# IN EFI_JUMP_BUFFER *Jump // rdx\r
-# );\r
-#\r
-#\r
-ASM_PFX(TransferControlLongJump):\r
- # set return from SetJump to EFI_WARN_RETURN_FROM_LONG_JUMP\r
- mov $0x5,%rax\r
- mov (%rdx),%rbx\r
- mov 0x8(%rdx),%rsp\r
- mov 0x10(%rdx),%rbp\r
- mov 0x18(%rdx),%rdi\r
- mov 0x20(%rdx),%rsi\r
- mov 0x28(%rdx),%r10\r
- mov 0x30(%rdx),%r11\r
- mov 0x38(%rdx),%r12\r
- mov 0x40(%rdx),%r13\r
- mov 0x48(%rdx),%r14\r
- mov 0x50(%rdx),%r15\r
- add $0x8,%rsp\r
- jmpq *0x58(%rdx)\r
- mov $0x5,%rax\r
- retq \r
-\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2008, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+# ProcessorAsms.S
+#
+# Abstract:
+# This is separated from processor.c to allow this functions to be built with /O1
+#
+#
+#------------------------------------------------------------------------------
+#include <EfiBind.h>
+
+ .text
+
+.globl ASM_PFX(SwitchStacks)
+.globl ASM_PFX(TransferControlSetJump)
+.globl ASM_PFX(TransferControlLongJump)
+
+#
+# Routine Description:
+# This allows the caller to switch the stack and goes to the new entry point
+#
+# Arguments:
+# EntryPoint - Pointer to the location to enter // rcx
+# Parameter - Parameter to pass in // rdx
+# NewStack - New Location of the stack // r8
+# NewBsp - New BSP // r9 - not used
+#
+# Returns:
+# Nothing. Goes to the Entry Point passing in the new parameters
+#
+ASM_PFX(SwitchStacks):
+
+ # Adjust stack for
+ # 1) leave 4 registers space
+ # 2) let it 16 bytes aligned after call
+ sub $0x20,%r8
+ and -0x10,%r8w # do not assume 16 bytes aligned
+
+ mov %r8,%rsp
+ mov %rcx,%r10
+ mov %rdx,%rcx
+ callq *%r10
+
+ #
+ # no ret as we have a new stack and we jumped to the new location
+ #
+ ret
+
+#SwitchStacks ENDP
+
+
+.equ EFI_SUCCESS, 0
+.equ EFI_WARN_RETURN_FROM_LONG_JUMP, 5
+
+#
+#Routine Description:
+#
+# This routine implements the x64 variant of the SetJump call. Its
+# responsibility is to store system state information for a possible
+# subsequent LongJump.
+#
+#Arguments:
+#
+# Pointer to CPU context save buffer.
+#
+#Returns:
+#
+# EFI_SUCCESS
+#
+# EFI_STATUS
+# EFIAPI
+# TransferControlLongJump (
+# IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This,
+# IN EFI_JUMP_BUFFER *Jump
+# );
+#
+# rcx - *This
+# rdx - JumpBuffer
+#
+ASM_PFX(TransferControlSetJump):
+ mov %rbx,(%rdx)
+ mov %rsp,0x8(%rdx)
+ mov %rbp,0x10(%rdx)
+ mov %rdi,0x18(%rdx)
+ mov %rsi,0x20(%rdx)
+ mov %r10,0x28(%rdx)
+ mov %r11,0x30(%rdx)
+ mov %r12,0x38(%rdx)
+ mov %r13,0x40(%rdx)
+ mov %r14,0x48(%rdx)
+ mov %r15,0x50(%rdx)
+ mov (%rsp),%rax
+ mov %rax,0x58(%rdx)
+ mov $0x0,%rax
+ retq
+
+
+#
+# EFI_STATUS
+# EFIAPI
+# TransferControlLongJump (
+# IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This, // rcx
+# IN EFI_JUMP_BUFFER *Jump // rdx
+# );
+#
+#
+ASM_PFX(TransferControlLongJump):
+ # set return from SetJump to EFI_WARN_RETURN_FROM_LONG_JUMP
+ mov $0x5,%rax
+ mov (%rdx),%rbx
+ mov 0x8(%rdx),%rsp
+ mov 0x10(%rdx),%rbp
+ mov 0x18(%rdx),%rdi
+ mov 0x20(%rdx),%rsi
+ mov 0x28(%rdx),%r10
+ mov 0x30(%rdx),%r11
+ mov 0x38(%rdx),%r12
+ mov 0x40(%rdx),%r13
+ mov 0x48(%rdx),%r14
+ mov 0x50(%rdx),%r15
+ add $0x8,%rsp
+ jmpq *0x58(%rdx)
+ mov $0x5,%rax
+ retq
+
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2008, Intel Corporation \r
-# All rights reserved. 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
-# SupportItpDebug.S\r
-# \r
-# Abstract:\r
-# \r
-# This is the code for debuging X64, to add a break hook at loading every module\r
-#\r
-#------------------------------------------------------------------------------\r
-#include <EfiBind.h>\r
-\r
- .text\r
-\r
-.global ASM_PFX(AsmEfiSetBreakSupport)\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# AsmEfiSetBreakSupport (\r
-# IN UINTN LoadAddr // rcx\r
-# )\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_PFX(AsmEfiSetBreakSupport):\r
-\r
- movw $60000, %dx\r
- outl %eax, %dx\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- nop\r
- ret\r
-\r
-\r
-\r
-\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2008, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# SupportItpDebug.S
+#
+# Abstract:
+#
+# This is the code for debuging X64, to add a break hook at loading every module
+#
+#------------------------------------------------------------------------------
+#include <EfiBind.h>
+
+ .text
+
+.globl ASM_PFX(AsmEfiSetBreakSupport)
+
+#------------------------------------------------------------------------------
+# VOID
+# AsmEfiSetBreakSupport (
+# IN UINTN LoadAddr // rcx
+# )
+#------------------------------------------------------------------------------
+
+ASM_PFX(AsmEfiSetBreakSupport):
+
+ movw $60000, %dx
+ outl %eax, %dx
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ ret
+
+
+
+
-#/*++\r
-#\r
-#Copyright (c) 2008, Intel Corporation \r
-#All rights reserved. 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
- #CpuFlushCache.c\r
-#\r
-#Abstract:\r
-#\r
- #Cpu Flush Cache Function.\r
-#\r
-#--*/\r
-#---------------------------------------------------------------------------\r
-#include <EfiBind.h>\r
-\r
- .586p: \r
- #.MODEL flat,C\r
- .code: \r
-\r
-#---------------------------------------------------------------------------\r
-.global ASM_PFX(EfiCpuFlushCache)\r
-\r
-#\r
-#//\r
-#// Cache Flush Routine.\r
-#//\r
-#EFI_STATUS\r
-#EfiCpuFlushCache (\r
- #IN EFI_PHYSICAL_ADDRESS Start,\r
-# IN UINT64 Length\r
- #)\r
-#/*++\r
-#\r
-#Routine Description:\r
-#\r
- #Flush cache with specified range.\r
-#\r
-#Arguments:\r
-#\r
- #Start - Start address\r
-# Length - Length in bytes\r
-#\r
-#Returns:\r
-#\r
- #Status code\r
-# \r
- #EFI_SUCCESS - success\r
-#\r
-#--*/\r
-ASM_PFX(EfiCpuFlushCache):\r
- wbinvd\r
- xorl %eax, %eax\r
- ret\r
+#/*++
+#
+#Copyright (c) 2008, Intel Corporation
+#All rights reserved. This program and the accompanying materials
+#are licensed and made available under the terms and conditions of the BSD License
+#which accompanies this distribution. The full text of the license may be found at
+#http://opensource.org/licenses/bsd-license.php
+ #
+#THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+#WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+#Module Name:
+#
+ #CpuFlushCache.c
+#
+#Abstract:
+#
+ #Cpu Flush Cache Function.
+#
+#--*/
+#---------------------------------------------------------------------------
+#include <EfiBind.h>
+
+ .586p:
+ #.MODEL flat,C
+ .code:
+
+#---------------------------------------------------------------------------
+.globl ASM_PFX(EfiCpuFlushCache)
+
+#
+#//
+#// Cache Flush Routine.
+#//
+#EFI_STATUS
+#EfiCpuFlushCache (
+ #IN EFI_PHYSICAL_ADDRESS Start,
+# IN UINT64 Length
+ #)
+#/*++
+#
+#Routine Description:
+#
+ #Flush cache with specified range.
+#
+#Arguments:
+#
+ #Start - Start address
+# Length - Length in bytes
+#
+#Returns:
+#
+ #Status code
+#
+ #EFI_SUCCESS - success
+#
+#--*/
+ASM_PFX(EfiCpuFlushCache):
+ wbinvd
+ xorl %eax, %eax
+ ret
//\r
// Exports\r
//\r
-.global GetEsalEntryPoint\r
+.globl GetEsalEntryPoint\r
\r
\r
//-----------------------------------------------------------------------------\r
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2008, Intel Corporation\r
-# All rights reserved. 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
-# RuntimeLibAsm.S\r
-#\r
-# Abstract:\r
-#\r
-#\r
-#------------------------------------------------------------------------------\r
-#include <EfiBind.h>\r
-\r
-.text\r
-\r
-.global ASM_PFX(EfiCpuFlushCache)\r
-#------------------------------------------------------------------------------\r
-#EFI_STATUS\r
-#EfiCpuFlushCache (\r
-# IN EFI_PHYSICAL_ADDRESS Start,\r
-# IN UINT64 Length\r
-# );\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_PFX(EfiCpuFlushCache):\r
- wbinvd\r
- mov $0, %rax\r
- ret\r
-\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2008, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# RuntimeLibAsm.S
+#
+# Abstract:
+#
+#
+#------------------------------------------------------------------------------
+#include <EfiBind.h>
+
+.text
+
+.globl ASM_PFX(EfiCpuFlushCache)
+#------------------------------------------------------------------------------
+#EFI_STATUS
+#EfiCpuFlushCache (
+# IN EFI_PHYSICAL_ADDRESS Start,
+# IN UINT64 Length
+# );
+#------------------------------------------------------------------------------
+
+ASM_PFX(EfiCpuFlushCache):
+ wbinvd
+ mov $0, %rax
+ ret
+
pop %ecx\r
rep movsl %ds:(%esi),%es:(%edi) #; copy context to 16-bit stack\r
pop %ebx #; ebx <- 16-bit stack offset\r
- mov $L_Label1,%eax\r
+ mov $L_Lable1,%eax\r
stos %eax,%es:(%edi)\r
movl %cs,%eax\r
stos %ax,%es:(%edi)\r
-#*****************************************************************************\r
-#*\r
-#* Copyright (c) 2008, Intel Corporation \r
-#* All rights reserved. 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
-#* Fx.S\r
-#* \r
-#* Abstract:\r
-#* \r
-#* AsmFxRestore and AsmFxSave function\r
-#* \r
-#*****************************************************************************\r
-#include <EfiBind.h>\r
-\r
-.global ASM_PFX(AsmFxSave)\r
-.global ASM_PFX(AsmFxRestore)\r
-\r
- .text\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# AsmFxSave (\r
-# OUT IA32_FX_BUFFER *Buffer\r
-# );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmFxSave):\r
- fxsave (%rcx)\r
- retq\r
- \r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# AsmFxRestore (\r
-# IN CONST IA32_FX_BUFFER *Buffer\r
-# );\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_PFX(AsmFxRestore):\r
- fxrstor (%rcx)\r
- retq\r
+#*****************************************************************************
+#*
+#* Copyright (c) 2008, Intel Corporation
+#* All rights reserved. This program and the accompanying materials
+#* are licensed and made available under the terms and conditions of the BSD License
+#* which accompanies this distribution. The full text of the license may be found at
+#* http://opensource.org/licenses/bsd-license.php
+#*
+#* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+#* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#*
+#* Module Name:
+#*
+#* Fx.S
+#*
+#* Abstract:
+#*
+#* AsmFxRestore and AsmFxSave function
+#*
+#*****************************************************************************
+#include <EfiBind.h>
+
+.globl ASM_PFX(AsmFxSave)
+.globl ASM_PFX(AsmFxRestore)
+
+ .text
+
+#------------------------------------------------------------------------------
+# VOID
+# AsmFxSave (
+# OUT IA32_FX_BUFFER *Buffer
+# );
+#------------------------------------------------------------------------------
+ASM_PFX(AsmFxSave):
+ fxsave (%rcx)
+ retq
+
+#------------------------------------------------------------------------------
+# VOID
+# AsmFxRestore (
+# IN CONST IA32_FX_BUFFER *Buffer
+# );
+#------------------------------------------------------------------------------
+
+ASM_PFX(AsmFxRestore):
+ fxrstor (%rcx)
+ retq
\ No newline at end of file