mirror of https://github.com/acidanthera/audk.git
Add .S file for GCC tool-chain for EfiCommonLib.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5748 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
de4e6bf963
commit
f1694d2768
|
@ -99,6 +99,10 @@ COMPONENT_TYPE = LIBRARY
|
||||||
# x64/EfiSetMem.asm | INTEL
|
# x64/EfiSetMem.asm | INTEL
|
||||||
# x64/EfiZeroMem.asm | INTEL
|
# x64/EfiZeroMem.asm | INTEL
|
||||||
|
|
||||||
|
x64/EfiCopyMemRep1.S | GCC
|
||||||
|
x64/EfiSetMemRep4.S | GCC
|
||||||
|
x64/EfiZeroMemRep4.S | GCC
|
||||||
|
|
||||||
Math.c
|
Math.c
|
||||||
|
|
||||||
[includes.common]
|
[includes.common]
|
||||||
|
|
|
@ -0,0 +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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +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
|
|
@ -0,0 +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
|
||||||
|
retq
|
Loading…
Reference in New Issue