Fixed issues compiling for Apple gcc on IA-32

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9310 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
AJFISH 2009-09-24 21:48:45 +00:00
parent fbf926add9
commit e8de46808a
99 changed files with 2216 additions and 2186 deletions

View File

@ -110,7 +110,7 @@ EFI_STATUS
// //
#define EFI_FILE_MODE_READ 0x0000000000000001 #define EFI_FILE_MODE_READ 0x0000000000000001
#define EFI_FILE_MODE_WRITE 0x0000000000000002 #define EFI_FILE_MODE_WRITE 0x0000000000000002
#define EFI_FILE_MODE_CREATE 0x8000000000000000 #define EFI_FILE_MODE_CREATE 0x8000000000000000ULL
// //
// File attributes // File attributes

View File

@ -60,6 +60,25 @@ Abstract:
#define _EFI_INT_SIZE_OF(n) ((sizeof (n) + sizeof (UINTN) - 1) &~(sizeof (UINTN) - 1)) #define _EFI_INT_SIZE_OF(n) ((sizeof (n) + sizeof (UINTN) - 1) &~(sizeof (UINTN) - 1))
#if defined(__GNUC__)
//
// Use GCC built-in macros for variable argument lists.
//
///
/// Variable used to traverse the list of arguments. This type can vary by
/// implementation and could be an array or structure.
///
typedef __builtin_va_list VA_LIST;
#define VA_START(Marker, Parameter) __builtin_va_start (Marker, Parameter)
#define VA_ARG(Marker, TYPE) ((sizeof (TYPE) < sizeof (UINTN)) ? (TYPE)(__builtin_va_arg (Marker, UINTN)) : (TYPE)(__builtin_va_arg (Marker, TYPE)))
#define VA_END(Marker) __builtin_va_end (Marker)
#else
// //
// Also support coding convention rules for var arg macros // Also support coding convention rules for var arg macros
// //
@ -70,6 +89,9 @@ typedef CHAR8 *VA_LIST;
#define VA_ARG(ap, t) (*(t *) ((ap += _EFI_INT_SIZE_OF (t)) - _EFI_INT_SIZE_OF (t))) #define VA_ARG(ap, t) (*(t *) ((ap += _EFI_INT_SIZE_OF (t)) - _EFI_INT_SIZE_OF (t)))
#define VA_END(ap) (ap = (VA_LIST) 0) #define VA_END(ap) (ap = (VA_LIST) 0)
#endif
#endif #endif
#endif #endif

View File

@ -83,7 +83,9 @@ Abstract:
// //
// Make sure we are useing the correct packing rules per EFI specification // Make sure we are useing the correct packing rules per EFI specification
// //
#ifndef __GNUC__
#pragma pack() #pragma pack()
#endif
#if __INTEL_COMPILER #if __INTEL_COMPILER
// //

View File

@ -35,7 +35,9 @@ Abstract:
// //
// Make sure we are useing the correct packing rules per EFI specification // Make sure we are useing the correct packing rules per EFI specification
// //
#ifndef __GNUC__
#pragma pack() #pragma pack()
#endif
#if __INTEL_COMPILER #if __INTEL_COMPILER
// //

View File

@ -26,16 +26,20 @@ COMPONENT_TYPE = LIBRARY
[sources.common] [sources.common]
[sources.ia32] [sources.ia32]
Ia32\memcpyRep1.asm Ia32/memcpyRep1.asm | MSFT
Ia32\memsetRep4.asm Ia32/memcpyRep1.asm | INTEL
# Ia32\memcpy.asm Ia32/memsetRep4.asm | MSFT
# Ia32\memset.asm Ia32/memsetRep4.asm | INTEL
memcpy.c | GCC
memset.c | GCC
[sources.x64] [sources.x64]
x64\memcpyRep1.asm x64/memcpyRep1.asm | MSFT
x64\memsetRep4.asm x64/memcpyRep1.asm | INTEL
# x64\memcpy.asm x64/memsetRep4.asm | MSFT
# x64\memset.asm x64/memsetRep4.asm | INTEL
memcpy.c | GCC
memset.c | GCC
[sources.Ipf] [sources.Ipf]
memcpy.c memcpy.c

View File

@ -1,26 +1,26 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# CpuBreakpoint.S # CpuBreakpoint.S
# #
# Abstract: # Abstract:
# #
# Implementation of CpuBreakpoint() on x86_64 # Implementation of CpuBreakpoint() on x86_64
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
.global ASM_PFX(CpuBreakpoint) .globl ASM_PFX(CpuBreakpoint)
ASM_PFX(CpuBreakpoint): ASM_PFX(CpuBreakpoint):
int $0x3 int $0x3
ret ret

View File

@ -1,62 +1,62 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# CpuId.S # CpuId.S
# #
# Abstract: # Abstract:
# #
# AsmCpuid function # AsmCpuid function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# AsmCpuid ( # AsmCpuid (
# IN UINT32 RegisterInEax, # IN UINT32 RegisterInEax,
# OUT UINT32 *RegisterOutEax OPTIONAL, # OUT UINT32 *RegisterOutEax OPTIONAL,
# OUT UINT32 *RegisterOutEbx OPTIONAL, # OUT UINT32 *RegisterOutEbx OPTIONAL,
# OUT UINT32 *RegisterOutEcx OPTIONAL, # OUT UINT32 *RegisterOutEcx OPTIONAL,
# OUT UINT32 *RegisterOutEdx OPTIONAL # OUT UINT32 *RegisterOutEdx OPTIONAL
# ) # )
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmCpuid) .globl ASM_PFX(AsmCpuid)
ASM_PFX(AsmCpuid): ASM_PFX(AsmCpuid):
push %rbx push %rbx
mov %ecx, %eax mov %ecx, %eax
push %rax # save Index on stack push %rax # save Index on stack
push %rdx push %rdx
cpuid cpuid
test %r9, %r9 test %r9, %r9
jz L1 jz L1
mov %ecx, (%r9) mov %ecx, (%r9)
L1: L1:
pop %rcx pop %rcx
jrcxz L2 jrcxz L2
mov %eax, (%rcx) mov %eax, (%rcx)
L2: L2:
mov %r8, %rcx mov %r8, %rcx
jrcxz L3 jrcxz L3
mov %ebx, (%rcx) mov %ebx, (%rcx)
L3: L3:
mov 0x38(%rsp), %rcx mov 0x38(%rsp), %rcx
jrcxz L4 jrcxz L4
mov %edx, (%rcx) mov %edx, (%rcx)
L4: L4:
pop %rax # restore Index to rax as return value pop %rax # restore Index to rax as return value
pop %rbx pop %rbx
ret ret

View File

@ -1,63 +1,63 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# CpuIdEx.Asm # CpuIdEx.Asm
# #
# Abstract: # Abstract:
# #
# AsmCpuidEx function # AsmCpuidEx function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# UINT32 # UINT32
# EFIAPI # EFIAPI
# AsmCpuidEx ( # AsmCpuidEx (
# IN UINT32 RegisterInEax, # IN UINT32 RegisterInEax,
# IN UINT32 RegisterInEcx, # IN UINT32 RegisterInEcx,
# OUT UINT32 *RegisterOutEax OPTIONAL, # OUT UINT32 *RegisterOutEax OPTIONAL,
# OUT UINT32 *RegisterOutEbx OPTIONAL, # OUT UINT32 *RegisterOutEbx OPTIONAL,
# OUT UINT32 *RegisterOutEcx OPTIONAL, # OUT UINT32 *RegisterOutEcx OPTIONAL,
# OUT UINT32 *RegisterOutEdx OPTIONAL # OUT UINT32 *RegisterOutEdx OPTIONAL
# ) # )
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmCpuidEx) .globl ASM_PFX(AsmCpuidEx)
ASM_PFX(AsmCpuidEx): ASM_PFX(AsmCpuidEx):
push %rbx push %rbx
movl %ecx,%eax movl %ecx,%eax
movl %edx,%ecx movl %edx,%ecx
push %rax push %rax
cpuid cpuid
mov 0x38(%rsp), %r10 mov 0x38(%rsp), %r10
test %r10, %r10 test %r10, %r10
jz L1 jz L1
mov %ecx,(%r10) mov %ecx,(%r10)
L1: L1:
mov %r8, %rcx mov %r8, %rcx
jrcxz L2 jrcxz L2
movl %eax,(%rcx) movl %eax,(%rcx)
L2: L2:
mov %r9, %rcx mov %r9, %rcx
jrcxz L3 jrcxz L3
mov %ebx, (%rcx) mov %ebx, (%rcx)
L3: L3:
mov 0x40(%rsp), %rcx mov 0x40(%rsp), %rcx
jrcxz L4 jrcxz L4
mov %edx, (%rcx) mov %edx, (%rcx)
L4: L4:
pop %rax pop %rax
pop %rbx pop %rbx
ret ret

View File

@ -28,7 +28,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(CpuPause) .globl ASM_PFX(CpuPause)
ASM_PFX(CpuPause): ASM_PFX(CpuPause):
pause pause
ret ret

View File

@ -28,7 +28,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(CpuSleep) .globl ASM_PFX(CpuSleep)
ASM_PFX(CpuSleep): ASM_PFX(CpuSleep):
hlt hlt
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(DisableInterrupts) .globl ASM_PFX(DisableInterrupts)
ASM_PFX(DisableInterrupts): ASM_PFX(DisableInterrupts):
cli cli
ret ret

View File

@ -1,66 +1,66 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# DisablePaging64.S # DisablePaging64.S
# #
# Abstract: # Abstract:
# #
# AsmDisablePaging64 function # AsmDisablePaging64 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# InternalX86DisablePaging64 ( # InternalX86DisablePaging64 (
# IN UINT16 Cs, %rdi # IN UINT16 Cs, %rdi
# IN UINT64 EntryPoint, %rsi # IN UINT64 EntryPoint, %rsi
# IN UINT64 Context1, OPTIONAL %rdx # IN UINT64 Context1, OPTIONAL %rdx
# IN UINT32 Context2, OPTIONAL %rcx # IN UINT32 Context2, OPTIONAL %rcx
# IN UINT64 NewStack %r8 # IN UINT64 NewStack %r8
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(InternalX86DisablePaging64) .globl ASM_PFX(InternalX86DisablePaging64)
ASM_PFX(InternalX86DisablePaging64): ASM_PFX(InternalX86DisablePaging64):
cli cli
shl $0x20,%rcx shl $0x20,%rcx
lea (%rip), %eax lea (%rip), %eax
mov %eax,%ecx mov %eax,%ecx
push %rcx push %rcx
mov %edx,%ebx mov %edx,%ebx
mov %r8d,%esi mov %r8d,%esi
mov %r9d,%edi mov %r9d,%edi
mov 0x28(%rsp),%eax mov 0x28(%rsp),%eax
lret lret
L1: L1:
mov %eax,%esp mov %eax,%esp
mov %cr0,%rax mov %cr0,%rax
btr $0x1f,%eax btr $0x1f,%eax
mov %rax,%cr0 mov %rax,%cr0
mov $0xc0000080,%ecx mov $0xc0000080,%ecx
rdmsr rdmsr
and $0xfe,%ah and $0xfe,%ah
wrmsr wrmsr
mov %cr4,%rax mov %cr4,%rax
and $0xdf,%al and $0xdf,%al
mov %rax,%cr4 mov %rax,%cr4
push %rdi push %rdi
push %rsi push %rsi
callq *%rbx callq *%rbx
jmp . jmp .

View File

@ -1,36 +1,36 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006 - 2009, Intel Corporation # Copyright (c) 2006 - 2009, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# EnableDisableInterrupts.S # EnableDisableInterrupts.S
# #
# Abstract: # Abstract:
# #
# EnableDisableInterrupts function # EnableDisableInterrupts function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# EnableDisableInterrupts ( # EnableDisableInterrupts (
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(EnableDisableInterrupts) .globl ASM_PFX(EnableDisableInterrupts)
ASM_PFX(EnableDisableInterrupts): ASM_PFX(EnableDisableInterrupts):
sti sti
cli cli
ret ret

View File

@ -1,35 +1,35 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# EnableInterrupts.S # EnableInterrupts.S
# #
# Abstract: # Abstract:
# #
# EnableInterrupts function # EnableInterrupts function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# EnableInterrupts ( # EnableInterrupts (
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(EnableInterrupts) .globl ASM_PFX(EnableInterrupts)
ASM_PFX(EnableInterrupts): ASM_PFX(EnableInterrupts):
sti sti
ret ret

View File

@ -1,61 +1,61 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# EnablePaging64.S # EnablePaging64.S
# #
# Abstract: # Abstract:
# #
# AsmEnablePaging64 function # AsmEnablePaging64 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# InternalX86EnablePaging64 ( # InternalX86EnablePaging64 (
# IN UINT16 Cs, %rdi # IN UINT16 Cs, %rdi
# IN UINT64 EntryPoint, %rsi # IN UINT64 EntryPoint, %rsi
# IN UINT64 Context1, OPTIONAL %rdx # IN UINT64 Context1, OPTIONAL %rdx
# IN UINT64 Context2, OPTIONAL %rcx # IN UINT64 Context2, OPTIONAL %rcx
# IN UINT64 NewStack %r8 # IN UINT64 NewStack %r8
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(InternalX86EnablePaging64) .globl ASM_PFX(InternalX86EnablePaging64)
ASM_PFX(InternalX86EnablePaging64): ASM_PFX(InternalX86EnablePaging64):
cli cli
pop %rax pop %rax
callq Base callq Base
Base: Base:
addl $(L1-Base),(%rsp) addl $(L1-Base),(%rsp)
mov %cr4,%rax mov %cr4,%rax
or $0x20,%al or $0x20,%al
mov %rax,%cr4 mov %rax,%cr4
mov $0xc0000080,%ecx mov $0xc0000080,%ecx
rdmsr rdmsr
or $0x1,%ah or $0x1,%ah
wrmsr wrmsr
mov %cr0,%rax mov %cr0,%rax
bts $0x1f,%eax bts $0x1f,%eax
mov %rax,%cr0 mov %rax,%cr0
lret lret
L1: L1:
addr32 mov (%esp),%rbx addr32 mov (%esp),%rbx
addr32 mov 0x8(%esp),%rcx addr32 mov 0x8(%esp),%rcx
addr32 mov 0x10(%esp),%rdx addr32 mov 0x10(%esp),%rdx
addr32 mov 0x18(%esp),%rsp addr32 mov 0x18(%esp),%rsp
add $-0x20,%rsp add $-0x20,%rsp
callq *%rbx callq *%rbx
jmp . jmp .

View File

@ -1,36 +1,36 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# FlushCacheLine.S # FlushCacheLine.S
# #
# Abstract: # Abstract:
# #
# AsmFlushCacheLine function # AsmFlushCacheLine function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID * # VOID *
# EFIAPI # EFIAPI
# AsmFlushCacheLine ( # AsmFlushCacheLine (
# IN VOID *LinearAddress # IN VOID *LinearAddress
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmFlushCacheLine) .globl ASM_PFX(AsmFlushCacheLine)
ASM_PFX(AsmFlushCacheLine): ASM_PFX(AsmFlushCacheLine):
clflush (%rdi) clflush (%rdi)
mov %rdi, %rax mov %rdi, %rax
ret ret

View File

@ -1,35 +1,35 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# FxRestore.S # FxRestore.S
# #
# Abstract: # Abstract:
# #
# AsmFxRestore function # AsmFxRestore function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# InternalX86FxRestore ( # InternalX86FxRestore (
# IN CONST IA32_FX_BUFFER *Buffer # IN CONST IA32_FX_BUFFER *Buffer
# )# # )#
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(InternalX86FxRestore) .globl ASM_PFX(InternalX86FxRestore)
ASM_PFX(InternalX86FxRestore): ASM_PFX(InternalX86FxRestore):
fxrstor (%rcx) fxrstor (%rcx)
ret ret

View File

@ -1,35 +1,35 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# FxSave.S # FxSave.S
# #
# Abstract: # Abstract:
# #
# AsmFxSave function # AsmFxSave function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# InternalX86FxSave ( # InternalX86FxSave (
# OUT IA32_FX_BUFFER *Buffer # OUT IA32_FX_BUFFER *Buffer
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(InternalX86FxSave) .globl ASM_PFX(InternalX86FxSave)
ASM_PFX(InternalX86FxSave): ASM_PFX(InternalX86FxSave):
fxsave (%rcx) fxsave (%rcx)
ret ret

View File

@ -30,7 +30,7 @@
# IN UINT32 ExchangeValue # IN UINT32 ExchangeValue
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(InternalSyncCompareExchange32) .globl ASM_PFX(InternalSyncCompareExchange32)
ASM_PFX(InternalSyncCompareExchange32): ASM_PFX(InternalSyncCompareExchange32):
mov %edx, %eax mov %edx, %eax
lock cmpxchg %r8d, (%rcx) lock cmpxchg %r8d, (%rcx)

View File

@ -1,38 +1,38 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006 - 2009, Intel Corporation # Copyright (c) 2006 - 2009, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# InterlockedCompareExchange64.S # InterlockedCompareExchange64.S
# #
# Abstract: # Abstract:
# #
# InterlockedCompareExchange64 function # InterlockedCompareExchange64 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# UINT64 # UINT64
# EFIAPI # EFIAPI
# InterlockedCompareExchange64 ( # InterlockedCompareExchange64 (
# IN UINT64 *Value, # IN UINT64 *Value,
# IN UINT64 CompareValue, # IN UINT64 CompareValue,
# IN UINT64 ExchangeValue # IN UINT64 ExchangeValue
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(InternalSyncCompareExchange64) .globl ASM_PFX(InternalSyncCompareExchange64)
ASM_PFX(InternalSyncCompareExchange64): ASM_PFX(InternalSyncCompareExchange64):
mov %rsi, %rax mov %rsi, %rax
lock cmpxchg %rdx,(%rdi) lock cmpxchg %rdx,(%rdi)
ret ret

View File

@ -1,36 +1,36 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# InterlockedDecrement.S # InterlockedDecrement.S
# #
# Abstract: # Abstract:
# #
# InterlockedDecrement function # InterlockedDecrement function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# UINT32 # UINT32
# EFIAPI # EFIAPI
# InterlockedDecrement ( # InterlockedDecrement (
# IN UINT32 *Value # IN UINT32 *Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(InternalSyncDecrement) .globl ASM_PFX(InternalSyncDecrement)
ASM_PFX(InternalSyncDecrement): ASM_PFX(InternalSyncDecrement):
lock decl (%rcx) lock decl (%rcx)
mov (%rcx), %eax mov (%rcx), %eax
ret ret

View File

@ -1,36 +1,36 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# InterlockedIncrement.S # InterlockedIncrement.S
# #
# Abstract: # Abstract:
# #
# InterlockedIncrement function # InterlockedIncrement function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# UINT32 # UINT32
# EFIAPI # EFIAPI
# InterlockedIncrement ( # InterlockedIncrement (
# IN UINT32 *Value # IN UINT32 *Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(InternalSyncIncrement) .globl ASM_PFX(InternalSyncIncrement)
ASM_PFX(InternalSyncIncrement): ASM_PFX(InternalSyncIncrement):
lock incl (%rcx) lock incl (%rcx)
mov (%rcx), %eax mov (%rcx), %eax
ret ret

View File

@ -1,35 +1,35 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# Invd.S # Invd.S
# #
# Abstract: # Abstract:
# #
# AsmInvd function # AsmInvd function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# AsmInvd ( # AsmInvd (
# VOID # VOID
# )# # )#
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmInvd) .globl ASM_PFX(AsmInvd)
ASM_PFX(AsmInvd): ASM_PFX(AsmInvd):
invd invd
ret ret

View File

@ -27,7 +27,7 @@
# IN UINTN Value # IN UINTN Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(InternalLongJump) .globl ASM_PFX(InternalLongJump)
ASM_PFX(InternalLongJump): ASM_PFX(InternalLongJump):
mov (%rcx), %rbx mov (%rcx), %rbx
mov 0x8(%rcx), %rsp mov 0x8(%rcx), %rsp

View File

@ -31,7 +31,7 @@
# IN UINTN Edx # IN UINTN Edx
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmMonitor) .globl ASM_PFX(AsmMonitor)
ASM_PFX(AsmMonitor): ASM_PFX(AsmMonitor):
mov %ecx,%eax mov %ecx,%eax
mov %edx,%ecx mov %edx,%ecx

View File

@ -30,7 +30,7 @@
# IN UINTN Ecx # IN UINTN Ecx
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmMwait) .globl ASM_PFX(AsmMwait)
ASM_PFX(AsmMwait): ASM_PFX(AsmMwait):
mov %ecx,%eax mov %ecx,%eax
mov %edx,%ecx mov %edx,%ecx

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadCr0) .globl ASM_PFX(AsmReadCr0)
ASM_PFX(AsmReadCr0): ASM_PFX(AsmReadCr0):
mov %cr0, %rax mov %cr0, %rax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadCr2) .globl ASM_PFX(AsmReadCr2)
ASM_PFX(AsmReadCr2): ASM_PFX(AsmReadCr2):
mov %cr2, %rax mov %cr2, %rax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadCr3) .globl ASM_PFX(AsmReadCr3)
ASM_PFX(AsmReadCr3): ASM_PFX(AsmReadCr3):
mov %cr3, %rax mov %cr3, %rax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadCr4) .globl ASM_PFX(AsmReadCr4)
ASM_PFX(AsmReadCr4): ASM_PFX(AsmReadCr4):
mov %cr4, %rax mov %cr4, %rax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadCs) .globl ASM_PFX(AsmReadCs)
ASM_PFX(AsmReadCs): ASM_PFX(AsmReadCs):
mov %cs, %eax mov %cs, %eax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadDr0) .globl ASM_PFX(AsmReadDr0)
ASM_PFX(AsmReadDr0): ASM_PFX(AsmReadDr0):
mov %dr0, %rax mov %dr0, %rax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadDr1) .globl ASM_PFX(AsmReadDr1)
ASM_PFX(AsmReadDr1): ASM_PFX(AsmReadDr1):
mov %dr1, %rax mov %dr1, %rax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadDr2) .globl ASM_PFX(AsmReadDr2)
ASM_PFX(AsmReadDr2): ASM_PFX(AsmReadDr2):
mov %dr2, %rax mov %dr2, %rax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadDr3) .globl ASM_PFX(AsmReadDr3)
ASM_PFX(AsmReadDr3): ASM_PFX(AsmReadDr3):
mov %dr3, %rax mov %dr3, %rax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadDr4) .globl ASM_PFX(AsmReadDr4)
ASM_PFX(AsmReadDr4): ASM_PFX(AsmReadDr4):
#DB 0fh, 21h, 0e0h #DB 0fh, 21h, 0e0h
mov %dr4, %rax mov %dr4, %rax

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadDr5) .globl ASM_PFX(AsmReadDr5)
ASM_PFX(AsmReadDr5): ASM_PFX(AsmReadDr5):
mov %dr5, %rax mov %dr5, %rax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadDr6) .globl ASM_PFX(AsmReadDr6)
ASM_PFX(AsmReadDr6): ASM_PFX(AsmReadDr6):
mov %dr6, %rax mov %dr6, %rax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadDr7) .globl ASM_PFX(AsmReadDr7)
ASM_PFX(AsmReadDr7): ASM_PFX(AsmReadDr7):
mov %dr7, %rax mov %dr7, %rax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadDs) .globl ASM_PFX(AsmReadDs)
ASM_PFX(AsmReadDs): ASM_PFX(AsmReadDs):
movl %ds, %eax movl %ds, %eax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadEflags) .globl ASM_PFX(AsmReadEflags)
ASM_PFX(AsmReadEflags): ASM_PFX(AsmReadEflags):
pushfq pushfq
pop %rax pop %rax

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadEs) .globl ASM_PFX(AsmReadEs)
ASM_PFX(AsmReadEs): ASM_PFX(AsmReadEs):
mov %es, %eax mov %es, %eax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadFs) .globl ASM_PFX(AsmReadFs)
ASM_PFX(AsmReadFs): ASM_PFX(AsmReadFs):
mov %fs, %eax mov %fs, %eax
ret ret

View File

@ -29,7 +29,7 @@
# OUT IA32_DESCRIPTOR *Gdtr # OUT IA32_DESCRIPTOR *Gdtr
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(InternalX86ReadGdtr) .globl ASM_PFX(InternalX86ReadGdtr)
ASM_PFX(InternalX86ReadGdtr): ASM_PFX(InternalX86ReadGdtr):
sgdt (%rcx) sgdt (%rcx)
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadGs) .globl ASM_PFX(AsmReadGs)
ASM_PFX(AsmReadGs): ASM_PFX(AsmReadGs):
mov %gs, %eax mov %gs, %eax
ret ret

View File

@ -29,7 +29,7 @@
# OUT IA32_DESCRIPTOR *Idtr # OUT IA32_DESCRIPTOR *Idtr
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(InternalX86ReadIdtr) .globl ASM_PFX(InternalX86ReadIdtr)
ASM_PFX(InternalX86ReadIdtr): ASM_PFX(InternalX86ReadIdtr):
sidt (%rcx) sidt (%rcx)
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadLdtr) .globl ASM_PFX(AsmReadLdtr)
ASM_PFX(AsmReadLdtr): ASM_PFX(AsmReadLdtr):
sldt %eax sldt %eax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadMm0) .globl ASM_PFX(AsmReadMm0)
ASM_PFX(AsmReadMm0): ASM_PFX(AsmReadMm0):
#DB 48h, 0fh, 7eh, 0c0h #DB 48h, 0fh, 7eh, 0c0h
movd %mm0, %rax movd %mm0, %rax

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadMm1) .globl ASM_PFX(AsmReadMm1)
ASM_PFX(AsmReadMm1): ASM_PFX(AsmReadMm1):
#DB 48h, 0fh, 7eh, 0c8h #DB 48h, 0fh, 7eh, 0c8h
movd %mm1, %rax movd %mm1, %rax

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadMm2) .globl ASM_PFX(AsmReadMm2)
ASM_PFX(AsmReadMm2): ASM_PFX(AsmReadMm2):
#DB 48h, 0fh, 7eh, 0d0h #DB 48h, 0fh, 7eh, 0d0h
movd %mm2, %rax movd %mm2, %rax

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadMm3) .globl ASM_PFX(AsmReadMm3)
ASM_PFX(AsmReadMm3): ASM_PFX(AsmReadMm3):
#DB 48h, 0fh, 7eh, 0d8h #DB 48h, 0fh, 7eh, 0d8h
movd %mm3, %rax movd %mm3, %rax

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadMm4) .globl ASM_PFX(AsmReadMm4)
ASM_PFX(AsmReadMm4): ASM_PFX(AsmReadMm4):
#DB 48h, 0fh, 7eh, 0e0h #DB 48h, 0fh, 7eh, 0e0h
movd %mm4, %rax movd %mm4, %rax

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadMm5) .globl ASM_PFX(AsmReadMm5)
ASM_PFX(AsmReadMm5): ASM_PFX(AsmReadMm5):
#DB 48h, 0fh, 7eh, 0e8h #DB 48h, 0fh, 7eh, 0e8h
movd %mm5, %rax movd %mm5, %rax

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadMm6) .globl ASM_PFX(AsmReadMm6)
ASM_PFX(AsmReadMm6): ASM_PFX(AsmReadMm6):
#DB 48h, 0fh, 7eh, 0f0h #DB 48h, 0fh, 7eh, 0f0h
movd %mm6, %rax movd %mm6, %rax

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadMm7) .globl ASM_PFX(AsmReadMm7)
ASM_PFX(AsmReadMm7): ASM_PFX(AsmReadMm7):
#DB 48h, 0fh, 7eh, 0f8h #DB 48h, 0fh, 7eh, 0f8h
movd %mm7, %rax movd %mm7, %rax

View File

@ -29,7 +29,7 @@
# IN UINT32 Index # IN UINT32 Index
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadMsr64) .globl ASM_PFX(AsmReadMsr64)
ASM_PFX(AsmReadMsr64): ASM_PFX(AsmReadMsr64):
rdmsr # edx & eax are zero extended rdmsr # edx & eax are zero extended
shl $0x20, %rdx shl $0x20, %rdx

View File

@ -29,7 +29,7 @@
# IN UINT32 PmcIndex # IN UINT32 PmcIndex
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadPmc) .globl ASM_PFX(AsmReadPmc)
ASM_PFX(AsmReadPmc): ASM_PFX(AsmReadPmc):
rdpmc rdpmc
shl $0x20, %rdx shl $0x20, %rdx

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadSs); .globl ASM_PFX(AsmReadSs);
ASM_PFX(AsmReadSs): ASM_PFX(AsmReadSs):
movl %ss, %eax movl %ss, %eax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadTr) .globl ASM_PFX(AsmReadTr)
ASM_PFX(AsmReadTr): ASM_PFX(AsmReadTr):
str %eax str %eax
ret ret

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmReadTsc) .globl ASM_PFX(AsmReadTsc)
ASM_PFX(AsmReadTsc): ASM_PFX(AsmReadTsc):
rdtsc rdtsc
shl $0x20, %rdx shl $0x20, %rdx

View File

@ -1,42 +1,42 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# SetJump.S # SetJump.S
# #
# Abstract: # Abstract:
# #
# Implementation of SetJump() on x86_64 # Implementation of SetJump() on x86_64
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
.extern InternalAssertJumpBuffer; .extern InternalAssertJumpBuffer;
.global ASM_PFX(SetJump) .globl ASM_PFX(SetJump)
ASM_PFX(SetJump): ASM_PFX(SetJump):
push %rcx push %rcx
add $0xffffffffffffffe0,%rsp add $0xffffffffffffffe0,%rsp
call _InternalAssertJumpBuffer call _InternalAssertJumpBuffer
add $0x20,%rsp add $0x20,%rsp
pop %rcx pop %rcx
pop %rdx pop %rdx
mov %rbx,(%rcx) mov %rbx,(%rcx)
mov %rsp,0x8(%rcx) mov %rsp,0x8(%rcx)
mov %rbp,0x10(%rcx) mov %rbp,0x10(%rcx)
mov %rdi,0x18(%rcx) mov %rdi,0x18(%rcx)
mov %rsi,0x20(%rcx) mov %rsi,0x20(%rcx)
mov %r12,0x28(%rcx) mov %r12,0x28(%rcx)
mov %r13,0x30(%rcx) mov %r13,0x30(%rcx)
mov %r14,0x38(%rcx) mov %r14,0x38(%rcx)
mov %r15,0x40(%rcx) mov %r15,0x40(%rcx)
mov %rdx,0x48(%rcx) mov %rdx,0x48(%rcx)
xor %rax,%rax xor %rax,%rax
jmpq *%rdx jmpq *%rdx

View File

@ -1,44 +1,44 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# SwitchStack.S # SwitchStack.S
# #
# Abstract: # Abstract:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Routine Description: # Routine Description:
# #
# Routine for switching stacks with 1 parameter # Routine for switching stacks with 1 parameter
# #
# Arguments: # Arguments:
# #
# (rdi) EntryPoint - Entry point with new stack. # (rdi) EntryPoint - Entry point with new stack.
# (rsi) Context1 - Parameter1 for entry point. # (rsi) Context1 - Parameter1 for entry point.
# (rdx) Context2 - Parameter2 for entry point. # (rdx) Context2 - Parameter2 for entry point.
# (rcx) NewStack - Pointer to new stack. # (rcx) NewStack - Pointer to new stack.
# #
# Returns: # Returns:
# #
# None # None
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(InternalSwitchStack) .globl ASM_PFX(InternalSwitchStack)
ASM_PFX(InternalSwitchStack): ASM_PFX(InternalSwitchStack):
mov %rcx, %rax mov %rcx, %rax
mov %rdx, %rcx mov %rdx, %rcx
mov %r8, %rdx mov %r8, %rdx
lea -0x20(%r9), %rsp lea -0x20(%r9), %rsp
call *%rax call *%rax

View File

@ -29,7 +29,7 @@
# VOID # VOID
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWbinvd) .globl ASM_PFX(AsmWbinvd)
ASM_PFX(AsmWbinvd): ASM_PFX(AsmWbinvd):
wbinvd wbinvd
ret ret

View File

@ -1,36 +1,36 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteCr0.S # WriteCr0.S
# #
# Abstract: # Abstract:
# #
# AsmWriteCr0 function # AsmWriteCr0 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# UINTN # UINTN
# EFIAPI # EFIAPI
# AsmWriteCr0 ( # AsmWriteCr0 (
# UINTN Cr0 # UINTN Cr0
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteCr0) .globl ASM_PFX(AsmWriteCr0)
ASM_PFX(AsmWriteCr0): ASM_PFX(AsmWriteCr0):
mov %rcx,%cr0 mov %rcx,%cr0
mov %rcx,%rax mov %rcx,%rax
ret ret

View File

@ -1,36 +1,36 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteCr2.S # WriteCr2.S
# #
# Abstract: # Abstract:
# #
# AsmWriteCr2 function # AsmWriteCr2 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# UINTN # UINTN
# EFIAPI # EFIAPI
# AsmWriteCr2 ( # AsmWriteCr2 (
# UINTN Cr2 # UINTN Cr2
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteCr2) .globl ASM_PFX(AsmWriteCr2)
ASM_PFX(AsmWriteCr2): ASM_PFX(AsmWriteCr2):
mov %rcx,%cr2 mov %rcx,%cr2
mov %rcx,%rax mov %rcx,%rax
ret ret

View File

@ -1,36 +1,36 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteCr3.S # WriteCr3.S
# #
# Abstract: # Abstract:
# #
# AsmWriteCr3 function # AsmWriteCr3 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# UINTN # UINTN
# EFIAPI # EFIAPI
# AsmWriteCr3 ( # AsmWriteCr3 (
# UINTN Cr3 # UINTN Cr3
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteCr3) .globl ASM_PFX(AsmWriteCr3)
ASM_PFX(AsmWriteCr3): ASM_PFX(AsmWriteCr3):
mov %rcx,%cr3 mov %rcx,%cr3
mov %rcx,%rax mov %rcx,%rax
ret ret

View File

@ -1,36 +1,36 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteCr4.S # WriteCr4.S
# #
# Abstract: # Abstract:
# #
# AsmWriteCr4 function # AsmWriteCr4 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# UINTN # UINTN
# EFIAPI # EFIAPI
# AsmWriteCr4 ( # AsmWriteCr4 (
# UINTN Cr4 # UINTN Cr4
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteCr4) .globl ASM_PFX(AsmWriteCr4)
ASM_PFX(AsmWriteCr4): ASM_PFX(AsmWriteCr4):
mov %rcx,%cr4 mov %rcx,%cr4
mov %rcx,%rax mov %rcx,%rax
ret ret

View File

@ -29,7 +29,7 @@
# UINTN Value # UINTN Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteDr0) .globl ASM_PFX(AsmWriteDr0)
ASM_PFX(AsmWriteDr0): ASM_PFX(AsmWriteDr0):
mov %rcx, %dr0 mov %rcx, %dr0
mov %rcx, %rax mov %rcx, %rax

View File

@ -29,7 +29,7 @@
# UINTN Value # UINTN Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteDr1) .globl ASM_PFX(AsmWriteDr1)
ASM_PFX(AsmWriteDr1): ASM_PFX(AsmWriteDr1):
mov %rcx, %dr1 mov %rcx, %dr1
mov %rcx, %rax mov %rcx, %rax

View File

@ -29,7 +29,7 @@
# UINTN Value # UINTN Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteDr2) .globl ASM_PFX(AsmWriteDr2)
ASM_PFX(AsmWriteDr2): ASM_PFX(AsmWriteDr2):
mov %rcx, %dr2 mov %rcx, %dr2
mov %rcx, %rax mov %rcx, %rax

View File

@ -29,7 +29,7 @@
# UINTN Value # UINTN Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteDr3) .globl ASM_PFX(AsmWriteDr3)
ASM_PFX(AsmWriteDr3): ASM_PFX(AsmWriteDr3):
mov %rcx, %dr3 mov %rcx, %dr3
mov %rcx, %rax mov %rcx, %rax

View File

@ -1,36 +1,36 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteDr4.S # WriteDr4.S
# #
# Abstract: # Abstract:
# #
# AsmWriteDr4 function # AsmWriteDr4 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# UINTN # UINTN
# EFIAPI # EFIAPI
# AsmWriteDr4 ( # AsmWriteDr4 (
# IN UINTN Value # IN UINTN Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteDr4) .globl ASM_PFX(AsmWriteDr4)
ASM_PFX(AsmWriteDr4): ASM_PFX(AsmWriteDr4):
mov %rcx, %dr4 mov %rcx, %dr4
mov %rcx, %rax mov %rcx, %rax
ret ret

View File

@ -1,36 +1,36 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteDr5.S # WriteDr5.S
# #
# Abstract: # Abstract:
# #
# AsmWriteDr5 function # AsmWriteDr5 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# UINTN # UINTN
# EFIAPI # EFIAPI
# AsmWriteDr5 ( # AsmWriteDr5 (
# IN UINTN Value # IN UINTN Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteDr5) .globl ASM_PFX(AsmWriteDr5)
ASM_PFX(AsmWriteDr5): ASM_PFX(AsmWriteDr5):
mov %rcx, %dr5 mov %rcx, %dr5
mov %rcx, %rax mov %rcx, %rax
ret ret

View File

@ -1,36 +1,36 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteDr6.S # WriteDr6.S
# #
# Abstract: # Abstract:
# #
# AsmWriteDr6 function # AsmWriteDr6 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# UINTN # UINTN
# EFIAPI # EFIAPI
# AsmWriteDr6 ( # AsmWriteDr6 (
# IN UINTN Value # IN UINTN Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteDr6) .globl ASM_PFX(AsmWriteDr6)
ASM_PFX(AsmWriteDr6): ASM_PFX(AsmWriteDr6):
mov %rcx, %dr6 mov %rcx, %dr6
mov %rcx, %rax mov %rcx, %rax
ret ret

View File

@ -1,36 +1,36 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteDr7.S # WriteDr7.S
# #
# Abstract: # Abstract:
# #
# AsmWriteDr7 function # AsmWriteDr7 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# UINTN # UINTN
# EFIAPI # EFIAPI
# AsmWriteDr7 ( # AsmWriteDr7 (
# IN UINTN Value # IN UINTN Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteDr7) .globl ASM_PFX(AsmWriteDr7)
ASM_PFX(AsmWriteDr7): ASM_PFX(AsmWriteDr7):
mov %rcx, %dr7 mov %rcx, %dr7
mov %rcx, %rax mov %rcx, %rax
ret ret

View File

@ -1,35 +1,35 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteGdtr.S # WriteGdtr.S
# #
# Abstract: # Abstract:
# #
# AsmWriteGdtr function # AsmWriteGdtr function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# InternalX86WriteGdtr ( # InternalX86WriteGdtr (
# IN CONST IA32_DESCRIPTOR *Idtr # IN CONST IA32_DESCRIPTOR *Idtr
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(InternalX86WriteGdtr) .globl ASM_PFX(InternalX86WriteGdtr)
ASM_PFX(InternalX86WriteGdtr): ASM_PFX(InternalX86WriteGdtr):
lgdt (%rcx) lgdt (%rcx)
ret ret

View File

@ -1,35 +1,35 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006 - 2009, Intel Corporation # Copyright (c) 2006 - 2009, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteIdtr.S # WriteIdtr.S
# #
# Abstract: # Abstract:
# #
# AsmWriteIdtr function # AsmWriteIdtr function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# InternalX86WriteIdtr ( # InternalX86WriteIdtr (
# IN CONST IA32_DESCRIPTOR *Idtr # IN CONST IA32_DESCRIPTOR *Idtr
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(InternalX86WriteIdtr) .globl ASM_PFX(InternalX86WriteIdtr)
ASM_PFX(InternalX86WriteIdtr): ASM_PFX(InternalX86WriteIdtr):
lidt (%rcx) lidt (%rcx)
ret ret

View File

@ -1,35 +1,35 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006 - 2009, Intel Corporation # Copyright (c) 2006 - 2009, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteLdtr.S # WriteLdtr.S
# #
# Abstract: # Abstract:
# #
# AsmWriteLdtr function # AsmWriteLdtr function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# AsmWriteLdtr ( # AsmWriteLdtr (
# IN UINT16 Ldtr # IN UINT16 Ldtr
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteLdtr); .globl ASM_PFX(AsmWriteLdtr);
ASM_PFX(AsmWriteLdtr): ASM_PFX(AsmWriteLdtr):
lldt %cx lldt %cx
ret ret

View File

@ -1,35 +1,35 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteMm0.S # WriteMm0.S
# #
# Abstract: # Abstract:
# #
# AsmWriteMm0 function # AsmWriteMm0 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# AsmWriteMm0 ( # AsmWriteMm0 (
# IN UINT64 Value # IN UINT64 Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteMm0); .globl ASM_PFX(AsmWriteMm0);
ASM_PFX(AsmWriteMm0): ASM_PFX(AsmWriteMm0):
movd %rcx, %xmm0 movd %rcx, %xmm0
ret ret

View File

@ -1,35 +1,35 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteMm1.S # WriteMm1.S
# #
# Abstract: # Abstract:
# #
# AsmWriteMm1 function # AsmWriteMm1 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# AsmWriteMm1 ( # AsmWriteMm1 (
# IN UINT64 Value # IN UINT64 Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteMm1); .globl ASM_PFX(AsmWriteMm1);
ASM_PFX(AsmWriteMm1): ASM_PFX(AsmWriteMm1):
movd %rcx, %mm1 movd %rcx, %mm1
ret ret

View File

@ -1,35 +1,35 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteMm2.S # WriteMm2.S
# #
# Abstract: # Abstract:
# #
# AsmWriteMm2 function # AsmWriteMm2 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# AsmWriteMm2 ( # AsmWriteMm2 (
# IN UINT64 Value # IN UINT64 Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteMm2) .globl ASM_PFX(AsmWriteMm2)
ASM_PFX(AsmWriteMm2): ASM_PFX(AsmWriteMm2):
movd %rcx, %mm2 movd %rcx, %mm2
ret ret

View File

@ -1,35 +1,35 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteMm3.S # WriteMm3.S
# #
# Abstract: # Abstract:
# #
# AsmWriteMm3 function # AsmWriteMm3 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# AsmWriteMm3 ( # AsmWriteMm3 (
# IN UINT64 Value # IN UINT64 Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteMm3) .globl ASM_PFX(AsmWriteMm3)
ASM_PFX(AsmWriteMm3): ASM_PFX(AsmWriteMm3):
movd %rcx, %mm3 movd %rcx, %mm3
ret ret

View File

@ -1,35 +1,35 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteMm4.S # WriteMm4.S
# #
# Abstract: # Abstract:
# #
# AsmWriteMm4 function # AsmWriteMm4 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# AsmWriteMm4 ( # AsmWriteMm4 (
# IN UINT64 Value # IN UINT64 Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteMm4) .globl ASM_PFX(AsmWriteMm4)
ASM_PFX(AsmWriteMm4): ASM_PFX(AsmWriteMm4):
movd %rcx, %mm4 movd %rcx, %mm4
ret ret

View File

@ -1,35 +1,35 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteMm5.S # WriteMm5.S
# #
# Abstract: # Abstract:
# #
# AsmWriteMm5 function # AsmWriteMm5 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# AsmWriteMm5 ( # AsmWriteMm5 (
# IN UINT64 Value # IN UINT64 Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteMm5) .globl ASM_PFX(AsmWriteMm5)
ASM_PFX(AsmWriteMm5): ASM_PFX(AsmWriteMm5):
movd %rcx, %mm5 movd %rcx, %mm5
ret ret

View File

@ -1,35 +1,35 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteMm6.S # WriteMm6.S
# #
# Abstract: # Abstract:
# #
# AsmWriteMm6 function # AsmWriteMm6 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# AsmWriteMm6 ( # AsmWriteMm6 (
# IN UINT64 Value # IN UINT64 Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteMm6) .globl ASM_PFX(AsmWriteMm6)
ASM_PFX(AsmWriteMm6): ASM_PFX(AsmWriteMm6):
movd %rcx, %mm6 movd %rcx, %mm6
ret ret

View File

@ -1,35 +1,35 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006, Intel Corporation # Copyright (c) 2006, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteMm7.S # WriteMm7.S
# #
# Abstract: # Abstract:
# #
# AsmWriteMm7 function # AsmWriteMm7 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EFIAPI # EFIAPI
# AsmWriteMm7 ( # AsmWriteMm7 (
# IN UINT64 Value # IN UINT64 Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteMm7) .globl ASM_PFX(AsmWriteMm7)
ASM_PFX(AsmWriteMm7): ASM_PFX(AsmWriteMm7):
movd %rcx, %mm7 movd %rcx, %mm7
ret ret

View File

@ -1,39 +1,39 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2006 - 2009, Intel Corporation # Copyright (c) 2006 - 2009, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# WriteMsr64.S # WriteMsr64.S
# #
# Abstract: # Abstract:
# #
# AsmWriteMsr64 function # AsmWriteMsr64 function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EdkIIGlueBase.h> #include <EdkIIGlueBase.h>
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# UINT64 # UINT64
# EFIAPI # EFIAPI
# AsmWriteMsr64 ( # AsmWriteMsr64 (
# IN UINT32 Index, # IN UINT32 Index,
# IN UINT64 Value # IN UINT64 Value
# ); # );
# TODO: # TODO:
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.global ASM_PFX(AsmWriteMsr64) .globl ASM_PFX(AsmWriteMsr64)
ASM_PFX(AsmWriteMsr64): ASM_PFX(AsmWriteMsr64):
mov %rdx, %rax mov %rdx, %rax
shr $0x20, %rdx shr $0x20, %rdx
wrmsr wrmsr
ret ret

View File

@ -1,66 +1,66 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2008, Intel Corporation # Copyright (c) 2008, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# EfiCopyMemRep1.S # EfiCopyMemRep1.S
# #
# Abstract: # Abstract:
# #
# CopyMem function # CopyMem function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EfiBind.h> #include <EfiBind.h>
.code: .code:
.global ASM_PFX(EfiCommonLibCopyMem) .globl ASM_PFX(EfiCommonLibCopyMem)
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EfiCommonLibCopyMem ( # EfiCommonLibCopyMem (
# OUT VOID *Destination, # OUT VOID *Destination,
# IN VOID *Source, # IN VOID *Source,
# IN UINTN Count # IN UINTN Count
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
ASM_PFX(EfiCommonLibCopyMem): ASM_PFX(EfiCommonLibCopyMem):
push %rsi push %rsi
push %rdi push %rdi
cmp %rcx,%rdx cmp %rcx,%rdx
je CopyMemDone je CopyMemDone
cmp $0x0,%r8 cmp $0x0,%r8
je CopyMemDone je CopyMemDone
mov %rdx,%rsi mov %rdx,%rsi
mov %rcx,%rdi mov %rcx,%rdi
lea -1(%r8,%rsi,1),%r9 lea -1(%r8,%rsi,1),%r9
cmp %rdi,%rsi cmp %rdi,%rsi
jae CopyBytes jae CopyBytes
cmp %rdi,%r9 cmp %rdi,%r9
jb CopyBytes jb CopyBytes
mov %r9,%rsi mov %r9,%rsi
lea -1(%r8,%rdi,1),%rdi lea -1(%r8,%rdi,1),%rdi
std std
CopyBytes: CopyBytes:
mov %r8,%rcx mov %r8,%rcx
rep movsb %ds:(%rsi),%es:(%rdi) rep movsb %ds:(%rsi),%es:(%rdi)
cld cld
CopyMemDone: CopyMemDone:
pop %rdi pop %rdi
pop %rsi pop %rsi
retq retq

View File

@ -1,54 +1,54 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2008, Intel Corporation # Copyright (c) 2008, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# EfiSetMemRep4.S # EfiSetMemRep4.S
# #
# Abstract: # Abstract:
# #
# SetMem function # SetMem function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EfiBind.h> #include <EfiBind.h>
.code: .code:
.global ASM_PFX(EfiCommonLibCopyMem) .globl ASM_PFX(EfiCommonLibCopyMem)
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EfiCommonLibSetMem ( # EfiCommonLibSetMem (
# OUT VOID *Buffer, # OUT VOID *Buffer,
# IN UINTN Size, # IN UINTN Size,
# IN UINT8 Value # IN UINT8 Value
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
ASM_PFX(EfiCommonLibSetMem): ASM_PFX(EfiCommonLibSetMem):
push %rdi push %rdi
cmp $0x0,%rdx cmp $0x0,%rdx
je SetDone je SetDone
mov %rcx,%rdi mov %rcx,%rdi
mov %r8b,%al mov %r8b,%al
mov %al,%ah mov %al,%ah
shrd $0x10,%eax,%ecx shrd $0x10,%eax,%ecx
shld $0x10,%ecx,%eax shld $0x10,%ecx,%eax
mov %rdx,%rcx mov %rdx,%rcx
shr $0x2,%rcx shr $0x2,%rcx
rep stos %eax,%es:(%rdi) rep stos %eax,%es:(%rdi)
mov %rdx,%rcx mov %rdx,%rcx
and $0x3,%rcx and $0x3,%rcx
rep stos %al,%es:(%rdi) rep stos %al,%es:(%rdi)
SetDone: SetDone:
pop %rdi pop %rdi
retq retq

View File

@ -1,46 +1,46 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2008, Intel Corporation # Copyright (c) 2008, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# EfiZeroMemRep4.S # EfiZeroMemRep4.S
# #
# Abstract: # Abstract:
# #
# ZeroMem function # ZeroMem function
# #
# Notes: # Notes:
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EfiBind.h> #include <EfiBind.h>
.code: .code:
.global ASM_PFX(EfiCommonLibZeroMem) .globl ASM_PFX(EfiCommonLibZeroMem)
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# EfiCommonLibZeroMem ( # EfiCommonLibZeroMem (
# IN VOID *Buffer, # IN VOID *Buffer,
# IN UINTN Size # IN UINTN Size
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
ASM_PFX(EfiCommonLibZeroMem): ASM_PFX(EfiCommonLibZeroMem):
push %rdi push %rdi
xor %rax,%rax xor %rax,%rax
mov %rcx,%rdi mov %rcx,%rdi
mov %rdx,%rcx mov %rdx,%rcx
shr $0x2,%rcx shr $0x2,%rcx
and $0x3,%rdx and $0x3,%rdx
rep stos %eax,%es:(%rdi) rep stos %eax,%es:(%rdi)
mov %rdx,%rcx mov %rdx,%rcx
rep stos %al,%es:(%rdi) rep stos %al,%es:(%rdi)
pop %rdi pop %rdi
retq retq

View File

@ -1,207 +1,207 @@
# #
# Copyright (c) 2004, Intel Corporation # Copyright (c) 2004, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# ProcessorAsms.Asm # ProcessorAsms.Asm
# #
# #
# #
#include "EfiBind.h" #include "EfiBind.h"
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.686P: .686P:
.MMX: .MMX:
#.MODEL SMALL #.MODEL SMALL
.CODE: .CODE:
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
.globl ASM_PFX(TransferControlSetJump) .globl ASM_PFX(TransferControlSetJump)
.globl ASM_PFX(TransferControlLongJump) .globl ASM_PFX(TransferControlLongJump)
.globl ASM_PFX(SwitchStacks) .globl ASM_PFX(SwitchStacks)
.globl ASM_PFX(SwitchIplStacks) .globl ASM_PFX(SwitchIplStacks)
.equ EFI_SUCCESS, 0 #define EFI_SUCCESS 0
.equ EFI_WARN_RETURN_FROM_LONG_JUMP, 5 #define EFI_WARN_RETURN_FROM_LONG_JUMP 5
# #
# typedef struct { # typedef struct {
# UINT32 ebx; # UINT32 ebx;
# UINT32 esi; # UINT32 esi;
# UINT32 edi; # UINT32 edi;
# UINT32 ebp; # UINT32 ebp;
# UINT32 esp; # UINT32 esp;
# UINT32 eip; # UINT32 eip;
#} EFI_JUMP_BUFFER; #} EFI_JUMP_BUFFER;
# #
#typedef #typedef
#EFI_STATUS #EFI_STATUS
#(EFIAPI *EFI_PEI_TRANSFER_CONTROL_SET_JUMP) ( #(EFIAPI *EFI_PEI_TRANSFER_CONTROL_SET_JUMP) (
# IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This, # IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This,
# OUT EFI_JUMP_BUFFER *Context # OUT EFI_JUMP_BUFFER *Context
# ); # );
# #
#Routine Description: #Routine Description:
# #
# This routine implements the IA32 variant of the SetJump call. Its # This routine implements the IA32 variant of the SetJump call. Its
# responsibility is to store system state information for a possible # responsibility is to store system state information for a possible
# subsequent LongJump. # subsequent LongJump.
# #
#Arguments: #Arguments:
# #
# Pointer to CPU context save buffer. # Pointer to CPU context save buffer.
# #
#Returns: #Returns:
# #
# EFI_SUCCESS # EFI_SUCCESS
# #
ASM_PFX(TransferControlSetJump): ASM_PFX(TransferControlSetJump):
push %ebp push %ebp
mov %esp,%ebp mov %esp,%ebp
mov 0x8(%ebp),%eax mov 0x8(%ebp),%eax
mov 0xc(%ebp),%ecx mov 0xc(%ebp),%ecx
mov %ebx,(%ecx) mov %ebx,(%ecx)
mov %esi,0x4(%ecx) mov %esi,0x4(%ecx)
mov %edi,0x8(%ecx) mov %edi,0x8(%ecx)
mov 0x0(%ebp),%eax mov 0x0(%ebp),%eax
mov %eax,0xc(%ecx) mov %eax,0xc(%ecx)
lea 0x4(%ebp),%eax lea 0x4(%ebp),%eax
mov %eax,0x10(%ecx) mov %eax,0x10(%ecx)
mov 0x4(%ebp),%eax mov 0x4(%ebp),%eax
mov %eax,0x14(%ecx) mov %eax,0x14(%ecx)
mov $0x0,%eax mov $0x0,%eax
leave leave
ret ret
#typedef #typedef
#EFI_STATUS #EFI_STATUS
#(EFIAPI *EFI_PEI_TRANSFER_CONTROL_LONG_JUMP) ( #(EFIAPI *EFI_PEI_TRANSFER_CONTROL_LONG_JUMP) (
# IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This, # IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This,
# IN EFI_JUMP_BUFFER *Context # IN EFI_JUMP_BUFFER *Context
# ); # );
# #
# Routine Description: # Routine Description:
# #
# This routine implements the IA32 variant of the LongJump call. Its # This routine implements the IA32 variant of the LongJump call. Its
# responsibility is restore the system state to the Context Buffer and # responsibility is restore the system state to the Context Buffer and
# pass control back. # pass control back.
# #
# Arguments: # Arguments:
# #
# Pointer to CPU context save buffer. # Pointer to CPU context save buffer.
# #
# Returns: # Returns:
# #
# EFI_WARN_RETURN_FROM_LONG_JUMP # EFI_WARN_RETURN_FROM_LONG_JUMP
# #
ASM_PFX(TransferControlLongJump): ASM_PFX(TransferControlLongJump):
push %ebp push %ebp
mov %esp,%ebp mov %esp,%ebp
push %ebx push %ebx
push %esi push %esi
push %edi push %edi
mov 0x8(%ebp),%eax mov 0x8(%ebp),%eax
mov $0x5,%eax mov $0x5,%eax
mov 0xc(%ebp),%ecx mov 0xc(%ebp),%ecx
mov (%ecx),%ebx mov (%ecx),%ebx
mov 0x4(%ecx),%esi mov 0x4(%ecx),%esi
mov 0x8(%ecx),%edi mov 0x8(%ecx),%edi
mov 0xc(%ecx),%ebp mov 0xc(%ecx),%ebp
mov 0x10(%ecx),%esp mov 0x10(%ecx),%esp
add $0x4,%esp add $0x4,%esp
jmp *0x14(%ecx) jmp *0x14(%ecx)
mov $0x5,%eax mov $0x5,%eax
pop %edi pop %edi
pop %esi pop %esi
pop %ebx pop %ebx
leave leave
ret ret
# #
# Routine Description: # Routine Description:
# This allows the caller to switch the stack and goes to the new entry point # This allows the caller to switch the stack and goes to the new entry point
# #
# Arguments: # Arguments:
# EntryPoint - Pointer to the location to enter # EntryPoint - Pointer to the location to enter
# Parameter - Parameter to pass in # Parameter - Parameter to pass in
# NewStack - New Location of the stack # NewStack - New Location of the stack
# NewBsp - New BSP # NewBsp - New BSP
# #
# Returns: # Returns:
# #
# Nothing. Goes to the Entry Point passing in the new parameters # Nothing. Goes to the Entry Point passing in the new parameters
# #
#SwitchStacks PROC C \ #SwitchStacks PROC C \
# EntryPoint:PTR DWORD, \ # EntryPoint:PTR DWORD, \
# Parameter:DWORD, \ # Parameter:DWORD, \
# NewStack:PTR DWORD, \ # NewStack:PTR DWORD, \
# NewBsp:PTR DWORD # NewBsp:PTR DWORD
ASM_PFX(SwitchStacks): ASM_PFX(SwitchStacks):
push %ebp push %ebp
mov %esp,%ebp mov %esp,%ebp
push %ebx push %ebx
mov 0x14(%ebp),%eax mov 0x14(%ebp),%eax
mov 0xc(%ebp),%ebx mov 0xc(%ebp),%ebx
mov 0x8(%ebp),%ecx mov 0x8(%ebp),%ecx
mov 0x10(%ebp),%eax mov 0x10(%ebp),%eax
mov %eax,%esp mov %eax,%esp
push %ebx push %ebx
push $0x0 push $0x0
jmp *%ecx jmp *%ecx
pop %ebx pop %ebx
leave leave
ret ret
# #
# Routine Description: # Routine Description:
# This allows the caller to switch the stack and goes to the new entry point # This allows the caller to switch the stack and goes to the new entry point
# #
# Arguments: # Arguments:
# EntryPoint - Pointer to the location to enter # EntryPoint - Pointer to the location to enter
# Parameter1/Parameter2 - Parameter to pass in # Parameter1/Parameter2 - Parameter to pass in
# NewStack - New Location of the stack # NewStack - New Location of the stack
# NewBsp - New BSP # NewBsp - New BSP
# #
# Returns: # Returns:
# #
# Nothing. Goes to the Entry Point passing in the new parameters # Nothing. Goes to the Entry Point passing in the new parameters
# #
#SwitchIplStacks PROC C \ #SwitchIplStacks PROC C \
# EntryPoint:PTR DWORD, \ # EntryPoint:PTR DWORD, \
# Parameter1:DWORD, \ # Parameter1:DWORD, \
# Parameter2:DWORD, \ # Parameter2:DWORD, \
# NewStack:PTR DWORD, \ # NewStack:PTR DWORD, \
# NewBsp:PTR DWORD # NewBsp:PTR DWORD
ASM_PFX(SwitchIplStacks): ASM_PFX(SwitchIplStacks):
push %ebp push %ebp
mov %esp,%ebp mov %esp,%ebp
push %ebx push %ebx
mov 0x18(%ebp),%eax mov 0x18(%ebp),%eax
mov 0xc(%ebp),%ebx mov 0xc(%ebp),%ebx
mov 0x10(%ebp),%edx mov 0x10(%ebp),%edx
mov 0x8(%ebp),%ecx mov 0x8(%ebp),%ecx
mov 0x14(%ebp),%eax mov 0x14(%ebp),%eax
mov %eax,%esp mov %eax,%esp
push %edx push %edx
push %ebx push %ebx
call *%ecx call *%ecx
pop %ebx pop %ebx
leave leave
ret ret
#SwitchIplStacks ENDP #SwitchIplStacks ENDP

View File

@ -46,7 +46,7 @@
.section .rtcode, "ax", "progbits" .section .rtcode, "ax", "progbits"
.align 32 .align 32
.type RtPioICacheFlush# ,@function .type RtPioICacheFlush# ,@function
.global RtPioICacheFlush# .globl RtPioICacheFlush#
// Function compile flags: /Ogsy // Function compile flags: /Ogsy
.section .rtcode .section .rtcode

View File

@ -1,135 +1,135 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2008, Intel Corporation # Copyright (c) 2008, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# ProcessorAsms.S # ProcessorAsms.S
# #
# Abstract: # Abstract:
# This is separated from processor.c to allow this functions to be built with /O1 # This is separated from processor.c to allow this functions to be built with /O1
# #
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EfiBind.h> #include <EfiBind.h>
.text .text
.global ASM_PFX(SwitchStacks) .globl ASM_PFX(SwitchStacks)
.global ASM_PFX(TransferControlSetJump) .globl ASM_PFX(TransferControlSetJump)
.global ASM_PFX(TransferControlLongJump) .globl ASM_PFX(TransferControlLongJump)
# #
# Routine Description: # Routine Description:
# This allows the caller to switch the stack and goes to the new entry point # This allows the caller to switch the stack and goes to the new entry point
# #
# Arguments: # Arguments:
# EntryPoint - Pointer to the location to enter // rcx # EntryPoint - Pointer to the location to enter // rcx
# Parameter - Parameter to pass in // rdx # Parameter - Parameter to pass in // rdx
# NewStack - New Location of the stack // r8 # NewStack - New Location of the stack // r8
# NewBsp - New BSP // r9 - not used # NewBsp - New BSP // r9 - not used
# #
# Returns: # Returns:
# Nothing. Goes to the Entry Point passing in the new parameters # Nothing. Goes to the Entry Point passing in the new parameters
# #
ASM_PFX(SwitchStacks): ASM_PFX(SwitchStacks):
# Adjust stack for # Adjust stack for
# 1) leave 4 registers space # 1) leave 4 registers space
# 2) let it 16 bytes aligned after call # 2) let it 16 bytes aligned after call
sub $0x20,%r8 sub $0x20,%r8
and -0x10,%r8w # do not assume 16 bytes aligned and -0x10,%r8w # do not assume 16 bytes aligned
mov %r8,%rsp mov %r8,%rsp
mov %rcx,%r10 mov %rcx,%r10
mov %rdx,%rcx mov %rdx,%rcx
callq *%r10 callq *%r10
# #
# no ret as we have a new stack and we jumped to the new location # no ret as we have a new stack and we jumped to the new location
# #
ret ret
#SwitchStacks ENDP #SwitchStacks ENDP
.equ EFI_SUCCESS, 0 .equ EFI_SUCCESS, 0
.equ EFI_WARN_RETURN_FROM_LONG_JUMP, 5 .equ EFI_WARN_RETURN_FROM_LONG_JUMP, 5
# #
#Routine Description: #Routine Description:
# #
# This routine implements the x64 variant of the SetJump call. Its # This routine implements the x64 variant of the SetJump call. Its
# responsibility is to store system state information for a possible # responsibility is to store system state information for a possible
# subsequent LongJump. # subsequent LongJump.
# #
#Arguments: #Arguments:
# #
# Pointer to CPU context save buffer. # Pointer to CPU context save buffer.
# #
#Returns: #Returns:
# #
# EFI_SUCCESS # EFI_SUCCESS
# #
# EFI_STATUS # EFI_STATUS
# EFIAPI # EFIAPI
# TransferControlLongJump ( # TransferControlLongJump (
# IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This, # IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This,
# IN EFI_JUMP_BUFFER *Jump # IN EFI_JUMP_BUFFER *Jump
# ); # );
# #
# rcx - *This # rcx - *This
# rdx - JumpBuffer # rdx - JumpBuffer
# #
ASM_PFX(TransferControlSetJump): ASM_PFX(TransferControlSetJump):
mov %rbx,(%rdx) mov %rbx,(%rdx)
mov %rsp,0x8(%rdx) mov %rsp,0x8(%rdx)
mov %rbp,0x10(%rdx) mov %rbp,0x10(%rdx)
mov %rdi,0x18(%rdx) mov %rdi,0x18(%rdx)
mov %rsi,0x20(%rdx) mov %rsi,0x20(%rdx)
mov %r10,0x28(%rdx) mov %r10,0x28(%rdx)
mov %r11,0x30(%rdx) mov %r11,0x30(%rdx)
mov %r12,0x38(%rdx) mov %r12,0x38(%rdx)
mov %r13,0x40(%rdx) mov %r13,0x40(%rdx)
mov %r14,0x48(%rdx) mov %r14,0x48(%rdx)
mov %r15,0x50(%rdx) mov %r15,0x50(%rdx)
mov (%rsp),%rax mov (%rsp),%rax
mov %rax,0x58(%rdx) mov %rax,0x58(%rdx)
mov $0x0,%rax mov $0x0,%rax
retq retq
# #
# EFI_STATUS # EFI_STATUS
# EFIAPI # EFIAPI
# TransferControlLongJump ( # TransferControlLongJump (
# IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This, // rcx # IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This, // rcx
# IN EFI_JUMP_BUFFER *Jump // rdx # IN EFI_JUMP_BUFFER *Jump // rdx
# ); # );
# #
# #
ASM_PFX(TransferControlLongJump): ASM_PFX(TransferControlLongJump):
# set return from SetJump to EFI_WARN_RETURN_FROM_LONG_JUMP # set return from SetJump to EFI_WARN_RETURN_FROM_LONG_JUMP
mov $0x5,%rax mov $0x5,%rax
mov (%rdx),%rbx mov (%rdx),%rbx
mov 0x8(%rdx),%rsp mov 0x8(%rdx),%rsp
mov 0x10(%rdx),%rbp mov 0x10(%rdx),%rbp
mov 0x18(%rdx),%rdi mov 0x18(%rdx),%rdi
mov 0x20(%rdx),%rsi mov 0x20(%rdx),%rsi
mov 0x28(%rdx),%r10 mov 0x28(%rdx),%r10
mov 0x30(%rdx),%r11 mov 0x30(%rdx),%r11
mov 0x38(%rdx),%r12 mov 0x38(%rdx),%r12
mov 0x40(%rdx),%r13 mov 0x40(%rdx),%r13
mov 0x48(%rdx),%r14 mov 0x48(%rdx),%r14
mov 0x50(%rdx),%r15 mov 0x50(%rdx),%r15
add $0x8,%rsp add $0x8,%rsp
jmpq *0x58(%rdx) jmpq *0x58(%rdx)
mov $0x5,%rax mov $0x5,%rax
retq retq

View File

@ -1,78 +1,78 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2008, Intel Corporation # Copyright (c) 2008, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# SupportItpDebug.S # SupportItpDebug.S
# #
# Abstract: # Abstract:
# #
# This is the code for debuging X64, to add a break hook at loading every module # This is the code for debuging X64, to add a break hook at loading every module
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EfiBind.h> #include <EfiBind.h>
.text .text
.global ASM_PFX(AsmEfiSetBreakSupport) .globl ASM_PFX(AsmEfiSetBreakSupport)
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# AsmEfiSetBreakSupport ( # AsmEfiSetBreakSupport (
# IN UINTN LoadAddr // rcx # IN UINTN LoadAddr // rcx
# ) # )
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
ASM_PFX(AsmEfiSetBreakSupport): ASM_PFX(AsmEfiSetBreakSupport):
movw $60000, %dx movw $60000, %dx
outl %eax, %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
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 ret

View File

@ -1,61 +1,61 @@
#/*++ #/*++
# #
#Copyright (c) 2008, Intel Corporation #Copyright (c) 2008, Intel Corporation
#All rights reserved. This program and the accompanying materials #All rights reserved. This program and the accompanying materials
#are licensed and made available under the terms and conditions of the BSD License #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 #which accompanies this distribution. The full text of the license may be found at
#http://opensource.org/licenses/bsd-license.php #http://opensource.org/licenses/bsd-license.php
# #
#THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, #THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
#WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
#Module Name: #Module Name:
# #
#CpuFlushCache.c #CpuFlushCache.c
# #
#Abstract: #Abstract:
# #
#Cpu Flush Cache Function. #Cpu Flush Cache Function.
# #
#--*/ #--*/
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
#include <EfiBind.h> #include <EfiBind.h>
.586p: .586p:
#.MODEL flat,C #.MODEL flat,C
.code: .code:
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
.global ASM_PFX(EfiCpuFlushCache) .globl ASM_PFX(EfiCpuFlushCache)
# #
#// #//
#// Cache Flush Routine. #// Cache Flush Routine.
#// #//
#EFI_STATUS #EFI_STATUS
#EfiCpuFlushCache ( #EfiCpuFlushCache (
#IN EFI_PHYSICAL_ADDRESS Start, #IN EFI_PHYSICAL_ADDRESS Start,
# IN UINT64 Length # IN UINT64 Length
#) #)
#/*++ #/*++
# #
#Routine Description: #Routine Description:
# #
#Flush cache with specified range. #Flush cache with specified range.
# #
#Arguments: #Arguments:
# #
#Start - Start address #Start - Start address
# Length - Length in bytes # Length - Length in bytes
# #
#Returns: #Returns:
# #
#Status code #Status code
# #
#EFI_SUCCESS - success #EFI_SUCCESS - success
# #
#--*/ #--*/
ASM_PFX(EfiCpuFlushCache): ASM_PFX(EfiCpuFlushCache):
wbinvd wbinvd
xorl %eax, %eax xorl %eax, %eax
ret ret

View File

@ -26,7 +26,7 @@
// //
// Exports // Exports
// //
.global GetEsalEntryPoint .globl GetEsalEntryPoint
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------

View File

@ -1,37 +1,37 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# Copyright (c) 2008, Intel Corporation # Copyright (c) 2008, Intel Corporation
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # 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 # which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php # http://opensource.org/licenses/bsd-license.php
# #
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# #
# Module Name: # Module Name:
# #
# RuntimeLibAsm.S # RuntimeLibAsm.S
# #
# Abstract: # Abstract:
# #
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#include <EfiBind.h> #include <EfiBind.h>
.text .text
.global ASM_PFX(EfiCpuFlushCache) .globl ASM_PFX(EfiCpuFlushCache)
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#EFI_STATUS #EFI_STATUS
#EfiCpuFlushCache ( #EfiCpuFlushCache (
# IN EFI_PHYSICAL_ADDRESS Start, # IN EFI_PHYSICAL_ADDRESS Start,
# IN UINT64 Length # IN UINT64 Length
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
ASM_PFX(EfiCpuFlushCache): ASM_PFX(EfiCpuFlushCache):
wbinvd wbinvd
mov $0, %rax mov $0, %rax
ret ret

View File

@ -73,7 +73,7 @@ ASM_PFX(Thunk16):
pop %ecx pop %ecx
rep movsl %ds:(%esi),%es:(%edi) #; copy context to 16-bit stack rep movsl %ds:(%esi),%es:(%edi) #; copy context to 16-bit stack
pop %ebx #; ebx <- 16-bit stack offset pop %ebx #; ebx <- 16-bit stack offset
mov $L_Label1,%eax mov $L_Lable1,%eax
stos %eax,%es:(%edi) stos %eax,%es:(%edi)
movl %cs,%eax movl %cs,%eax
stos %ax,%es:(%edi) stos %ax,%es:(%edi)

View File

@ -1,48 +1,48 @@
#***************************************************************************** #*****************************************************************************
#* #*
#* Copyright (c) 2008, Intel Corporation #* Copyright (c) 2008, Intel Corporation
#* All rights reserved. This program and the accompanying materials #* All rights reserved. This program and the accompanying materials
#* are licensed and made available under the terms and conditions of the BSD License #* 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 #* which accompanies this distribution. The full text of the license may be found at
#* http://opensource.org/licenses/bsd-license.php #* http://opensource.org/licenses/bsd-license.php
#* #*
#* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, #* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
#* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#* #*
#* Module Name: #* Module Name:
#* #*
#* Fx.S #* Fx.S
#* #*
#* Abstract: #* Abstract:
#* #*
#* AsmFxRestore and AsmFxSave function #* AsmFxRestore and AsmFxSave function
#* #*
#***************************************************************************** #*****************************************************************************
#include <EfiBind.h> #include <EfiBind.h>
.global ASM_PFX(AsmFxSave) .globl ASM_PFX(AsmFxSave)
.global ASM_PFX(AsmFxRestore) .globl ASM_PFX(AsmFxRestore)
.text .text
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# AsmFxSave ( # AsmFxSave (
# OUT IA32_FX_BUFFER *Buffer # OUT IA32_FX_BUFFER *Buffer
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
ASM_PFX(AsmFxSave): ASM_PFX(AsmFxSave):
fxsave (%rcx) fxsave (%rcx)
retq retq
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# VOID # VOID
# AsmFxRestore ( # AsmFxRestore (
# IN CONST IA32_FX_BUFFER *Buffer # IN CONST IA32_FX_BUFFER *Buffer
# ); # );
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
ASM_PFX(AsmFxRestore): ASM_PFX(AsmFxRestore):
fxrstor (%rcx) fxrstor (%rcx)
retq retq