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