-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# CpuIdEx.S
-#
-# Abstract:
-#
-# AsmCpuidEx function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
- .686:
- .code:
-
-#------------------------------------------------------------------------------
-# 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 %ebx
- push %ebp
- movl %esp, %ebp
- movl 12(%ebp), %eax
- movl 16(%ebp), %ecx
- cpuid
- push %ecx
- movl 20(%ebp), %ecx
- jecxz L1
- movl %eax, (%ecx)
-L1:
- movl 24(%ebp), %ecx
- jecxz L2
- movl %ebx, (%ecx)
-L2:
- movl 28(%ebp), %ecx
- jecxz L3
- popl (%ecx)
-L3:
- movl 32(%ebp), %edx
- jecxz L4
- movl %edx, (%ecx)
-L4:
- movl 12(%ebp), %eax
- leave
- pop %ebx
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CpuIdEx.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmCpuidEx function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+ .686:\r
+ .code:\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT32\r
+# EFIAPI\r
+# AsmCpuidEx (\r
+# IN UINT32 RegisterInEax,\r
+# IN UINT32 RegisterInEcx,\r
+# OUT UINT32 *RegisterOutEax OPTIONAL,\r
+# OUT UINT32 *RegisterOutEbx OPTIONAL,\r
+# OUT UINT32 *RegisterOutEcx OPTIONAL,\r
+# OUT UINT32 *RegisterOutEdx OPTIONAL\r
+# )\r
+#------------------------------------------------------------------------------\r
+.globl ASM_PFX(AsmCpuidEx)\r
+ASM_PFX(AsmCpuidEx):\r
+ push %ebx\r
+ push %ebp\r
+ movl %esp, %ebp\r
+ movl 12(%ebp), %eax\r
+ movl 16(%ebp), %ecx\r
+ cpuid\r
+ push %ecx\r
+ movl 20(%ebp), %ecx\r
+ jecxz L1\r
+ movl %eax, (%ecx)\r
+L1:\r
+ movl 24(%ebp), %ecx\r
+ jecxz L2\r
+ movl %ebx, (%ecx)\r
+L2:\r
+ movl 28(%ebp), %ecx\r
+ jecxz L3\r
+ popl (%ecx)\r
+L3:\r
+ movl 32(%ebp), %edx\r
+ jecxz L4\r
+ movl %edx, (%ecx)\r
+L4:\r
+ movl 12(%ebp), %eax\r
+ leave\r
+ pop %ebx\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# DivU64x32.S
-#
-# Abstract:
-#
-# Calculate the quotient of a 64-bit integer by a 32-bit integer
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMathDivU64x32)
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# InternalMathDivU64x32 (
-# IN UINT64 Dividend,
-# IN UINT32 Divisor
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMathDivU64x32):
- movl 8(%esp), %eax
- movl 12(%esp), %ecx
- xorl %edx, %edx
- divl %ecx
- push %eax # save quotient on stack
- movl 8(%esp), %eax
- divl %ecx
- pop %edx # restore high-order dword of the quotient
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# DivU64x32.S\r
+#\r
+# Abstract:\r
+#\r
+# Calculate the quotient of a 64-bit integer by a 32-bit integer\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMathDivU64x32)\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# InternalMathDivU64x32 (\r
+# IN UINT64 Dividend,\r
+# IN UINT32 Divisor\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMathDivU64x32):\r
+ movl 8(%esp), %eax\r
+ movl 12(%esp), %ecx\r
+ xorl %edx, %edx\r
+ divl %ecx\r
+ push %eax # save quotient on stack\r
+ movl 8(%esp), %eax\r
+ divl %ecx\r
+ pop %edx # restore high-order dword of the quotient\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# LShiftU64.S
-#
-# Abstract:
-#
-# 64-bit left shift function for IA-32
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMathLShiftU64)
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# InternalMathLShiftU64 (
-# IN UINT64 Operand,
-# IN UINTN Count
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMathLShiftU64):
- movb 12(%esp), %cl
- xorl %eax, %eax
- movl 4(%esp), %edx
- testb $32, %cl # Count >= 32?
- cmovz %edx, %eax
- cmovz 0x8(%esp), %edx
- shld %cl, %eax, %edx
- shl %cl, %eax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# LShiftU64.S\r
+#\r
+# Abstract:\r
+#\r
+# 64-bit left shift function for IA-32\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMathLShiftU64)\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# InternalMathLShiftU64 (\r
+# IN UINT64 Operand,\r
+# IN UINTN Count\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMathLShiftU64):\r
+ movb 12(%esp), %cl\r
+ xorl %eax, %eax\r
+ movl 4(%esp), %edx\r
+ testb $32, %cl # Count >= 32?\r
+ cmovz %edx, %eax\r
+ cmovz 0x8(%esp), %edx\r
+ shld %cl, %eax, %edx\r
+ shl %cl, %eax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# LongJump.S
-#
-# Abstract:
-#
-# Implementation of _LongJump() on IA-32.
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalLongJump)
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# InternalLongJump (
-# IN BASE_LIBRARY_JUMP_BUFFER *JumpBuffer,
-# IN UINTN Value
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalLongJump):
- pop %eax # skip return address
- pop %edx # edx <- JumpBuffer
- pop %eax # eax <- Value
- movl (%edx), %ebx
- movl 4(%edx), %esi
- movl 8(%edx), %edi
- movl 12(%edx), %ebp
- movl 16(%edx), %esp
- jmp *20(%edx) # restore "eip"
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# LongJump.S\r
+#\r
+# Abstract:\r
+#\r
+# Implementation of _LongJump() on IA-32.\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalLongJump)\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# InternalLongJump (\r
+# IN BASE_LIBRARY_JUMP_BUFFER *JumpBuffer,\r
+# IN UINTN Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalLongJump):\r
+ pop %eax # skip return address\r
+ pop %edx # edx <- JumpBuffer\r
+ pop %eax # eax <- Value\r
+ movl (%edx), %ebx\r
+ movl 4(%edx), %esi\r
+ movl 8(%edx), %edi\r
+ movl 12(%edx), %ebp\r
+ movl 16(%edx), %esp\r
+ jmp *20(%edx) # restore "eip"\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# MultU64x32.S
-#
-# Abstract:
-#
-# Calculate the product of a 64-bit integer and a 32-bit integer
-#
-#------------------------------------------------------------------------------
-
- .386:
- .code:
-
-.globl ASM_PFX(InternalMathMultU64x32)
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# InternalMathMultU64x32 (
-# IN UINT64 Multiplicand,
-# IN UINT32 Multiplier
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMathMultU64x32):
- movl 12(%esp), %ecx
- movl %ecx, %eax
- imull 8(%esp), %ecx # overflow not detectable
- mull 0x4(%esp)
- addl %ecx, %edx
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# MultU64x32.S\r
+#\r
+# Abstract:\r
+#\r
+# Calculate the product of a 64-bit integer and a 32-bit integer\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+ .386:\r
+ .code:\r
+\r
+.globl ASM_PFX(InternalMathMultU64x32)\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# InternalMathMultU64x32 (\r
+# IN UINT64 Multiplicand,\r
+# IN UINT32 Multiplier\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMathMultU64x32):\r
+ movl 12(%esp), %ecx\r
+ movl %ecx, %eax\r
+ imull 8(%esp), %ecx # overflow not detectable\r
+ mull 0x4(%esp)\r
+ addl %ecx, %edx\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# RShiftU64.S
-#
-# Abstract:
-#
-# 64-bit logical right shift function for IA-32
-#
-#------------------------------------------------------------------------------
-
- .686:
- .code:
-
-.globl ASM_PFX(InternalMathRShiftU64)
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# InternalMathRShiftU64 (
-# IN UINT64 Operand,
-# IN UINTN Count
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMathRShiftU64):
- movb 12(%esp), %cl # cl <- Count
- xorl %edx, %edx
- movl 8(%esp), %eax
- testb $32, %cl # Count >= 32?
- cmovz %eax, %edx
- cmovz 0x4(%esp), %eax
- shrdl %cl, %edx, %eax
- shr %cl, %edx
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# RShiftU64.S\r
+#\r
+# Abstract:\r
+#\r
+# 64-bit logical right shift function for IA-32\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+ .686:\r
+ .code:\r
+\r
+.globl ASM_PFX(InternalMathRShiftU64)\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# InternalMathRShiftU64 (\r
+# IN UINT64 Operand,\r
+# IN UINTN Count\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMathRShiftU64):\r
+ movb 12(%esp), %cl # cl <- Count\r
+ xorl %edx, %edx\r
+ movl 8(%esp), %eax\r
+ testb $32, %cl # Count >= 32?\r
+ cmovz %eax, %edx\r
+ cmovz 0x4(%esp), %eax\r
+ shrdl %cl, %edx, %eax\r
+ shr %cl, %edx\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# CpuId.S
-#
-# Abstract:
-#
-# AsmCpuid function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# InternalMathSwapBytes64 (
-# IN UINT64 Operand
-# );
-#------------------------------------------------------------------------------
-.globl ASM_PFX(InternalMathSwapBytes64)
-ASM_PFX(InternalMathSwapBytes64):
- movl 8(%esp), %eax # eax <- upper 32 bits
- movl 4(%esp), %edx # edx <- lower 32 bits
- bswapl %eax
- bswapl %edx
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CpuId.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmCpuid function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# InternalMathSwapBytes64 (\r
+# IN UINT64 Operand\r
+# );\r
+#------------------------------------------------------------------------------\r
+.globl ASM_PFX(InternalMathSwapBytes64)\r
+ASM_PFX(InternalMathSwapBytes64):\r
+ movl 8(%esp), %eax # eax <- upper 32 bits\r
+ movl 4(%esp), %edx # edx <- lower 32 bits\r
+ bswapl %eax\r
+ bswapl %edx\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# CpuBreakpoint.S
-#
-# Abstract:
-#
-# Implementation of CpuBreakpoint() on x86_64
-#
-#------------------------------------------------------------------------------
-
-.global ASM_PFX(CpuBreakpoint)
-ASM_PFX(CpuBreakpoint):
- int $0x3
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CpuBreakpoint.S\r
+#\r
+# Abstract:\r
+#\r
+# Implementation of CpuBreakpoint() on x86_64\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.global ASM_PFX(CpuBreakpoint)\r
+ASM_PFX(CpuBreakpoint):\r
+ int $0x3\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# CpuId.S
-#
-# Abstract:
-#
-# AsmCpuid function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-# 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
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CpuId.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmCpuid function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# AsmCpuid (\r
+# IN UINT32 RegisterInEax,\r
+# OUT UINT32 *RegisterOutEax OPTIONAL,\r
+# OUT UINT32 *RegisterOutEbx OPTIONAL,\r
+# OUT UINT32 *RegisterOutEcx OPTIONAL,\r
+# OUT UINT32 *RegisterOutEdx OPTIONAL\r
+# )\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmCpuid)\r
+ASM_PFX(AsmCpuid):\r
+ push %rbx\r
+ mov %ecx, %eax\r
+ push %rax # save Index on stack\r
+ push %rdx\r
+ cpuid\r
+ test %r9, %r9\r
+ jz L1\r
+ mov %ecx, (%r9)\r
+L1:\r
+ pop %rcx\r
+ jrcxz L2\r
+ mov %eax, (%rcx)\r
+L2:\r
+ mov %r8, %rcx\r
+ jrcxz L3\r
+ mov %ebx, (%rcx)\r
+L3:\r
+ mov 0x38(%rsp), %rcx\r
+ jrcxz L4\r
+ mov %edx, (%rcx)\r
+L4:\r
+ pop %rax # restore Index to rax as return value\r
+ pop %rbx\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# CpuIdEx.S
-#
-# Abstract:
-#
-# AsmCpuidEx function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-# 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 # save Index on stack
- 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 # restore Index to rax as return value
- pop %rbx
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CpuIdEx.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmCpuidEx function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT32\r
+# EFIAPI\r
+# AsmCpuidEx (\r
+# IN UINT32 RegisterInEax,\r
+# IN UINT32 RegisterInEcx,\r
+# OUT UINT32 *RegisterOutEax OPTIONAL,\r
+# OUT UINT32 *RegisterOutEbx OPTIONAL,\r
+# OUT UINT32 *RegisterOutEcx OPTIONAL,\r
+# OUT UINT32 *RegisterOutEdx OPTIONAL\r
+# )\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmCpuidEx)\r
+ASM_PFX(AsmCpuidEx):\r
+ push %rbx\r
+ movl %ecx,%eax\r
+ movl %edx,%ecx\r
+ push %rax # save Index on stack\r
+ cpuid\r
+ mov 0x38(%rsp), %r10\r
+ test %r10, %r10\r
+ jz L1\r
+ mov %ecx,(%r10)\r
+L1: \r
+ mov %r8, %rcx\r
+ jrcxz L2\r
+ movl %eax,(%rcx)\r
+L2: \r
+ mov %r9, %rcx\r
+ jrcxz L3\r
+ mov %ebx, (%rcx)\r
+L3: \r
+ mov 0x40(%rsp), %rcx\r
+ jrcxz L4\r
+ mov %edx, (%rcx)\r
+L4: \r
+ pop %rax # restore Index to rax as return value\r
+ pop %rbx\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# DisablePaging64.S
-#
-# Abstract:
-#
-# AsmDisablePaging64 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# InternalX86DisablePaging64 (
-# IN UINT16 Cs,
-# IN UINT64 EntryPoint,
-# IN UINT64 Context1, OPTIONAL
-# IN UINT32 Context2, OPTIONAL
-# IN UINT64 NewStack
-# );
-#------------------------------------------------------------------------------
-
-.global ASM_PFX(InternalX86DisablePaging64)
-ASM_PFX(InternalX86DisablePaging64):
- cli
- shl $0x20,%rcx # rcx[32..47] <- Cs
- lea L1, %eax
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# DisablePaging64.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmDisablePaging64 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+ \r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# InternalX86DisablePaging64 (\r
+# IN UINT16 Cs,\r
+# IN UINT64 EntryPoint,\r
+# IN UINT64 Context1, OPTIONAL\r
+# IN UINT32 Context2, OPTIONAL\r
+# IN UINT64 NewStack\r
+# );\r
+#------------------------------------------------------------------------------\r
+\r
+.global ASM_PFX(InternalX86DisablePaging64)\r
+ASM_PFX(InternalX86DisablePaging64):\r
+ cli \r
+ shl $0x20,%rcx # rcx[32..47] <- Cs\r
+ lea L1, %eax\r
mov %r8d, %esi \r
or %rax, %rcx # rcx[0..47] <- Cs:@F\r
mov %r9d, %edi \r
mov 0x28(%rsp), %eax # eax <- New Stack\r
push %rcx\r
ret # switch to compatibility mode\r
-L1:
- mov %eax,%esp # set up new stack
- mov %cr0,%rax
- btr $0x1f,%eax
- mov %rax,%cr0 # disable paging
- mov $0xc0000080,%ecx
- rdmsr
- and $0xfe,%ah # clear LME
- wrmsr
- mov %cr4,%rax
- and $0xdf,%al # clear PAE
- mov %rax,%cr4
- push %rdi # push Context2
- push %rsi # push Context1
- callq *%rdx # transfer control to EntryPoint
- jmp . # no one should get here
-
+L1:\r
+ mov %eax,%esp # set up new stack\r
+ mov %cr0,%rax\r
+ btr $0x1f,%eax\r
+ mov %rax,%cr0 # disable paging\r
+ mov $0xc0000080,%ecx\r
+ rdmsr \r
+ and $0xfe,%ah # clear LME\r
+ wrmsr \r
+ mov %cr4,%rax\r
+ and $0xdf,%al # clear PAE\r
+ mov %rax,%cr4\r
+ push %rdi # push Context2\r
+ push %rsi # push Context1\r
+ callq *%rdx # transfer control to EntryPoint\r
+ jmp . # no one should get here\r
+\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# EnableDisableInterrupts.S
-#
-# Abstract:
-#
-# EnableDisableInterrupts function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# EnableDisableInterrupts (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(EnableDisableInterrupts)
-.align 16
-ASM_PFX(EnableDisableInterrupts):
- sti
- cli
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# EnableDisableInterrupts.S\r
+#\r
+# Abstract:\r
+#\r
+# EnableDisableInterrupts function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# EnableDisableInterrupts (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(EnableDisableInterrupts)\r
+.align 16\r
+ASM_PFX(EnableDisableInterrupts):\r
+ sti\r
+ cli\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# EnableInterrupts.S
-#
-# Abstract:
-#
-# EnableInterrupts function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# EnableInterrupts (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(EnableInterrupts)
-ASM_PFX(EnableInterrupts):
- sti
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# EnableInterrupts.S\r
+#\r
+# Abstract:\r
+#\r
+# EnableInterrupts function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# EnableInterrupts (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(EnableInterrupts)\r
+ASM_PFX(EnableInterrupts):\r
+ sti\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# EnablePaging64.S
-#
-# Abstract:
-#
-# AsmEnablePaging64 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# InternalX86EnablePaging64 (
-# IN UINT16 Cs,
-# IN UINT64 EntryPoint,
-# IN UINT64 Context1, OPTIONAL
-# IN UINT64 Context2, OPTIONAL
-# IN UINT64 NewStack
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(InternalX86EnablePaging64)
-ASM_PFX(InternalX86EnablePaging64):
- cli
- pop %rax # skip the return address
- callq Base
-Base:
- addl $(L1-Base),(%rsp) # offset for ret, seg is the 1st arg
- mov %cr4,%rax
- or $0x20,%al
- mov %rax,%cr4 # enable PAE
- mov $0xc0000080,%ecx
- rdmsr
- or $0x1,%ah # set LME
- wrmsr
- mov %cr0,%rax
- bts $0x1f,%eax
- mov %rax,%cr0 # enable paging
- lret
-L1: # long mode starts here
- 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 . # dead loop if EntryPoint() returned
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# EnablePaging64.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmEnablePaging64 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# InternalX86EnablePaging64 (\r
+# IN UINT16 Cs,\r
+# IN UINT64 EntryPoint,\r
+# IN UINT64 Context1, OPTIONAL\r
+# IN UINT64 Context2, OPTIONAL\r
+# IN UINT64 NewStack\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(InternalX86EnablePaging64)\r
+ASM_PFX(InternalX86EnablePaging64):\r
+ cli \r
+ pop %rax # skip the return address\r
+ callq Base\r
+Base:\r
+ addl $(L1-Base),(%rsp) # offset for ret, seg is the 1st arg\r
+ mov %cr4,%rax\r
+ or $0x20,%al\r
+ mov %rax,%cr4 # enable PAE\r
+ mov $0xc0000080,%ecx\r
+ rdmsr \r
+ or $0x1,%ah # set LME\r
+ wrmsr \r
+ mov %cr0,%rax\r
+ bts $0x1f,%eax\r
+ mov %rax,%cr0 # enable paging\r
+ lret \r
+L1: # long mode starts here\r
+ addr32 mov (%esp),%rbx\r
+ addr32 mov 0x8(%esp),%rcx\r
+ addr32 mov 0x10(%esp),%rdx\r
+ addr32 mov 0x18(%esp),%rsp\r
+ add $-0x20,%rsp\r
+ callq *%rbx\r
+ jmp . # dead loop if EntryPoint() returned\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# FlushCacheLine.S
-#
-# Abstract:
-#
-# AsmFlushCacheLine function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# AsmFlushCacheLine (
-# IN VOID *LinearAddress
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmFlushCacheLine)
-ASM_PFX(AsmFlushCacheLine):
- clflush (%rcx)
- mov %rcx, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# FlushCacheLine.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmFlushCacheLine function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI \r
+# AsmFlushCacheLine (\r
+# IN VOID *LinearAddress\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmFlushCacheLine)\r
+ASM_PFX(AsmFlushCacheLine):\r
+ clflush (%rcx)\r
+ mov %rcx, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# FxRestore.S
-#
-# Abstract:
-#
-# AsmFxRestore function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# InternalX86FxRestore (
-# IN CONST IA32_FX_BUFFER *Buffer
-# )#
-#------------------------------------------------------------------------------
-.global ASM_PFX(InternalX86FxRestore)
-ASM_PFX(InternalX86FxRestore):
- fxrstor (%rcx)
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# FxRestore.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmFxRestore function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# InternalX86FxRestore (\r
+# IN CONST IA32_FX_BUFFER *Buffer\r
+# )#\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(InternalX86FxRestore)\r
+ASM_PFX(InternalX86FxRestore):\r
+ fxrstor (%rcx)\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# FxSave.S
-#
-# Abstract:
-#
-# AsmFxSave function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# InternalX86FxSave (
-# OUT IA32_FX_BUFFER *Buffer
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(InternalX86FxSave)
-ASM_PFX(InternalX86FxSave):
- fxsave (%rcx)
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# FxSave.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmFxSave function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# InternalX86FxSave (\r
+# OUT IA32_FX_BUFFER *Buffer\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(InternalX86FxSave)\r
+ASM_PFX(InternalX86FxSave):\r
+ fxsave (%rcx)\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# InterlockedCompareExchange64.S
-#
-# Abstract:
-#
-# InterlockedCompareExchange64 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# InterlockedCompareExchange64 (
-# IN UINT64 *Value,
-# IN UINT64 CompareValue,
-# IN UINT64 ExchangeValue
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(InternalSyncCompareExchange64)
-.align 16
-ASM_PFX(InternalSyncCompareExchange64):
- mov %rdx, %rax
- lock cmpxchg %r8,(%rcx)
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# InterlockedCompareExchange64.S\r
+#\r
+# Abstract:\r
+#\r
+# InterlockedCompareExchange64 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# InterlockedCompareExchange64 (\r
+# IN UINT64 *Value,\r
+# IN UINT64 CompareValue,\r
+# IN UINT64 ExchangeValue\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(InternalSyncCompareExchange64)\r
+.align 16\r
+ASM_PFX(InternalSyncCompareExchange64):\r
+ mov %rdx, %rax\r
+ lock cmpxchg %r8,(%rcx)\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# InterlockedDecrement.S
-#
-# Abstract:
-#
-# InterlockedDecrement function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT32
-# EFIAPI
-# InterlockedDecrement (
-# IN UINT32 *Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(InternalSyncDecrement)
-ASM_PFX(InternalSyncDecrement):
- lock decl (%rcx)
- mov (%rcx), %eax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# InterlockedDecrement.S\r
+#\r
+# Abstract:\r
+#\r
+# InterlockedDecrement function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT32\r
+# EFIAPI\r
+# InterlockedDecrement (\r
+# IN UINT32 *Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(InternalSyncDecrement)\r
+ASM_PFX(InternalSyncDecrement):\r
+ lock decl (%rcx)\r
+ mov (%rcx), %eax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# InterlockedIncrement.S
-#
-# Abstract:
-#
-# InterlockedIncrement function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT32
-# EFIAPI
-# InterlockedIncrement (
-# IN UINT32 *Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(InternalSyncIncrement)
-ASM_PFX(InternalSyncIncrement):
- lock incl (%rcx)
- mov (%rcx), %eax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# InterlockedIncrement.S\r
+#\r
+# Abstract:\r
+#\r
+# InterlockedIncrement function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT32\r
+# EFIAPI\r
+# InterlockedIncrement (\r
+# IN UINT32 *Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(InternalSyncIncrement)\r
+ASM_PFX(InternalSyncIncrement):\r
+ lock incl (%rcx)\r
+ mov (%rcx), %eax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# Invd.S
-#
-# Abstract:
-#
-# AsmInvd function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# AsmInvd (
-# VOID
-# )#
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmInvd)
-ASM_PFX(AsmInvd):
- invd
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# Invd.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmInvd function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# AsmInvd (\r
+# VOID\r
+# )#\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmInvd)\r
+ASM_PFX(AsmInvd):\r
+ invd\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# Monitor.S
-#
-# Abstract:
-#
-# AsmMonitor function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# AsmMonitor (
-# IN UINTN Eax,
-# IN UINTN Ecx,
-# IN UINTN Edx
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmMonitor)
-.align 16
-ASM_PFX(AsmMonitor):
- mov %ecx,%eax
- mov %edx,%ecx
- mov %r8d,%edx
- monitor
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# Monitor.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmMonitor function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# AsmMonitor (\r
+# IN UINTN Eax,\r
+# IN UINTN Ecx,\r
+# IN UINTN Edx\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmMonitor)\r
+.align 16\r
+ASM_PFX(AsmMonitor):\r
+ mov %ecx,%eax\r
+ mov %edx,%ecx\r
+ mov %r8d,%edx\r
+ monitor\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# Mwait.S
-#
-# Abstract:
-#
-# AsmMwait function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# AsmMwait (
-# IN UINTN Eax,
-# IN UINTN Ecx
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmMwait)
-.align 16
-ASM_PFX(AsmMwait):
- mov %ecx,%eax
- mov %edx,%ecx
- mwait %rax,%rcx
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# Mwait.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmMwait function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# AsmMwait (\r
+# IN UINTN Eax,\r
+# IN UINTN Ecx\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmMwait)\r
+.align 16\r
+ASM_PFX(AsmMwait):\r
+ mov %ecx,%eax\r
+ mov %edx,%ecx\r
+ mwait %rax,%rcx\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadCr0.S
-#
-# Abstract:
-#
-# AsmReadCr0 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmReadCr0 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadCr0)
-.align 16
-ASM_PFX(AsmReadCr0):
- mov %cr0, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadCr0.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadCr0 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmReadCr0 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadCr0)\r
+.align 16\r
+ASM_PFX(AsmReadCr0):\r
+ mov %cr0, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadCr2.S
-#
-# Abstract:
-#
-# AsmReadCr2 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmReadCr2 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadCr2)
-.align 16
-ASM_PFX(AsmReadCr2):
- mov %cr2, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadCr2.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadCr2 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmReadCr2 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadCr2)\r
+.align 16\r
+ASM_PFX(AsmReadCr2):\r
+ mov %cr2, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadCr3.S
-#
-# Abstract:
-#
-# AsmReadCr3 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmReadCr3 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadCr3)
-.align 16
-ASM_PFX(AsmReadCr3):
- mov %cr3, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadCr3.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadCr3 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmReadCr3 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadCr3)\r
+.align 16\r
+ASM_PFX(AsmReadCr3):\r
+ mov %cr3, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadCr4.S
-#
-# Abstract:
-#
-# AsmReadCr4 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmReadCr4 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadCr4)
-.align 16
-ASM_PFX(AsmReadCr4):
- mov %cr4, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadCr4.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadCr4 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmReadCr4 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadCr4)\r
+.align 16\r
+ASM_PFX(AsmReadCr4):\r
+ mov %cr4, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadCs.S
-#
-# Abstract:
-#
-# AsmReadCs function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT16
-# EFIAPI
-# AsmReadCs (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadCs)
-.align 16
-ASM_PFX(AsmReadCs):
- mov %cs, %eax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadCs.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadCs function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT16\r
+# EFIAPI\r
+# AsmReadCs (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadCs)\r
+.align 16\r
+ASM_PFX(AsmReadCs):\r
+ mov %cs, %eax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadDr0.S
-#
-# Abstract:
-#
-# AsmReadDr0 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmReadDr0 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadDr0)
-.align 16
-ASM_PFX(AsmReadDr0):
- mov %dr0, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadDr0.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadDr0 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmReadDr0 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadDr0)\r
+.align 16\r
+ASM_PFX(AsmReadDr0):\r
+ mov %dr0, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadDr1.S
-#
-# Abstract:
-#
-# AsmReadDr1 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmReadDr1 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadDr1)
-.align 16
-ASM_PFX(AsmReadDr1):
- mov %dr1, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadDr1.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadDr1 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmReadDr1 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadDr1)\r
+.align 16\r
+ASM_PFX(AsmReadDr1):\r
+ mov %dr1, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadDr2.S
-#
-# Abstract:
-#
-# AsmReadDr2 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmReadDr2 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadDr2)
-.align 16
-ASM_PFX(AsmReadDr2):
- mov %dr2, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadDr2.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadDr2 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmReadDr2 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadDr2)\r
+.align 16\r
+ASM_PFX(AsmReadDr2):\r
+ mov %dr2, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadDr3.S
-#
-# Abstract:
-#
-# AsmReadDr3 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmReadDr3 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadDr3)
-.align 16
-ASM_PFX(AsmReadDr3):
- mov %dr3, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadDr3.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadDr3 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmReadDr3 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadDr3)\r
+.align 16\r
+ASM_PFX(AsmReadDr3):\r
+ mov %dr3, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadDr4.S
-#
-# Abstract:
-#
-# AsmReadDr4 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmReadDr4 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadDr4)
-.align 16
-ASM_PFX(AsmReadDr4):
- #DB 0fh, 21h, 0e0h
- mov %dr4, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadDr4.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadDr4 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmReadDr4 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadDr4)\r
+.align 16\r
+ASM_PFX(AsmReadDr4):\r
+ #DB 0fh, 21h, 0e0h\r
+ mov %dr4, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadDr5.S
-#
-# Abstract:
-#
-# AsmReadDr5 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmReadDr5 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadDr5)
-.align 16
-ASM_PFX(AsmReadDr5):
- mov %dr5, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadDr5.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadDr5 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmReadDr5 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadDr5)\r
+.align 16\r
+ASM_PFX(AsmReadDr5):\r
+ mov %dr5, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadDr6.S
-#
-# Abstract:
-#
-# AsmReadDr6 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmReadDr6 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadDr6)
-.align 16
-ASM_PFX(AsmReadDr6):
- mov %dr6, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadDr6.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadDr6 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmReadDr6 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadDr6)\r
+.align 16\r
+ASM_PFX(AsmReadDr6):\r
+ mov %dr6, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadDr7.S
-#
-# Abstract:
-#
-# AsmReadDr7 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmReadDr7 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadDr7)
-.align 16
-ASM_PFX(AsmReadDr7):
- mov %dr7, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadDr7.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadDr7 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmReadDr7 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadDr7)\r
+.align 16\r
+ASM_PFX(AsmReadDr7):\r
+ mov %dr7, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadDs.S
-#
-# Abstract:
-#
-# AsmReadDs function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT16
-# EFIAPI
-# AsmReadDs (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadDs)
-.align 16
-ASM_PFX(AsmReadDs):
- movl %ds, %eax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadDs.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadDs function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT16\r
+# EFIAPI\r
+# AsmReadDs (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadDs)\r
+.align 16\r
+ASM_PFX(AsmReadDs):\r
+ movl %ds, %eax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadEflags.S
-#
-# Abstract:
-#
-# AsmReadEflags function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmReadEflags (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadEflags)
-.align 16
-ASM_PFX(AsmReadEflags):
- pushfq
- pop %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadEflags.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadEflags function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmReadEflags (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadEflags)\r
+.align 16\r
+ASM_PFX(AsmReadEflags):\r
+ pushfq\r
+ pop %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadEs.S
-#
-# Abstract:
-#
-# AsmReadEs function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT16
-# EFIAPI
-# AsmReadEs (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadEs)
-.align 16
-ASM_PFX(AsmReadEs):
- mov %es, %eax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadEs.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadEs function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT16\r
+# EFIAPI\r
+# AsmReadEs (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadEs)\r
+.align 16\r
+ASM_PFX(AsmReadEs):\r
+ mov %es, %eax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadFs.S
-#
-# Abstract:
-#
-# AsmReadFs function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT16
-# EFIAPI
-# AsmReadFs (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadFs)
-.align 16
-ASM_PFX(AsmReadFs):
- mov %fs, %eax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadFs.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadFs function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT16\r
+# EFIAPI\r
+# AsmReadFs (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadFs)\r
+.align 16\r
+ASM_PFX(AsmReadFs):\r
+ mov %fs, %eax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadGdtr.S
-#
-# Abstract:
-#
-# AsmReadGdtr function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# InternalX86ReadGdtr (
-# OUT IA32_DESCRIPTOR *Gdtr
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(InternalX86ReadGdtr)
-.align 16
-ASM_PFX(InternalX86ReadGdtr):
- sgdt (%rcx)
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadGdtr.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadGdtr function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# InternalX86ReadGdtr (\r
+# OUT IA32_DESCRIPTOR *Gdtr\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(InternalX86ReadGdtr)\r
+.align 16\r
+ASM_PFX(InternalX86ReadGdtr):\r
+ sgdt (%rcx)\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadGs.S
-#
-# Abstract:
-#
-# AsmReadGs function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT16
-# EFIAPI
-# AsmReadGs (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadGs)
-.align 16
-ASM_PFX(AsmReadGs):
- mov %gs, %eax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadGs.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadGs function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT16\r
+# EFIAPI\r
+# AsmReadGs (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadGs)\r
+.align 16\r
+ASM_PFX(AsmReadGs):\r
+ mov %gs, %eax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadIdtr.AS
-#
-# Abstract:
-#
-# AsmReadIdtr function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# InternalX86ReadIdtr (
-# OUT IA32_DESCRIPTOR *Idtr
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(InternalX86ReadIdtr)
-.align 16
-ASM_PFX(InternalX86ReadIdtr):
- sidt (%rcx)
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadIdtr.AS\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadIdtr function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# InternalX86ReadIdtr (\r
+# OUT IA32_DESCRIPTOR *Idtr\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(InternalX86ReadIdtr)\r
+.align 16\r
+ASM_PFX(InternalX86ReadIdtr):\r
+ sidt (%rcx)\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadLdtr.AS
-#
-# Abstract:
-#
-# AsmReadLdtr function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT16
-# EFIAPI
-# AsmReadLdtr (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadLdtr)
-.align 16
-ASM_PFX(AsmReadLdtr):
- sldt %eax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadLdtr.AS\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadLdtr function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT16\r
+# EFIAPI\r
+# AsmReadLdtr (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadLdtr)\r
+.align 16\r
+ASM_PFX(AsmReadLdtr):\r
+ sldt %eax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# ReadMm0.S
-#
-# Abstract:
-#
-# AsmReadMm0 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# AsmReadMm0 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadMm0)
-.align 16
-ASM_PFX(AsmReadMm0):
- movd %mm0, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadMm0.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadMm0 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# AsmReadMm0 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadMm0)\r
+.align 16\r
+ASM_PFX(AsmReadMm0):\r
+ movd %mm0, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# ReadMm1.S
-#
-# Abstract:
-#
-# AsmReadMm1 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# AsmReadMm1 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadMm1)
-.align 16
-ASM_PFX(AsmReadMm1):
- movd %mm1, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadMm1.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadMm1 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# AsmReadMm1 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadMm1)\r
+.align 16\r
+ASM_PFX(AsmReadMm1):\r
+ movd %mm1, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# ReadMm2.S
-#
-# Abstract:
-#
-# AsmReadMm2 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# AsmReadMm2 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadMm2)
-.align 16
-ASM_PFX(AsmReadMm2):
- movd %mm2, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadMm2.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadMm2 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# AsmReadMm2 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadMm2)\r
+.align 16\r
+ASM_PFX(AsmReadMm2):\r
+ movd %mm2, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# ReadMm3.S
-#
-# Abstract:
-#
-# AsmReadMm3 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# AsmReadMm3 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadMm3)
-.align 16
-ASM_PFX(AsmReadMm3):
- movd %mm3, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadMm3.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadMm3 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# AsmReadMm3 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadMm3)\r
+.align 16\r
+ASM_PFX(AsmReadMm3):\r
+ movd %mm3, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# ReadMm4.AS
-#
-# Abstract:
-#
-# AsmReadMm4 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# AsmReadMm4 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadMm4)
-.align 16
-ASM_PFX(AsmReadMm4):
- movd %mm4, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadMm4.AS\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadMm4 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# AsmReadMm4 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadMm4)\r
+.align 16\r
+ASM_PFX(AsmReadMm4):\r
+ movd %mm4, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# ReadMm5.S
-#
-# Abstract:
-#
-# AsmReadMm5 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# AsmReadMm5 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadMm5)
-.align 16
-ASM_PFX(AsmReadMm5):
- movd %mm5, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadMm5.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadMm5 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# AsmReadMm5 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadMm5)\r
+.align 16\r
+ASM_PFX(AsmReadMm5):\r
+ movd %mm5, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# ReadMm6.S
-#
-# Abstract:
-#
-# AsmReadMm6 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# AsmReadMm6 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadMm6)
-.align 16
-ASM_PFX(AsmReadMm6):
- movd %mm6, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadMm6.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadMm6 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# AsmReadMm6 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadMm6)\r
+.align 16\r
+ASM_PFX(AsmReadMm6):\r
+ movd %mm6, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# ReadMm7.S
-#
-# Abstract:
-#
-# AsmReadMm7 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# AsmReadMm7 (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadMm7)
-.align 16
-ASM_PFX(AsmReadMm7):
- movd %mm7, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadMm7.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadMm7 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# AsmReadMm7 (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadMm7)\r
+.align 16\r
+ASM_PFX(AsmReadMm7):\r
+ movd %mm7, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadMsr64.S
-#
-# Abstract:
-#
-# AsmReadMsr64 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# AsmReadMsr64 (
-# IN UINT32 Index
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadMsr64)
-.align 16
-ASM_PFX(AsmReadMsr64):
- rdmsr # edx & eax are zero extended
- shl $0x20, %rdx
- or %rdx, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadMsr64.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadMsr64 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# AsmReadMsr64 (\r
+# IN UINT32 Index\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadMsr64)\r
+.align 16\r
+ASM_PFX(AsmReadMsr64):\r
+ rdmsr # edx & eax are zero extended\r
+ shl $0x20, %rdx\r
+ or %rdx, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadPmc.S
-#
-# Abstract:
-#
-# AsmReadPmc function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# AsmReadPmc (
-# IN UINT32 PmcIndex
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadPmc)
-.align 16
-ASM_PFX(AsmReadPmc):
- rdpmc
- shl $0x20, %rdx
- or %rdx, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadPmc.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadPmc function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# AsmReadPmc (\r
+# IN UINT32 PmcIndex\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadPmc)\r
+.align 16\r
+ASM_PFX(AsmReadPmc):\r
+ rdpmc\r
+ shl $0x20, %rdx\r
+ or %rdx, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadSs.S
-#
-# Abstract:
-#
-# AsmReadSs function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT16
-# EFIAPI
-# AsmReadSs (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadSs)
-.align 16
-ASM_PFX(AsmReadSs):
- movl %ss, %eax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadSs.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadSs function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT16\r
+# EFIAPI\r
+# AsmReadSs (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadSs)\r
+.align 16\r
+ASM_PFX(AsmReadSs):\r
+ movl %ss, %eax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadTr.S
-#
-# Abstract:
-#
-# AsmReadTr function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT16
-# EFIAPI
-# AsmReadTr (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadTr)
-.align 16
-ASM_PFX(AsmReadTr):
- str %eax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadTr.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadTr function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT16\r
+# EFIAPI\r
+# AsmReadTr (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadTr)\r
+.align 16\r
+ASM_PFX(AsmReadTr): \r
+ str %eax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ReadTsc.S
-#
-# Abstract:
-#
-# AsmReadTsc function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# AsmReadTsc (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmReadTsc)
-.align 16
-ASM_PFX(AsmReadTsc):
- rdtsc
- shl $0x20, %rdx
- or %rdx, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ReadTsc.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmReadTsc function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# AsmReadTsc (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmReadTsc)\r
+.align 16\r
+ASM_PFX(AsmReadTsc):\r
+ rdtsc\r
+ shl $0x20, %rdx\r
+ or %rdx, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetJump.S
-#
-# Abstract:
-#
-# Implementation of SetJump() on x86_64
-#
-#------------------------------------------------------------------------------
-
-.extern ASM_PFX(InternalAssertJumpBuffer)
-.global ASM_PFX(SetJump)
-ASM_PFX(SetJump):
- push %rcx
- add $0xffffffffffffffe0,%rsp
- call ASM_PFX(InternalAssertJumpBuffer)
- add $0x20,%rsp
- pop %rcx
- pop %rdx
- mov %rbx,(%rcx)
- mov %rsp,0x8(%rcx)
- mov %rbp,0x10(%rcx)
- mov %rdi,0x18(%rcx)
- mov %rsi,0x20(%rcx)
- mov %r12,0x28(%rcx)
- mov %r13,0x30(%rcx)
- mov %r14,0x38(%rcx)
- mov %r15,0x40(%rcx)
- mov %rdx,0x48(%rcx)
- xor %rax,%rax
- jmpq *%rdx
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetJump.S\r
+#\r
+# Abstract:\r
+#\r
+# Implementation of SetJump() on x86_64\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.extern ASM_PFX(InternalAssertJumpBuffer)\r
+.global ASM_PFX(SetJump)\r
+ASM_PFX(SetJump):\r
+ push %rcx\r
+ add $0xffffffffffffffe0,%rsp\r
+ call ASM_PFX(InternalAssertJumpBuffer)\r
+ add $0x20,%rsp\r
+ pop %rcx\r
+ pop %rdx\r
+ mov %rbx,(%rcx)\r
+ mov %rsp,0x8(%rcx)\r
+ mov %rbp,0x10(%rcx)\r
+ mov %rdi,0x18(%rcx)\r
+ mov %rsi,0x20(%rcx)\r
+ mov %r12,0x28(%rcx)\r
+ mov %r13,0x30(%rcx)\r
+ mov %r14,0x38(%rcx)\r
+ mov %r15,0x40(%rcx)\r
+ mov %rdx,0x48(%rcx)\r
+ xor %rax,%rax\r
+ jmpq *%rdx\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# SwitchStack.S
-#
-# Abstract:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# Routine Description:
-#
-# Routine for switching stacks with 2 parameters
-#
-# Arguments:
-#
-# (rcx) EntryPoint - Entry point with new stack.
-# (rdx) Context1 - Parameter1 for entry point.
-# (r8) Context2 - Parameter2 for entry point.
-# (r9) NewStack - Pointer to new stack.
-#
-# Returns:
-#
-# None
-#
-#------------------------------------------------------------------------------
-.global ASM_PFX(InternalSwitchStack)
-ASM_PFX(InternalSwitchStack):
- mov %rcx, %rax
- mov %rdx, %rcx
- mov %r8, %rdx
- #
- # Reserve space for register parameters (rcx, rdx, r8 & r9) on the stack,
- # in case the callee wishes to spill them.
- #
- lea -0x20(%r9), %rsp
- call *%rax
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SwitchStack.S\r
+#\r
+# Abstract:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# Routine Description:\r
+#\r
+# Routine for switching stacks with 2 parameters\r
+#\r
+# Arguments:\r
+#\r
+# (rcx) EntryPoint - Entry point with new stack.\r
+# (rdx) Context1 - Parameter1 for entry point.\r
+# (r8) Context2 - Parameter2 for entry point.\r
+# (r9) NewStack - Pointer to new stack.\r
+#\r
+# Returns:\r
+#\r
+# None\r
+#\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(InternalSwitchStack)\r
+ASM_PFX(InternalSwitchStack):\r
+ mov %rcx, %rax\r
+ mov %rdx, %rcx\r
+ mov %r8, %rdx\r
+ #\r
+ # Reserve space for register parameters (rcx, rdx, r8 & r9) on the stack,\r
+ # in case the callee wishes to spill them.\r
+ #\r
+ lea -0x20(%r9), %rsp\r
+ call *%rax\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# Thunk16.S
-#
-# Abstract:
-#
-# Real mode thunk
-#
-#------------------------------------------------------------------------------
-
-#include <Library/BaseLib.h>
-
-.globl ASM_PFX(m16Start)
-.globl ASM_PFX(m16Size)
-.globl ASM_PFX(mThunk16Attr)
-.globl ASM_PFX(m16Gdt)
-.globl ASM_PFX(m16GdtrBase)
-.globl ASM_PFX(mTransition)
-.globl ASM_PFX(InternalAsmThunk16)
-
-# define the structure of IA32_REGS
-.equ _EDI, 0 #size 4
-.equ _ESI, 4 #size 4
-.equ _EBP, 8 #size 4
-.equ _ESP, 12 #size 4
-.equ _EBX, 16 #size 4
-.equ _EDX, 20 #size 4
-.equ _ECX, 24 #size 4
-.equ _EAX, 28 #size 4
-.equ _DS, 32 #size 2
-.equ _ES, 34 #size 2
-.equ _FS, 36 #size 2
-.equ _GS, 38 #size 2
-.equ _EFLAGS, 40 #size 8
-.equ _EIP, 48 #size 4
-.equ _CS, 52 #size 2
-.equ _SS, 54 #size 2
-.equ IA32_REGS_SIZE, 56
-
- .data
-
-ASM_PFX(m16Size): .word ASM_PFX(InternalAsmThunk16) - ASM_PFX(m16Start)
-ASM_PFX(mThunk16Attr): .word _ThunkAttr - ASM_PFX(m16Start)
-ASM_PFX(m16Gdt): .word _NullSeg - ASM_PFX(m16Start)
-ASM_PFX(m16GdtrBase): .word _16GdtrBase - ASM_PFX(m16Start)
-ASM_PFX(mTransition): .word _EntryPoint - ASM_PFX(m16Start)
-
- .text
-
-ASM_PFX(m16Start):
-
-SavedGdt: .space 10
-
-#------------------------------------------------------------------------------
-# _BackFromUserCode() takes control in real mode after 'retf' has been executed
-# by user code. It will be shadowed to somewhere in memory below 1MB.
-#------------------------------------------------------------------------------
-.globl ASM_PFX(BackFromUserCode)
-ASM_PFX(BackFromUserCode):
- #
- # The order of saved registers on the stack matches the order they appears
- # in IA32_REGS structure. This facilitates wrapper function to extract them
- # into that structure.
- #
- # Some instructions for manipulation of segment registers have to be written
- # in opcode since 64-bit MASM prevents accesses to those registers.
- #
- .byte 0x16 # push ss
- .byte 0xe # push cs
- .byte 0x66
- call L_Base # push eip
-L_Base:
- .byte 0x66
- pushq $0 # reserved high order 32 bits of EFlags
- .byte 0x66, 0x9c # pushfd actually
- cli # disable interrupts
- push %gs
- push %fs
- .byte 6 # push es
- .byte 0x1e # push ds
- .byte 0x66,0x60 # pushad
- .byte 0x66,0xba # mov edx, imm32
-_ThunkAttr: .space 4
- testb $THUNK_ATTRIBUTE_DISABLE_A20_MASK_INT_15, %dl
- jz L_1
- movl $0x15cd2401,%eax # mov ax, 2401h & int 15h
- cli # disable interrupts
- jnc L_2
-L_1:
- testb $THUNK_ATTRIBUTE_DISABLE_A20_MASK_KBD_CTRL, %dl
- jz L_2
- inb $0x92,%al
- orb $2,%al
- outb %al, $0x92 # deactivate A20M#
-L_2:
- movl %ss,%eax
- lea IA32_REGS_SIZE(%esp), %bp
- #
- # rsi in the following 2 instructions is indeed bp in 16-bit code
- #
- movw %bp, (_ESP - IA32_REGS_SIZE)(%rsi)
- .byte 0x66
- movl (_EIP - IA32_REGS_SIZE)(%rsi), %ebx
- shlw $4,%ax # shl eax, 4
- addw %ax,%bp # add ebp, eax
- movw %cs,%ax
- shlw $4,%ax
- lea (L_64BitCode - L_Base)(%ebx, %eax), %ax
- .byte 0x66,0x2e,0x89,0x87 # mov cs:[bx + (L_64Eip - L_Base)], eax
- .word L_64Eip - L_Base
- .byte 0x66,0xb8 # mov eax, imm32
-SavedCr4: .space 4
- movq %rax, %cr4
- #
- # rdi in the instruction below is indeed bx in 16-bit code
- #
- .byte 0x66,0x2e # 2eh is "cs:" segment override
- lgdt (SavedGdt - L_Base)(%rdi)
- .byte 0x66
- movl $0xc0000080,%ecx
- rdmsr
- orb $1,%ah
- wrmsr
- .byte 0x66,0xb8 # mov eax, imm32
-SavedCr0: .space 4
- movq %rax, %cr0
- .byte 0x66,0xea # jmp far cs:L_64Bit
-L_64Eip: .space 4
-SavedCs: .space 2
-L_64BitCode:
- movq %r8, %rsp
- ret
-
-_EntryPoint: .long ASM_PFX(ToUserCode) - ASM_PFX(m16Start)
- .word CODE16
-_16Gdtr: .word GDT_SIZE - 1
-_16GdtrBase: .quad _NullSeg
-_16Idtr: .word 0x3ff
- .long 0
-
-#------------------------------------------------------------------------------
-# _ToUserCode() takes control in real mode before passing control to user code.
-# It will be shadowed to somewhere in memory below 1MB.
-#------------------------------------------------------------------------------
-.globl ASM_PFX(ToUserCode)
-ASM_PFX(ToUserCode):
- movl %edx,%ss # set new segment selectors
- movl %edx,%ds
- movl %edx,%es
- movl %edx,%fs
- movl %edx,%gs
- .byte 0x66
- movl $0xc0000080,%ecx
- movq %rax, %cr0
- rdmsr
- andb $0b11111110, %ah
- wrmsr
- movq %rbp, %cr4
- movl %esi,%ss # set up 16-bit stack segment
- movw %bx,%sp # set up 16-bit stack pointer
- .byte 0x66 # make the following call 32-bit
- call L_Base1 # push eip
-L_Base1:
- popw %bp # ebp <- address of L_Base1
- pushq (IA32_REGS_SIZE + 2)(%esp)
- lea 0x0c(%rsi), %eax
- pushq %rax
- lret # execution begins at next instruction
-L_RealMode:
- .byte 0x66,0x2e # CS and operand size override
- lidt (_16Idtr - L_Base1)(%rsi)
- .byte 0x66,0x61 # popad
- .byte 0x1f # pop ds
- .byte 0x7 # pop es
- .byte 0x0f, 0xa1 # pop fs
- .byte 0x0f, 0xa9 # pop gs
- .byte 0x66, 0x9d # popfd
- leaw 4(%esp),%sp # skip high order 32 bits of EFlags
- .byte 0x66 # make the following retf 32-bit
- lret # transfer control to user code
-
-.equ CODE16, ASM_PFX(16Code) - .
-.equ DATA16, ASM_PFX(16Data) - .
-.equ DATA32, ASM_PFX(32Data) - .
-
-_NullSeg: .quad 0
-ASM_PFX(16Code):
- .word -1
- .word 0
- .byte 0
- .byte 0x9b
- .byte 0x8f # 16-bit segment, 4GB limit
- .byte 0
-ASM_PFX(16Data):
- .word -1
- .word 0
- .byte 0
- .byte 0x93
- .byte 0x8f # 16-bit segment, 4GB limit
- .byte 0
-ASM_PFX(32Data):
- .word -1
- .word 0
- .byte 0
- .byte 0x93
- .byte 0xcf # 16-bit segment, 4GB limit
- .byte 0
-
-.equ GDT_SIZE, . - ASM_PFX(NullSeg)
-
-#------------------------------------------------------------------------------
-# IA32_REGISTER_SET *
-# EFIAPI
-# InternalAsmThunk16 (
-# IN IA32_REGISTER_SET *RegisterSet,
-# IN OUT VOID *Transition
-# );
-#------------------------------------------------------------------------------
-# MISMATCH: "InternalAsmThunk16 PROC USES rbp rbx rsi rdi"
-
-.globl ASM_PFX(InternalAsmThunk16)
-ASM_PFX(InternalAsmThunk16):
- pushq %rbp
- pushq %rbx
- pushq %rsi
- pushq %rdi
-
- movl %ds, %r10d # r9 ~ r11 are not accessible in 16-bit
- movl %es, %r11d # so use them for saving seg registers
- movl %ss, %r9d
- .byte 0x0f, 0xa0 #push fs
- .byte 0x0f, 0xa8 #push gs
- movq %rcx, %rsi
- movzwl _SS(%rsi), %r8d
- movl _ESP(%rsi), %edi
- lea -(IA32_REGS_SIZE + 4)(%edi), %rdi
- imul $16, %r8d, %eax
- movl %edi,%ebx # ebx <- stack for 16-bit code
- pushq $(IA32_REGS_SIZE / 4)
- addl %eax,%edi # edi <- linear address of 16-bit stack
- popq %rcx
- rep
- movsl # copy RegSet
- lea (SavedCr4 - ASM_PFX(m16Start))(%rdx), %ecx
- movl %edx,%eax # eax <- transition code address
- andl $0xf,%edx
- shll $12,%eax # segment address in high order 16 bits
- lea (_BackFromUserCode - ASM_PFX(m16Start))(%rdx), %ax
- stosl # [edi] <- return address of user code
- sgdt (SavedGdt - SavedCr4)(%rcx)
- sidt 0x38(%rsp)
- movq %cr0, %rax
- movl %eax, (SavedCr0 - SavedCr4)(%rcx)
- andl $0x7ffffffe,%eax # clear PE, PG bits
- movq %cr4, %rbp
- movl %ebp, (%rcx) # save CR4 in SavedCr4
- andl $0x300,%ebp # clear all but PCE and OSFXSR bits
- movl %r8d, %esi # esi <- 16-bit stack segment
- .byte 0x6a, DATA32
- popq %rdx
- lgdt (_16Gdtr - SavedCr4)(%rcx)
- movl %edx,%ss
- pushfq
- lea -8(%rdx), %edx
- lea L_RetFromRealMode, %r8
- pushq %r8
- movl %cs, %r8d
- movw %r8w, (SavedCs - SavedCr4)(%rcx)
- movq %rsp, %r8
- .byte 0xff, 0x69 # jmp (_EntryPoint - SavedCr4)(%rcx)
- .byte _EntryPoint - SavedCr4
-L_RetFromRealMode:
- popfq
- lidt 0x38(%rsp)
- lea -IA32_REGS_SIZE(%rbp), %eax
- .byte 0x0f, 0xa9 # pop gs
- .byte 0x0f, 0xa1 # pop fs
- movl %r9d, %ss
- movl %r11d, %es
- movl %r10d, %ds
-
- popq %rdi
- popq %rsi
- popq %rbx
- popq %rbp
-
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# Thunk16.S\r
+#\r
+# Abstract:\r
+#\r
+# Real mode thunk\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+#include <Library/BaseLib.h>\r
+\r
+.globl ASM_PFX(m16Start)\r
+.globl ASM_PFX(m16Size)\r
+.globl ASM_PFX(mThunk16Attr)\r
+.globl ASM_PFX(m16Gdt)\r
+.globl ASM_PFX(m16GdtrBase)\r
+.globl ASM_PFX(mTransition)\r
+.globl ASM_PFX(InternalAsmThunk16)\r
+\r
+# define the structure of IA32_REGS\r
+.equ _EDI, 0 #size 4\r
+.equ _ESI, 4 #size 4\r
+.equ _EBP, 8 #size 4\r
+.equ _ESP, 12 #size 4\r
+.equ _EBX, 16 #size 4\r
+.equ _EDX, 20 #size 4\r
+.equ _ECX, 24 #size 4\r
+.equ _EAX, 28 #size 4\r
+.equ _DS, 32 #size 2\r
+.equ _ES, 34 #size 2\r
+.equ _FS, 36 #size 2\r
+.equ _GS, 38 #size 2\r
+.equ _EFLAGS, 40 #size 8\r
+.equ _EIP, 48 #size 4\r
+.equ _CS, 52 #size 2\r
+.equ _SS, 54 #size 2\r
+.equ IA32_REGS_SIZE, 56\r
+\r
+ .data\r
+\r
+ASM_PFX(m16Size): .word ASM_PFX(InternalAsmThunk16) - ASM_PFX(m16Start)\r
+ASM_PFX(mThunk16Attr): .word _ThunkAttr - ASM_PFX(m16Start)\r
+ASM_PFX(m16Gdt): .word _NullSeg - ASM_PFX(m16Start)\r
+ASM_PFX(m16GdtrBase): .word _16GdtrBase - ASM_PFX(m16Start)\r
+ASM_PFX(mTransition): .word _EntryPoint - ASM_PFX(m16Start)\r
+\r
+ .text\r
+\r
+ASM_PFX(m16Start):\r
+\r
+SavedGdt: .space 10\r
+\r
+#------------------------------------------------------------------------------\r
+# _BackFromUserCode() takes control in real mode after 'retf' has been executed\r
+# by user code. It will be shadowed to somewhere in memory below 1MB.\r
+#------------------------------------------------------------------------------\r
+.globl ASM_PFX(BackFromUserCode)\r
+ASM_PFX(BackFromUserCode):\r
+ #\r
+ # The order of saved registers on the stack matches the order they appears\r
+ # in IA32_REGS structure. This facilitates wrapper function to extract them\r
+ # into that structure.\r
+ #\r
+ # Some instructions for manipulation of segment registers have to be written\r
+ # in opcode since 64-bit MASM prevents accesses to those registers.\r
+ #\r
+ .byte 0x16 # push ss\r
+ .byte 0xe # push cs\r
+ .byte 0x66\r
+ call L_Base # push eip\r
+L_Base: \r
+ .byte 0x66\r
+ pushq $0 # reserved high order 32 bits of EFlags\r
+ .byte 0x66, 0x9c # pushfd actually\r
+ cli # disable interrupts\r
+ push %gs\r
+ push %fs\r
+ .byte 6 # push es\r
+ .byte 0x1e # push ds\r
+ .byte 0x66,0x60 # pushad\r
+ .byte 0x66,0xba # mov edx, imm32\r
+_ThunkAttr: .space 4\r
+ testb $THUNK_ATTRIBUTE_DISABLE_A20_MASK_INT_15, %dl\r
+ jz L_1\r
+ movl $0x15cd2401,%eax # mov ax, 2401h & int 15h\r
+ cli # disable interrupts\r
+ jnc L_2\r
+L_1: \r
+ testb $THUNK_ATTRIBUTE_DISABLE_A20_MASK_KBD_CTRL, %dl\r
+ jz L_2\r
+ inb $0x92,%al\r
+ orb $2,%al\r
+ outb %al, $0x92 # deactivate A20M#\r
+L_2: \r
+ movl %ss,%eax\r
+ lea IA32_REGS_SIZE(%esp), %bp\r
+ #\r
+ # rsi in the following 2 instructions is indeed bp in 16-bit code\r
+ #\r
+ movw %bp, (_ESP - IA32_REGS_SIZE)(%rsi)\r
+ .byte 0x66\r
+ movl (_EIP - IA32_REGS_SIZE)(%rsi), %ebx\r
+ shlw $4,%ax # shl eax, 4\r
+ addw %ax,%bp # add ebp, eax\r
+ movw %cs,%ax\r
+ shlw $4,%ax\r
+ lea (L_64BitCode - L_Base)(%ebx, %eax), %ax\r
+ .byte 0x66,0x2e,0x89,0x87 # mov cs:[bx + (L_64Eip - L_Base)], eax\r
+ .word L_64Eip - L_Base\r
+ .byte 0x66,0xb8 # mov eax, imm32\r
+SavedCr4: .space 4\r
+ movq %rax, %cr4\r
+ #\r
+ # rdi in the instruction below is indeed bx in 16-bit code\r
+ #\r
+ .byte 0x66,0x2e # 2eh is "cs:" segment override\r
+ lgdt (SavedGdt - L_Base)(%rdi)\r
+ .byte 0x66\r
+ movl $0xc0000080,%ecx\r
+ rdmsr\r
+ orb $1,%ah\r
+ wrmsr\r
+ .byte 0x66,0xb8 # mov eax, imm32\r
+SavedCr0: .space 4\r
+ movq %rax, %cr0\r
+ .byte 0x66,0xea # jmp far cs:L_64Bit\r
+L_64Eip: .space 4\r
+SavedCs: .space 2\r
+L_64BitCode: \r
+ movq %r8, %rsp\r
+ ret\r
+\r
+_EntryPoint: .long ASM_PFX(ToUserCode) - ASM_PFX(m16Start)\r
+ .word CODE16\r
+_16Gdtr: .word GDT_SIZE - 1\r
+_16GdtrBase: .quad _NullSeg\r
+_16Idtr: .word 0x3ff\r
+ .long 0\r
+\r
+#------------------------------------------------------------------------------\r
+# _ToUserCode() takes control in real mode before passing control to user code.\r
+# It will be shadowed to somewhere in memory below 1MB.\r
+#------------------------------------------------------------------------------\r
+.globl ASM_PFX(ToUserCode)\r
+ASM_PFX(ToUserCode):\r
+ movl %edx,%ss # set new segment selectors\r
+ movl %edx,%ds\r
+ movl %edx,%es\r
+ movl %edx,%fs\r
+ movl %edx,%gs\r
+ .byte 0x66\r
+ movl $0xc0000080,%ecx\r
+ movq %rax, %cr0\r
+ rdmsr\r
+ andb $0b11111110, %ah \r
+ wrmsr\r
+ movq %rbp, %cr4\r
+ movl %esi,%ss # set up 16-bit stack segment\r
+ movw %bx,%sp # set up 16-bit stack pointer\r
+ .byte 0x66 # make the following call 32-bit\r
+ call L_Base1 # push eip\r
+L_Base1: \r
+ popw %bp # ebp <- address of L_Base1\r
+ pushq (IA32_REGS_SIZE + 2)(%esp)\r
+ lea 0x0c(%rsi), %eax\r
+ pushq %rax\r
+ lret # execution begins at next instruction\r
+L_RealMode: \r
+ .byte 0x66,0x2e # CS and operand size override\r
+ lidt (_16Idtr - L_Base1)(%rsi)\r
+ .byte 0x66,0x61 # popad\r
+ .byte 0x1f # pop ds\r
+ .byte 0x7 # pop es\r
+ .byte 0x0f, 0xa1 # pop fs\r
+ .byte 0x0f, 0xa9 # pop gs\r
+ .byte 0x66, 0x9d # popfd\r
+ leaw 4(%esp),%sp # skip high order 32 bits of EFlags\r
+ .byte 0x66 # make the following retf 32-bit\r
+ lret # transfer control to user code\r
+\r
+.equ CODE16, ASM_PFX(16Code) - .\r
+.equ DATA16, ASM_PFX(16Data) - .\r
+.equ DATA32, ASM_PFX(32Data) - .\r
+\r
+_NullSeg: .quad 0\r
+ASM_PFX(16Code):\r
+ .word -1\r
+ .word 0\r
+ .byte 0\r
+ .byte 0x9b\r
+ .byte 0x8f # 16-bit segment, 4GB limit\r
+ .byte 0\r
+ASM_PFX(16Data):\r
+ .word -1\r
+ .word 0\r
+ .byte 0\r
+ .byte 0x93\r
+ .byte 0x8f # 16-bit segment, 4GB limit\r
+ .byte 0\r
+ASM_PFX(32Data):\r
+ .word -1\r
+ .word 0\r
+ .byte 0\r
+ .byte 0x93\r
+ .byte 0xcf # 16-bit segment, 4GB limit\r
+ .byte 0\r
+\r
+.equ GDT_SIZE, . - ASM_PFX(NullSeg)\r
+\r
+#------------------------------------------------------------------------------\r
+# IA32_REGISTER_SET *\r
+# EFIAPI\r
+# InternalAsmThunk16 (\r
+# IN IA32_REGISTER_SET *RegisterSet,\r
+# IN OUT VOID *Transition\r
+# );\r
+#------------------------------------------------------------------------------\r
+# MISMATCH: "InternalAsmThunk16 PROC USES rbp rbx rsi rdi"\r
+\r
+.globl ASM_PFX(InternalAsmThunk16)\r
+ASM_PFX(InternalAsmThunk16):\r
+ pushq %rbp\r
+ pushq %rbx\r
+ pushq %rsi\r
+ pushq %rdi\r
+ \r
+ movl %ds, %r10d # r9 ~ r11 are not accessible in 16-bit\r
+ movl %es, %r11d # so use them for saving seg registers\r
+ movl %ss, %r9d\r
+ .byte 0x0f, 0xa0 #push fs\r
+ .byte 0x0f, 0xa8 #push gs\r
+ movq %rcx, %rsi\r
+ movzwl _SS(%rsi), %r8d\r
+ movl _ESP(%rsi), %edi\r
+ lea -(IA32_REGS_SIZE + 4)(%edi), %rdi\r
+ imul $16, %r8d, %eax \r
+ movl %edi,%ebx # ebx <- stack for 16-bit code\r
+ pushq $(IA32_REGS_SIZE / 4)\r
+ addl %eax,%edi # edi <- linear address of 16-bit stack\r
+ popq %rcx\r
+ rep\r
+ movsl # copy RegSet\r
+ lea (SavedCr4 - ASM_PFX(m16Start))(%rdx), %ecx\r
+ movl %edx,%eax # eax <- transition code address\r
+ andl $0xf,%edx\r
+ shll $12,%eax # segment address in high order 16 bits\r
+ lea (_BackFromUserCode - ASM_PFX(m16Start))(%rdx), %ax\r
+ stosl # [edi] <- return address of user code\r
+ sgdt (SavedGdt - SavedCr4)(%rcx) \r
+ sidt 0x38(%rsp)\r
+ movq %cr0, %rax\r
+ movl %eax, (SavedCr0 - SavedCr4)(%rcx)\r
+ andl $0x7ffffffe,%eax # clear PE, PG bits\r
+ movq %cr4, %rbp\r
+ movl %ebp, (%rcx) # save CR4 in SavedCr4\r
+ andl $0x300,%ebp # clear all but PCE and OSFXSR bits\r
+ movl %r8d, %esi # esi <- 16-bit stack segment\r
+ .byte 0x6a, DATA32\r
+ popq %rdx\r
+ lgdt (_16Gdtr - SavedCr4)(%rcx)\r
+ movl %edx,%ss\r
+ pushfq\r
+ lea -8(%rdx), %edx\r
+ lea L_RetFromRealMode, %r8\r
+ pushq %r8\r
+ movl %cs, %r8d\r
+ movw %r8w, (SavedCs - SavedCr4)(%rcx)\r
+ movq %rsp, %r8\r
+ .byte 0xff, 0x69 # jmp (_EntryPoint - SavedCr4)(%rcx)\r
+ .byte _EntryPoint - SavedCr4\r
+L_RetFromRealMode: \r
+ popfq\r
+ lidt 0x38(%rsp)\r
+ lea -IA32_REGS_SIZE(%rbp), %eax\r
+ .byte 0x0f, 0xa9 # pop gs\r
+ .byte 0x0f, 0xa1 # pop fs\r
+ movl %r9d, %ss\r
+ movl %r11d, %es\r
+ movl %r10d, %ds\r
+ \r
+ popq %rdi\r
+ popq %rsi\r
+ popq %rbx\r
+ popq %rbp\r
+\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# Wbinvd.S
-#
-# Abstract:
-#
-# AsmWbinvd function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# AsmWbinvd (
-# VOID
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWbinvd)
-.align 16
-ASM_PFX(AsmWbinvd):
- wbinvd
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# Wbinvd.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWbinvd function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# AsmWbinvd (\r
+# VOID\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWbinvd)\r
+.align 16\r
+ASM_PFX(AsmWbinvd):\r
+ wbinvd\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteCr0.S
-#
-# Abstract:
-#
-# AsmWriteCr0 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmWriteCr0 (
-# UINTN Cr0
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteCr0)
-ASM_PFX(AsmWriteCr0):
- mov %rcx,%cr0
- mov %rcx,%rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteCr0.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteCr0 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmWriteCr0 (\r
+# UINTN Cr0\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteCr0)\r
+ASM_PFX(AsmWriteCr0):\r
+ mov %rcx,%cr0\r
+ mov %rcx,%rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteCr2.S
-#
-# Abstract:
-#
-# AsmWriteCr2 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmWriteCr2 (
-# UINTN Cr2
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteCr2)
-ASM_PFX(AsmWriteCr2):
- mov %rcx,%cr2
- mov %rcx,%rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteCr2.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteCr2 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmWriteCr2 (\r
+# UINTN Cr2\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteCr2)\r
+ASM_PFX(AsmWriteCr2):\r
+ mov %rcx,%cr2\r
+ mov %rcx,%rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteCr3.S
-#
-# Abstract:
-#
-# AsmWriteCr3 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmWriteCr3 (
-# UINTN Cr3
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteCr3)
-ASM_PFX(AsmWriteCr3):
- mov %rcx,%cr3
- mov %rcx,%rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteCr3.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteCr3 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmWriteCr3 (\r
+# UINTN Cr3\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteCr3)\r
+ASM_PFX(AsmWriteCr3):\r
+ mov %rcx,%cr3\r
+ mov %rcx,%rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteCr4.S
-#
-# Abstract:
-#
-# AsmWriteCr4 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmWriteCr4 (
-# UINTN Cr4
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteCr4)
-ASM_PFX(AsmWriteCr4):
- mov %rcx,%cr4
- mov %rcx,%rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteCr4.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteCr4 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmWriteCr4 (\r
+# UINTN Cr4\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteCr4)\r
+ASM_PFX(AsmWriteCr4):\r
+ mov %rcx,%cr4\r
+ mov %rcx,%rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteDr0.S
-#
-# Abstract:
-#
-# AsmWriteDr0 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmWriteDr0 (
-# UINTN Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteDr0)
-.align 16
-ASM_PFX(AsmWriteDr0):
- mov %rcx, %dr0
- mov %rcx, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteDr0.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteDr0 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmWriteDr0 (\r
+# UINTN Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteDr0)\r
+.align 16\r
+ASM_PFX(AsmWriteDr0):\r
+ mov %rcx, %dr0\r
+ mov %rcx, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteDr1.S
-#
-# Abstract:
-#
-# AsmWriteDr1 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmWriteDr1 (
-# UINTN Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteDr1)
-.align 16
-ASM_PFX(AsmWriteDr1):
- mov %rcx, %dr1
- mov %rcx, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteDr1.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteDr1 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmWriteDr1 (\r
+# UINTN Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteDr1)\r
+.align 16\r
+ASM_PFX(AsmWriteDr1):\r
+ mov %rcx, %dr1\r
+ mov %rcx, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteDr2.S
-#
-# Abstract:
-#
-# AsmWriteDr2 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmWriteDr2 (
-# UINTN Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteDr2)
-.align 16
-ASM_PFX(AsmWriteDr2):
- mov %rcx, %dr2
- mov %rcx, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteDr2.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteDr2 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmWriteDr2 (\r
+# UINTN Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteDr2)\r
+.align 16\r
+ASM_PFX(AsmWriteDr2):\r
+ mov %rcx, %dr2\r
+ mov %rcx, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteDr3.S
-#
-# Abstract:
-#
-# AsmWriteDr3 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmWriteDr3 (
-# UINTN Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteDr3)
-.align 16
-ASM_PFX(AsmWriteDr3):
- mov %rcx, %dr3
- mov %rcx, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteDr3.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteDr3 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmWriteDr3 (\r
+# UINTN Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteDr3)\r
+.align 16\r
+ASM_PFX(AsmWriteDr3):\r
+ mov %rcx, %dr3\r
+ mov %rcx, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteDr4.S
-#
-# Abstract:
-#
-# AsmWriteDr4 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmWriteDr4 (
-# IN UINTN Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteDr4)
-ASM_PFX(AsmWriteDr4):
- mov %rcx, %dr4
- mov %rcx, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteDr4.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteDr4 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmWriteDr4 (\r
+# IN UINTN Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteDr4)\r
+ASM_PFX(AsmWriteDr4):\r
+ mov %rcx, %dr4\r
+ mov %rcx, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteDr5.S
-#
-# Abstract:
-#
-# AsmWriteDr5 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmWriteDr5 (
-# IN UINTN Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteDr5)
-ASM_PFX(AsmWriteDr5):
- mov %rcx, %dr5
- mov %rcx, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteDr5.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteDr5 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmWriteDr5 (\r
+# IN UINTN Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteDr5)\r
+ASM_PFX(AsmWriteDr5):\r
+ mov %rcx, %dr5\r
+ mov %rcx, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteDr6.S
-#
-# Abstract:
-#
-# AsmWriteDr6 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmWriteDr6 (
-# IN UINTN Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteDr6)
-ASM_PFX(AsmWriteDr6):
- mov %rcx, %dr6
- mov %rcx, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteDr6.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteDr6 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmWriteDr6 (\r
+# IN UINTN Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteDr6)\r
+ASM_PFX(AsmWriteDr6):\r
+ mov %rcx, %dr6\r
+ mov %rcx, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteDr7.S
-#
-# Abstract:
-#
-# AsmWriteDr7 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINTN
-# EFIAPI
-# AsmWriteDr7 (
-# IN UINTN Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteDr7)
-ASM_PFX(AsmWriteDr7):
- mov %rcx, %dr7
- mov %rcx, %rax
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteDr7.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteDr7 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINTN\r
+# EFIAPI\r
+# AsmWriteDr7 (\r
+# IN UINTN Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteDr7)\r
+ASM_PFX(AsmWriteDr7):\r
+ mov %rcx, %dr7\r
+ mov %rcx, %rax\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteGdtr.S
-#
-# Abstract:
-#
-# AsmWriteGdtr function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# InternalX86WriteGdtr (
-# IN CONST IA32_DESCRIPTOR *Idtr
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(InternalX86WriteGdtr)
-ASM_PFX(InternalX86WriteGdtr):
- lgdt (%rcx)
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteGdtr.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteGdtr function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# InternalX86WriteGdtr (\r
+# IN CONST IA32_DESCRIPTOR *Idtr\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(InternalX86WriteGdtr)\r
+ASM_PFX(InternalX86WriteGdtr):\r
+ lgdt (%rcx)\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteIdtr.S
-#
-# Abstract:
-#
-# AsmWriteIdtr function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# InternalX86WriteIdtr (
-# IN CONST IA32_DESCRIPTOR *Idtr
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(InternalX86WriteIdtr)
-.align 16
-ASM_PFX(InternalX86WriteIdtr):
- lidt (%rcx)
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteIdtr.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteIdtr function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# InternalX86WriteIdtr (\r
+# IN CONST IA32_DESCRIPTOR *Idtr\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(InternalX86WriteIdtr)\r
+.align 16\r
+ASM_PFX(InternalX86WriteIdtr):\r
+ lidt (%rcx)\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteLdtr.S
-#
-# Abstract:
-#
-# AsmWriteLdtr function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# AsmWriteLdtr (
-# IN UINT16 Ldtr
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteLdtr)
-.align 16
-ASM_PFX(AsmWriteLdtr):
- lldt %cx
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteLdtr.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteLdtr function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# AsmWriteLdtr (\r
+# IN UINT16 Ldtr\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteLdtr)\r
+.align 16\r
+ASM_PFX(AsmWriteLdtr):\r
+ lldt %cx\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# WriteMm0.S
-#
-# Abstract:
-#
-# AsmWriteMm0 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# AsmWriteMm0 (
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteMm0)
-ASM_PFX(AsmWriteMm0):
- movd %rcx, %mm0
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteMm0.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteMm0 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# AsmWriteMm0 (\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteMm0)\r
+ASM_PFX(AsmWriteMm0):\r
+ movd %rcx, %mm0\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteMm1.S
-#
-# Abstract:
-#
-# AsmWriteMm1 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# AsmWriteMm1 (
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteMm1)
-ASM_PFX(AsmWriteMm1):
- movd %rcx, %mm1
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteMm1.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteMm1 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# AsmWriteMm1 (\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteMm1)\r
+ASM_PFX(AsmWriteMm1):\r
+ movd %rcx, %mm1\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteMm2.S
-#
-# Abstract:
-#
-# AsmWriteMm2 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# AsmWriteMm2 (
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteMm2)
-ASM_PFX(AsmWriteMm2):
- movd %rcx, %mm2
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteMm2.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteMm2 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# AsmWriteMm2 (\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteMm2) \r
+ASM_PFX(AsmWriteMm2):\r
+ movd %rcx, %mm2\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteMm3.S
-#
-# Abstract:
-#
-# AsmWriteMm3 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# AsmWriteMm3 (
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteMm3)
-ASM_PFX(AsmWriteMm3):
- movd %rcx, %mm3
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteMm3.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteMm3 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# AsmWriteMm3 (\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteMm3)\r
+ASM_PFX(AsmWriteMm3):\r
+ movd %rcx, %mm3\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteMm4.S
-#
-# Abstract:
-#
-# AsmWriteMm4 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# AsmWriteMm4 (
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteMm4)
-ASM_PFX(AsmWriteMm4):
- movd %rcx, %mm4
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteMm4.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteMm4 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# AsmWriteMm4 (\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteMm4)\r
+ASM_PFX(AsmWriteMm4):\r
+ movd %rcx, %mm4\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteMm5.S
-#
-# Abstract:
-#
-# AsmWriteMm5 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# AsmWriteMm5 (
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteMm5)
-ASM_PFX(AsmWriteMm5):
- movd %rcx, %mm5
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteMm5.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteMm5 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# AsmWriteMm5 (\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteMm5)\r
+ASM_PFX(AsmWriteMm5):\r
+ movd %rcx, %mm5\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteMm6.S
-#
-# Abstract:
-#
-# AsmWriteMm6 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# AsmWriteMm6 (
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteMm6)
-ASM_PFX(AsmWriteMm6):
- movd %rcx, %mm6
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteMm6.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteMm6 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# AsmWriteMm6 (\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteMm6)\r
+ASM_PFX(AsmWriteMm6):\r
+ movd %rcx, %mm6\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# WriteMm7.S
-#
-# Abstract:
-#
-# AsmWriteMm7 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# AsmWriteMm7 (
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteMm7)
-ASM_PFX(AsmWriteMm7):
- movd %rcx, %mm7
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteMm7.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteMm7 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID\r
+# EFIAPI\r
+# AsmWriteMm7 (\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteMm7)\r
+ASM_PFX(AsmWriteMm7):\r
+ movd %rcx, %mm7\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 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:
-#
-# WriteMsr64.S
-#
-# Abstract:
-#
-# AsmWriteMsr64 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# UINT64
-# EFIAPI
-# AsmWriteMsr64 (
-# IN UINT32 Index,
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-.global ASM_PFX(AsmWriteMsr64)
-.align 16
-ASM_PFX(AsmWriteMsr64):
- mov %rdx, %rax # meanwhile, rax <- return value
- shr $0x20, %rdx # edx:eax contains the value to write
- wrmsr
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006 - 2008, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# WriteMsr64.S\r
+#\r
+# Abstract:\r
+#\r
+# AsmWriteMsr64 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# UINT64\r
+# EFIAPI\r
+# AsmWriteMsr64 (\r
+# IN UINT32 Index,\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.global ASM_PFX(AsmWriteMsr64)\r
+.align 16\r
+ASM_PFX(AsmWriteMsr64):\r
+ mov %rdx, %rax # meanwhile, rax <- return value\r
+ shr $0x20, %rdx # edx:eax contains the value to write\r
+ wrmsr\r
+ ret\r
-#
-# ConvertAsm.py: Automatically generated from CompareMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# CompareMem.S
-#
-# Abstract:
-#
-# CompareMem function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# INTN
-# EFIAPI
-# InternalMemCompareMem (
-# IN CONST VOID *DestinationBuffer,
-# IN CONST VOID *SourceBuffer,
-# IN UINTN Length
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemCompareMem)
-ASM_PFX(InternalMemCompareMem):
- push rsi
- push rdi
- mov rsi, rcx
- mov rdi, rdx
- mov rcx, r8
- repe cmpsb
- movzx rax, byte ptr [rsi - 1]
- movzx rdx, byte ptr [rdi - 1]
- sub rax, rdx
- pop rdi
- pop rsi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from CompareMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CompareMem.S\r
+#\r
+# Abstract:\r
+#\r
+# CompareMem function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# INTN\r
+# EFIAPI\r
+# InternalMemCompareMem (\r
+# IN CONST VOID *DestinationBuffer,\r
+# IN CONST VOID *SourceBuffer,\r
+# IN UINTN Length\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemCompareMem)\r
+ASM_PFX(InternalMemCompareMem):\r
+ push rsi\r
+ push rdi\r
+ mov rsi, rcx\r
+ mov rdi, rdx\r
+ mov rcx, r8\r
+ repe cmpsb\r
+ movzx rax, byte ptr [rsi - 1]\r
+ movzx rdx, byte ptr [rdi - 1]\r
+ sub rax, rdx\r
+ pop rdi\r
+ pop rsi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from CopyMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# CopyMem.S
-#
-# Abstract:
-#
-# CopyMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemCopyMem (
-# IN VOID *Destination,
-# IN VOID *Source,
-# IN UINTN Count
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemCopyMem)
-ASM_PFX(InternalMemCopyMem):
- push rsi
- push rdi
- mov rsi, rdx # rsi <- Source
- mov rdi, rcx # rdi <- Destination
- lea r9, [rsi + r8 - 1] # r9 <- End of Source
- cmp rsi, rdi
- mov rax, rdi # rax <- Destination as return value
- jae L0
- cmp r9, rdi
- jae L_CopyBackward # Copy backward if overlapped
-L0:
- mov rcx, r8
- and r8, 7
- shr rcx, 3 # rcx <- # of Qwords to copy
- jz L_CopyBytes
- movd r10, mm0 # (Save mm0 in r10)
-L1:
- movq mm0, [rsi]
- movntq [rdi], mm0
- add rsi, 8
- add rdi, 8
- loop L1
- mfence
- movd mm0, r10 # (Restore mm0)
- jmp L_CopyBytes
-L_CopyBackward:
- mov rsi, r9 # rsi <- End of Source
- lea rdi, [rdi + r8 - 1] # rdi <- End of Destination
- std # set direction flag
-L_CopyBytes:
- mov rcx, r8
- rep movsb # Copy bytes backward
- cld
- pop rdi
- pop rsi
- ret
+#\r
+# ConvertAsm.py: Automatically generated from CopyMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CopyMem.S\r
+#\r
+# Abstract:\r
+#\r
+# CopyMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemCopyMem (\r
+# IN VOID *Destination,\r
+# IN VOID *Source,\r
+# IN UINTN Count\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemCopyMem)\r
+ASM_PFX(InternalMemCopyMem):\r
+ push rsi\r
+ push rdi\r
+ mov rsi, rdx # rsi <- Source\r
+ mov rdi, rcx # rdi <- Destination\r
+ lea r9, [rsi + r8 - 1] # r9 <- End of Source\r
+ cmp rsi, rdi\r
+ mov rax, rdi # rax <- Destination as return value\r
+ jae L0\r
+ cmp r9, rdi\r
+ jae L_CopyBackward # Copy backward if overlapped\r
+L0:\r
+ mov rcx, r8\r
+ and r8, 7\r
+ shr rcx, 3 # rcx <- # of Qwords to copy\r
+ jz L_CopyBytes\r
+ movd r10, mm0 # (Save mm0 in r10)\r
+L1:\r
+ movq mm0, [rsi]\r
+ movntq [rdi], mm0\r
+ add rsi, 8\r
+ add rdi, 8\r
+ loop L1\r
+ mfence\r
+ movd mm0, r10 # (Restore mm0)\r
+ jmp L_CopyBytes\r
+L_CopyBackward:\r
+ mov rsi, r9 # rsi <- End of Source\r
+ lea rdi, [rdi + r8 - 1] # rdi <- End of Destination\r
+ std # set direction flag\r
+L_CopyBytes:\r
+ mov rcx, r8\r
+ rep movsb # Copy bytes backward\r
+ cld\r
+ pop rdi\r
+ pop rsi\r
+ ret\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem16.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem16.S
-#
-# Abstract:
-#
-# ScanMem16 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem16 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT16 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem16)
-ASM_PFX(InternalMemScanMem16):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasw
- lea rax, [rdi - 2]
- cmovnz rax, rcx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem16.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem16.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem16 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem16 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT16 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem16)\r
+ASM_PFX(InternalMemScanMem16):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ mov rcx, rdx\r
+ repne scasw\r
+ lea rax, [rdi - 2]\r
+ cmovnz rax, rcx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem32.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem32.S
-#
-# Abstract:
-#
-# ScanMem32 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem32 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT32 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem32)
-ASM_PFX(InternalMemScanMem32):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasd
- lea rax, [rdi - 4]
- cmovnz rax, rcx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem32.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem32.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem32 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem32 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT32 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem32)\r
+ASM_PFX(InternalMemScanMem32):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ mov rcx, rdx\r
+ repne scasd\r
+ lea rax, [rdi - 4]\r
+ cmovnz rax, rcx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem64.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem64.S
-#
-# Abstract:
-#
-# ScanMem64 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem64 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem64)
-ASM_PFX(InternalMemScanMem64):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasq
- lea rax, [rdi - 8]
- cmovnz rax, rcx
- pop rdi
- ret
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem64.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem64.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem64 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem64 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem64)\r
+ASM_PFX(InternalMemScanMem64):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ mov rcx, rdx\r
+ repne scasq\r
+ lea rax, [rdi - 8]\r
+ cmovnz rax, rcx\r
+ pop rdi\r
+ ret\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem8.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem8.S
-#
-# Abstract:
-#
-# ScanMem8 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem8 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT8 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem8)
-ASM_PFX(InternalMemScanMem8):
- push rdi
- mov rdi, rcx
- mov rcx, rdx
- mov rax, r8
- repne scasb
- lea rax, [rdi - 1]
- cmovnz rax, rcx # set rax to 0 if not found
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem8.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem8.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem8 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem8 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT8 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem8)\r
+ASM_PFX(InternalMemScanMem8):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rcx, rdx\r
+ mov rax, r8\r
+ repne scasb\r
+ lea rax, [rdi - 1]\r
+ cmovnz rax, rcx # set rax to 0 if not found\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from SetMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem.S
-#
-# Abstract:
-#
-# SetMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT8 Value
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem)
-ASM_PFX(InternalMemSetMem):
- push rdi
- mov rax, r8
- mov ah, al
- movq mm0, rax
- mov r8, rcx
- mov rdi, r8 # rdi <- Buffer
- mov rcx, rdx
- and edx, 7
- shr rcx, 3
- jz L_SetBytes
- pshufw mm0, mm0, 0x0
-L0:
- movntq [rdi], mm0
- add rdi, 8
- loop L0
- mfence
-L_SetBytes:
- mov ecx, edx
- rep stosb
- mov rax, r8
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from SetMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT8 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem)\r
+ASM_PFX(InternalMemSetMem):\r
+ push rdi\r
+ mov rax, r8\r
+ mov ah, al\r
+ movq mm0, rax\r
+ mov r8, rcx\r
+ mov rdi, r8 # rdi <- Buffer\r
+ mov rcx, rdx\r
+ and edx, 7\r
+ shr rcx, 3\r
+ jz L_SetBytes\r
+ pshufw mm0, mm0, 0x0\r
+L0:\r
+ movntq [rdi], mm0\r
+ add rdi, 8\r
+ loop L0\r
+ mfence\r
+L_SetBytes:\r
+ mov ecx, edx\r
+ rep stosb\r
+ mov rax, r8\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from SetMem16.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem16.S
-#
-# Abstract:
-#
-# SetMem16 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem16 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT16 Value
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem16)
-ASM_PFX(InternalMemSetMem16):
- push rdi
- mov rax, r8
- movq mm0, rax
- mov r8, rcx
- mov rdi, r8
- mov rcx, rdx
- and edx, 3
- shr rcx, 2
- jz L_SetWords
- pshufw mm0, mm0, 0x0
-L0:
- movntq [rdi], mm0
- add rdi, 8
- loop L0
- mfence
-L_SetWords:
- mov ecx, edx
- rep stosw
- mov rax, r8
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from SetMem16.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem16.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem16 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem16 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT16 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem16)\r
+ASM_PFX(InternalMemSetMem16):\r
+ push rdi\r
+ mov rax, r8\r
+ movq mm0, rax\r
+ mov r8, rcx\r
+ mov rdi, r8\r
+ mov rcx, rdx\r
+ and edx, 3\r
+ shr rcx, 2\r
+ jz L_SetWords\r
+ pshufw mm0, mm0, 0x0\r
+L0:\r
+ movntq [rdi], mm0\r
+ add rdi, 8\r
+ loop L0\r
+ mfence\r
+L_SetWords:\r
+ mov ecx, edx\r
+ rep stosw\r
+ mov rax, r8\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from SetMem32.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem32.S
-#
-# Abstract:
-#
-# SetMem32 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem32 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT32 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem32)
-ASM_PFX(InternalMemSetMem32):
- movq mm0, r8 # mm0 <- Value
- mov rax, rcx # rax <- Buffer
- xchg rcx, rdx # rcx <- Count rdx <- Buffer
- shr rcx, 1 # rcx <- # of qwords to set
- jz L_SetDwords
- pshufw mm0, mm0, 0x44
-L0:
- movntq [rdx], mm0
- lea rdx, [rdx + 8] # use "lea" to avoid flag changes
- loop L0
- mfence
-L_SetDwords:
- jnc L1
- movd [rdx], mm0
-L1:
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from SetMem32.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem32.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem32 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem32 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT32 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem32)\r
+ASM_PFX(InternalMemSetMem32):\r
+ movq mm0, r8 # mm0 <- Value\r
+ mov rax, rcx # rax <- Buffer\r
+ xchg rcx, rdx # rcx <- Count rdx <- Buffer\r
+ shr rcx, 1 # rcx <- # of qwords to set\r
+ jz L_SetDwords\r
+ pshufw mm0, mm0, 0x44\r
+L0:\r
+ movntq [rdx], mm0\r
+ lea rdx, [rdx + 8] # use "lea" to avoid flag changes\r
+ loop L0\r
+ mfence\r
+L_SetDwords:\r
+ jnc L1\r
+ movd [rdx], mm0\r
+L1:\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from SetMem64.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem64.S
-#
-# Abstract:
-#
-# SetMem64 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem64 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT64 Value
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem64)
-ASM_PFX(InternalMemSetMem64):
- movq mm0, r8 #Value
- mov rax, rcx #rax <- Buffer
- xchg rcx, rdx #rcx <- Count
-L0:
- movntq [rdx], mm0
- add rdx, 8
- loop L0
- mfence
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from SetMem64.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem64.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem64 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem64 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT64 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem64)\r
+ASM_PFX(InternalMemSetMem64):\r
+ movq mm0, r8 #Value\r
+ mov rax, rcx #rax <- Buffer\r
+ xchg rcx, rdx #rcx <- Count\r
+L0:\r
+ movntq [rdx], mm0\r
+ add rdx, 8\r
+ loop L0\r
+ mfence\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ZeroMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ZeroMem.S
-#
-# Abstract:
-#
-# ZeroMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemZeroMem (
-# IN VOID *Buffer,
-# IN UINTN Count
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemZeroMem)
-ASM_PFX(InternalMemZeroMem):
- push rdi
- mov rdi, rcx
- mov rcx, rdx
- mov r8, rdi
- and edx, 7
- shr rcx, 3
- jz L_ZeroBytes
- pxor mm0, mm0
-L0:
- movntq [rdi], mm0
- add rdi, 8
- loop L0
- mfence
-L_ZeroBytes:
- xor eax, eax
- mov ecx, edx
- rep stosb
- mov rax, r8
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ZeroMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ZeroMem.S\r
+#\r
+# Abstract:\r
+#\r
+# ZeroMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemZeroMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemZeroMem)\r
+ASM_PFX(InternalMemZeroMem):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rcx, rdx\r
+ mov r8, rdi\r
+ and edx, 7\r
+ shr rcx, 3\r
+ jz L_ZeroBytes\r
+ pxor mm0, mm0\r
+L0:\r
+ movntq [rdi], mm0\r
+ add rdi, 8\r
+ loop L0\r
+ mfence\r
+L_ZeroBytes:\r
+ xor eax, eax\r
+ mov ecx, edx\r
+ rep stosb\r
+ mov rax, r8\r
+ pop rdi\r
+ ret\r
+\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# CompareMem.S
-#
-# Abstract:
-#
-# CompareMem function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemCompareMem)
-
-#------------------------------------------------------------------------------
-# INTN
-# EFIAPI
-# InternalMemCompareMem (
-# IN CONST VOID *DestinationBuffer,
-# IN CONST VOID *SourceBuffer,
-# IN UINTN Length
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemCompareMem):
- push %esi
- push %edi
- movl 12(%esp), %esi
- movl 16(%esp), %edi
- movl 20(%esp), %ecx
- repe cmpsb
- movzbl -1(%esi), %eax
- movzbl -1(%edi), %edx
- subl %edx, %eax
- pop %edi
- pop %esi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CompareMem.S\r
+#\r
+# Abstract:\r
+#\r
+# CompareMem function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemCompareMem)\r
+\r
+#------------------------------------------------------------------------------\r
+# INTN\r
+# EFIAPI\r
+# InternalMemCompareMem (\r
+# IN CONST VOID *DestinationBuffer,\r
+# IN CONST VOID *SourceBuffer,\r
+# IN UINTN Length\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemCompareMem):\r
+ push %esi\r
+ push %edi\r
+ movl 12(%esp), %esi\r
+ movl 16(%esp), %edi\r
+ movl 20(%esp), %ecx\r
+ repe cmpsb\r
+ movzbl -1(%esi), %eax\r
+ movzbl -1(%edi), %edx\r
+ subl %edx, %eax\r
+ pop %edi\r
+ pop %esi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# CopyMem.S
-#
-# Abstract:
-#
-# CopyMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemCopyMem)
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemCopyMem (
-# IN VOID *Destination,
-# IN VOID *Source,
-# IN UINTN Count
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemCopyMem):
- push %esi
- push %edi
- movl 16(%esp), %esi # esi <- Source
- movl 12(%esp), %edi # edi <- Destination
- movl 20(%esp), %edx # edx <- Count
- leal -1(%esi,%edx,), %eax # eax <- End of Source
- cmpl %edi, %esi
- jae L0
- cmpl %edi, %eax # Overlapped?
- jae L_CopyBackward # Copy backward if overlapped
-L0:
- xorl %ecx, %ecx
- subl %edi, %ecx
- andl $15, %ecx # ecx + edi aligns on 16-byte boundary
- jz L1
- cmpl %edx, %ecx
- cmova %edx, %ecx
- subl %ecx, %edx # edx <- remaining bytes to copy
- rep
- movsb
-L1:
- movl %edx, %ecx
- andl $15, %edx
- shrl $4, %ecx # ecx <- # of DQwords to copy
- jz L_CopyBytes
- addl $-16, %esp
- movdqu %xmm0, (%esp)
-L2:
- movdqu (%esi), %xmm0
- movntdq %xmm0, (%edi)
- addl $16, %esi
- addl $16, %edi
- loop L2
- mfence
- movdqu (%esp),%xmm0
- addl $16, %esp # stack cleanup
- jmp L_CopyBytes
-L_CopyBackward:
- movl %eax, %esi # esi <- Last byte in Source
- leal -1(%edi,%edx,), %edi # edi <- Last byte in Destination
- std
-L_CopyBytes:
- movl %edx, %ecx
- rep
- movsb
- cld
- movl 12(%esp), %eax # eax <- Destination as return value
- pop %edi
- pop %esi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CopyMem.S\r
+#\r
+# Abstract:\r
+#\r
+# CopyMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemCopyMem)\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemCopyMem (\r
+# IN VOID *Destination,\r
+# IN VOID *Source,\r
+# IN UINTN Count\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemCopyMem):\r
+ push %esi\r
+ push %edi\r
+ movl 16(%esp), %esi # esi <- Source\r
+ movl 12(%esp), %edi # edi <- Destination\r
+ movl 20(%esp), %edx # edx <- Count\r
+ leal -1(%esi,%edx,), %eax # eax <- End of Source\r
+ cmpl %edi, %esi\r
+ jae L0\r
+ cmpl %edi, %eax # Overlapped?\r
+ jae L_CopyBackward # Copy backward if overlapped\r
+L0:\r
+ xorl %ecx, %ecx\r
+ subl %edi, %ecx\r
+ andl $15, %ecx # ecx + edi aligns on 16-byte boundary\r
+ jz L1\r
+ cmpl %edx, %ecx\r
+ cmova %edx, %ecx\r
+ subl %ecx, %edx # edx <- remaining bytes to copy\r
+ rep\r
+ movsb\r
+L1:\r
+ movl %edx, %ecx\r
+ andl $15, %edx\r
+ shrl $4, %ecx # ecx <- # of DQwords to copy\r
+ jz L_CopyBytes\r
+ addl $-16, %esp\r
+ movdqu %xmm0, (%esp)\r
+L2:\r
+ movdqu (%esi), %xmm0\r
+ movntdq %xmm0, (%edi)\r
+ addl $16, %esi\r
+ addl $16, %edi\r
+ loop L2\r
+ mfence\r
+ movdqu (%esp),%xmm0\r
+ addl $16, %esp # stack cleanup\r
+ jmp L_CopyBytes\r
+L_CopyBackward:\r
+ movl %eax, %esi # esi <- Last byte in Source\r
+ leal -1(%edi,%edx,), %edi # edi <- Last byte in Destination\r
+ std\r
+L_CopyBytes:\r
+ movl %edx, %ecx\r
+ rep\r
+ movsb\r
+ cld\r
+ movl 12(%esp), %eax # eax <- Destination as return value\r
+ pop %edi\r
+ pop %esi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ScanMem16.Asm
-#
-# Abstract:
-#
-# ScanMem16 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemScanMem16)
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem16 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT16 Value
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemScanMem16):
- push %edi
- movl 12(%esp), %ecx
- movl 8(%esp), %edi
- movl 16(%esp), %eax
- repne scasw
- leal -2(%edi), %eax
- cmovnz %ecx, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem16.Asm\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem16 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemScanMem16)\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem16 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT16 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemScanMem16):\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 8(%esp), %edi\r
+ movl 16(%esp), %eax\r
+ repne scasw\r
+ leal -2(%edi), %eax\r
+ cmovnz %ecx, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ScanMem32.S
-#
-# Abstract:
-#
-# ScanMem32 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemScanMem32)
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem32 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT32 Value
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemScanMem32):
- push %edi
- movl 12(%esp), %ecx
- movl 8(%esp), %edi
- movl 16(%esp), %eax
- repne scasl
- leal -4(%edi), %eax
- cmovnz %ecx, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem32.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem32 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemScanMem32)\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem32 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT32 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemScanMem32):\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 8(%esp), %edi\r
+ movl 16(%esp), %eax\r
+ repne scasl\r
+ leal -4(%edi), %eax\r
+ cmovnz %ecx, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ScanMem64.S
-#
-# Abstract:
-#
-# ScanMem64 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemScanMem64)
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem64 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemScanMem64):
- push %edi
- movl 12(%esp), %ecx
- movl 16(%esp), %eax
- movl 20(%esp), %edx
- movl 8(%esp), %edi
-L0:
- cmpl (%edi), %eax
- leal 8(%edi), %edi
- loopne L0
- jne L1
- cmpl -4(%edi), %edx
- jecxz L1
- jne L0
-L1:
- leal -8(%edi), %eax
- cmovne %ecx, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem64.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem64 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemScanMem64)\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem64 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemScanMem64):\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 16(%esp), %eax\r
+ movl 20(%esp), %edx\r
+ movl 8(%esp), %edi\r
+L0:\r
+ cmpl (%edi), %eax\r
+ leal 8(%edi), %edi\r
+ loopne L0\r
+ jne L1\r
+ cmpl -4(%edi), %edx\r
+ jecxz L1\r
+ jne L0\r
+L1:\r
+ leal -8(%edi), %eax\r
+ cmovne %ecx, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ScanMem8.S
-#
-# Abstract:
-#
-# ScanMem8 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemScanMem8)
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem8 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT8 Value
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemScanMem8):
- push %edi
- movl 12(%esp), %ecx
- movl 8(%esp), %edi
- movb 16(%esp), %al
- repne scasb
- leal -1(%edi), %eax
- cmovnz %ecx, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem8.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem8 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemScanMem8)\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem8 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT8 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemScanMem8):\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 8(%esp), %edi\r
+ movb 16(%esp), %al\r
+ repne scasb\r
+ leal -1(%edi), %eax\r
+ cmovnz %ecx, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetMem.S
-#
-# Abstract:
-#
-# SetMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
- .386:
- .code:
-
-.globl ASM_PFX(InternalMemSetMem)
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT8 Value
-# )
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemSetMem):
- push %edi
- movl 12(%esp),%ecx
- movb 16(%esp),%al
- movb %ah, %al
- shrd $16, %eax, %edx
- shld $16, %edx, %eax
- movl %edx, %ecx
- movl 8(%esp),%edi
- shrd $2, %ecx, %ecx
- rep
- stosl
- movl %ecx, %edx
- andl $3, %ecx
- rep
- stosb
- movl 8(%esp),%eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+ .386:\r
+ .code:\r
+\r
+.globl ASM_PFX(InternalMemSetMem)\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT8 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemSetMem):\r
+ push %edi\r
+ movl 12(%esp),%ecx\r
+ movb 16(%esp),%al\r
+ movb %ah, %al\r
+ shrd $16, %eax, %edx\r
+ shld $16, %edx, %eax\r
+ movl %edx, %ecx\r
+ movl 8(%esp),%edi\r
+ shrd $2, %ecx, %ecx\r
+ rep \r
+ stosl\r
+ movl %ecx, %edx\r
+ andl $3, %ecx\r
+ rep\r
+ stosb\r
+ movl 8(%esp),%eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetMem16.S
-#
-# Abstract:
-#
-# SetMem16 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemSetMem16)
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem16 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT16 Value
-# )
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemSetMem16):
- push %edi
- movl 16(%esp), %eax
- movl 8(%esp), %edi
- movl 12(%esp), %ecx
- rep
- stosw
- movl 8(%esp), %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem16.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem16 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemSetMem16)\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem16 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT16 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemSetMem16):\r
+ push %edi\r
+ movl 16(%esp), %eax\r
+ movl 8(%esp), %edi\r
+ movl 12(%esp), %ecx\r
+ rep\r
+ stosw\r
+ movl 8(%esp), %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetMem32.S
-#
-# Abstract:
-#
-# SetMem32 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemSetMem32)
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem32 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT32 Value
-# )
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemSetMem32):
- push %edi
- movl 16(%esp),%eax
- movl 8(%esp),%edi
- movl 12(%esp),%ecx
- rep
- stosl
- movl 8(%esp),%eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem32.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem32 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemSetMem32)\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem32 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT32 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemSetMem32):\r
+ push %edi\r
+ movl 16(%esp),%eax\r
+ movl 8(%esp),%edi\r
+ movl 12(%esp),%ecx\r
+ rep\r
+ stosl\r
+ movl 8(%esp),%eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetMem64.S
-#
-# Abstract:
-#
-# SetMem64 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemSetMem64)
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem64 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT64 Value
-# )
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemSetMem64):
- push %edi
- movl 12(%esp), %ecx
- movl 16(%esp), %eax
- movl 20(%esp), %edx
- movl 8(%esp), %edi
-L0:
- mov %eax, -8(%edi, %ecx, 8)
- mov %edx, -4(%edi, %ecx, 8)
- loop L0
- movl %edi, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem64.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem64 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemSetMem64)\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem64 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT64 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemSetMem64):\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 16(%esp), %eax\r
+ movl 20(%esp), %edx\r
+ movl 8(%esp), %edi\r
+L0:\r
+ mov %eax, -8(%edi, %ecx, 8)\r
+ mov %edx, -4(%edi, %ecx, 8)\r
+ loop L0\r
+ movl %edi, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ZeroMem.S
-#
-# Abstract:
-#
-# ZeroMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemZeroMem)
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemZeroMem (
-# IN VOID *Buffer,
-# IN UINTN Count
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemZeroMem):
- push %edi
- xorl %eax,%eax
- movl 8(%esp),%edi
- movl 12(%esp),%ecx
- movl %ecx,%edx
- shrl $2,%ecx
- andl $3,%edx
- pushl %edi
- rep
- stosl
- movl %edx,%ecx
- rep
- stosb
- popl %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ZeroMem.S\r
+#\r
+# Abstract:\r
+#\r
+# ZeroMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemZeroMem)\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemZeroMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemZeroMem):\r
+ push %edi\r
+ xorl %eax,%eax\r
+ movl 8(%esp),%edi\r
+ movl 12(%esp),%ecx\r
+ movl %ecx,%edx\r
+ shrl $2,%ecx\r
+ andl $3,%edx\r
+ pushl %edi\r
+ rep\r
+ stosl\r
+ movl %edx,%ecx\r
+ rep\r
+ stosb\r
+ popl %eax\r
+ pop %edi\r
+ ret\r
-#
-# ConvertAsm.py: Automatically generated from CompareMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# CompareMem.S
-#
-# Abstract:
-#
-# CompareMem function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# INTN
-# EFIAPI
-# InternalMemCompareMem (
-# IN CONST VOID *DestinationBuffer,
-# IN CONST VOID *SourceBuffer,
-# IN UINTN Length
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemCompareMem)
-ASM_PFX(InternalMemCompareMem):
- push rsi
- push rdi
- mov rsi, rcx
- mov rdi, rdx
- mov rcx, r8
- repe cmpsb
- movzx rax, byte ptr [rsi - 1]
- movzx rdx, byte ptr [rdi - 1]
- sub rax, rdx
- pop rdi
- pop rsi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from CompareMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CompareMem.S\r
+#\r
+# Abstract:\r
+#\r
+# CompareMem function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# INTN\r
+# EFIAPI\r
+# InternalMemCompareMem (\r
+# IN CONST VOID *DestinationBuffer,\r
+# IN CONST VOID *SourceBuffer,\r
+# IN UINTN Length\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemCompareMem)\r
+ASM_PFX(InternalMemCompareMem):\r
+ push rsi\r
+ push rdi\r
+ mov rsi, rcx\r
+ mov rdi, rdx\r
+ mov rcx, r8\r
+ repe cmpsb\r
+ movzx rax, byte ptr [rsi - 1]\r
+ movzx rdx, byte ptr [rdi - 1]\r
+ sub rax, rdx\r
+ pop rdi\r
+ pop rsi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from CopyMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# CopyMem.S
-#
-# Abstract:
-#
-# CopyMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemCopyMem (
-# IN VOID *Destination,
-# IN VOID *Source,
-# IN UINTN Count
-# )
+#\r
+# ConvertAsm.py: Automatically generated from CopyMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CopyMem.S\r
+#\r
+# Abstract:\r
+#\r
+# CopyMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemCopyMem (\r
+# IN VOID *Destination,\r
+# IN VOID *Source,\r
+# IN UINTN Count\r
+# )\r
#------------------------------------------------------------------------------\r
.intel_syntax noprefix\r
.globl ASM_PFX(InternalMemCopyMem)\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem16.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem16.S
-#
-# Abstract:
-#
-# ScanMem16 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem16 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT16 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem16)
-ASM_PFX(InternalMemScanMem16):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasw
- lea rax, [rdi - 2]
- cmovnz rax, rcx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem16.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem16.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem16 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem16 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT16 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem16)\r
+ASM_PFX(InternalMemScanMem16):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ mov rcx, rdx\r
+ repne scasw\r
+ lea rax, [rdi - 2]\r
+ cmovnz rax, rcx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem32.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem32.S
-#
-# Abstract:
-#
-# ScanMem32 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem32 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT32 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem32)
-ASM_PFX(InternalMemScanMem32):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasd
- lea rax, [rdi - 4]
- cmovnz rax, rcx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem32.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem32.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem32 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem32 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT32 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem32)\r
+ASM_PFX(InternalMemScanMem32):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ mov rcx, rdx\r
+ repne scasd\r
+ lea rax, [rdi - 4]\r
+ cmovnz rax, rcx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem64.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem64.S
-#
-# Abstract:
-#
-# ScanMem64 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem64 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem64)
-ASM_PFX(InternalMemScanMem64):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasq
- lea rax, [rdi - 8]
- cmovnz rax, rcx
- pop rdi
- ret
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem64.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem64.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem64 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem64 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem64)\r
+ASM_PFX(InternalMemScanMem64):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ mov rcx, rdx\r
+ repne scasq\r
+ lea rax, [rdi - 8]\r
+ cmovnz rax, rcx\r
+ pop rdi\r
+ ret\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem8.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem8.S
-#
-# Abstract:
-#
-# ScanMem8 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem8 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT8 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem8)
-ASM_PFX(InternalMemScanMem8):
- push rdi
- mov rdi, rcx
- mov rcx, rdx
- mov rax, r8
- repne scasb
- lea rax, [rdi - 1]
- cmovnz rax, rcx # set rax to 0 if not found
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem8.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem8.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem8 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem8 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT8 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem8)\r
+ASM_PFX(InternalMemScanMem8):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rcx, rdx\r
+ mov rax, r8\r
+ repne scasb\r
+ lea rax, [rdi - 1]\r
+ cmovnz rax, rcx # set rax to 0 if not found\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from SetMem16.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem16.S
-#
-# Abstract:
-#
-# SetMem16 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem16 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT16 Value
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem16)
-ASM_PFX(InternalMemSetMem16):
- push rdi
- mov rdi, rcx
- mov rax, r8
- xchg rcx, rdx
- rep stosw
- mov rax, rdx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from SetMem16.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem16.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem16 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem16 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT16 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem16)\r
+ASM_PFX(InternalMemSetMem16):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ xchg rcx, rdx\r
+ rep stosw\r
+ mov rax, rdx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from SetMem32.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem32.S
-#
-# Abstract:
-#
-# SetMem32 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem32 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT32 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem32)
-ASM_PFX(InternalMemSetMem32):
- push rdi
- mov rdi, rcx
- mov rax, r8
- xchg rcx, rdx
- rep stosd
- mov rax, rdx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from SetMem32.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem32.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem32 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem32 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT32 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem32)\r
+ASM_PFX(InternalMemSetMem32):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ xchg rcx, rdx\r
+ rep stosd\r
+ mov rax, rdx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from SetMem64.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem64.S
-#
-# Abstract:
-#
-# SetMem64 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem64 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT64 Value
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem64)
-ASM_PFX(InternalMemSetMem64):
- push rdi
- mov rdi, rcx
- mov rax, r8
- xchg rcx, rdx
- rep stosq
- mov rax, rdx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from SetMem64.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem64.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem64 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem64 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT64 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem64)\r
+ASM_PFX(InternalMemSetMem64):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ xchg rcx, rdx\r
+ rep stosq\r
+ mov rax, rdx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ZeroMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ZeroMem.S
-#
-# Abstract:
-#
-# ZeroMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemZeroMem (
-# IN VOID *Buffer,
-# IN UINTN Count
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemZeroMem)
-ASM_PFX(InternalMemZeroMem):
- push rdi
- push rcx
- xor rax, rax
- mov rdi, rcx
- mov rcx, rdx
- shr rcx, 3
+#\r
+# ConvertAsm.py: Automatically generated from ZeroMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ZeroMem.S\r
+#\r
+# Abstract:\r
+#\r
+# ZeroMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemZeroMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemZeroMem)\r
+ASM_PFX(InternalMemZeroMem):\r
+ push rdi\r
+ push rcx\r
+ xor rax, rax\r
+ mov rdi, rcx\r
+ mov rcx, rdx\r
+ shr rcx, 3\r
and rdx, 7\r
- cld
- rep stosq
- mov rcx, rdx
- rep stosb
- pop rax
- pop rdi
- ret
-
+ cld\r
+ rep stosq\r
+ mov rcx, rdx\r
+ rep stosb\r
+ pop rax\r
+ pop rdi\r
+ ret\r
+\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# CompareMem.S
-#
-# Abstract:
-#
-# CompareMem function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemCompareMem)
-
-#------------------------------------------------------------------------------
-# INTN
-# EFIAPI
-# InternalMemCompareMem (
-# IN CONST VOID *DestinationBuffer,
-# IN CONST VOID *SourceBuffer,
-# IN UINTN Length
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemCompareMem):
- push %esi
- push %edi
- movl 12(%esp), %esi
- movl 16(%esp), %edi
- movl 20(%esp), %ecx
- repe cmpsb
- movzbl -1(%esi), %eax
- movzbl -1(%edi), %edx
- subl %edx, %eax
- pop %edi
- pop %esi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CompareMem.S\r
+#\r
+# Abstract:\r
+#\r
+# CompareMem function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemCompareMem)\r
+\r
+#------------------------------------------------------------------------------\r
+# INTN\r
+# EFIAPI\r
+# InternalMemCompareMem (\r
+# IN CONST VOID *DestinationBuffer,\r
+# IN CONST VOID *SourceBuffer,\r
+# IN UINTN Length\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemCompareMem):\r
+ push %esi\r
+ push %edi\r
+ movl 12(%esp), %esi\r
+ movl 16(%esp), %edi\r
+ movl 20(%esp), %ecx\r
+ repe cmpsb\r
+ movzbl -1(%esi), %eax\r
+ movzbl -1(%edi), %edx\r
+ subl %edx, %eax\r
+ pop %edi\r
+ pop %esi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# CopyMem.S
-#
-# Abstract:
-#
-# CopyMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemCopyMem)
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemCopyMem (
-# IN VOID *Destination,
-# IN VOID *Source,
-# IN UINTN Count
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemCopyMem):
- push %esi
- push %edi
- movl 16(%esp), %esi # esi <- Source
- movl 12(%esp), %edi # edi <- Destination
- movl 20(%esp), %edx # edx <- Count
- cmpl %esi, %edi
- je L_CopyDone
- cmpl $0, %edx
- je L_CopyDone
- leal -1(%esi, %edx), %eax # eax <- End of Source
- cmpl %edi, %esi
- jae L_CopyBytes
- cmpl %edi, %eax
- jb L_CopyBytes # Copy backward if overlapped
- movl %eax, %esi # esi <- End of Source
- leal -1(%edi, %edx), %edi # edi <- End of Destination
- std
-L_CopyBytes:
- movl %edx, %ecx
- rep
- movsb # Copy bytes backward
- cld
-L_CopyDone:
- movl 12(%esp), %eax # eax <- Destination as return value
- pop %edi
- pop %esi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CopyMem.S\r
+#\r
+# Abstract:\r
+#\r
+# CopyMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemCopyMem)\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemCopyMem (\r
+# IN VOID *Destination,\r
+# IN VOID *Source,\r
+# IN UINTN Count\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemCopyMem):\r
+ push %esi\r
+ push %edi\r
+ movl 16(%esp), %esi # esi <- Source\r
+ movl 12(%esp), %edi # edi <- Destination\r
+ movl 20(%esp), %edx # edx <- Count\r
+ cmpl %esi, %edi\r
+ je L_CopyDone\r
+ cmpl $0, %edx\r
+ je L_CopyDone\r
+ leal -1(%esi, %edx), %eax # eax <- End of Source\r
+ cmpl %edi, %esi\r
+ jae L_CopyBytes\r
+ cmpl %edi, %eax\r
+ jb L_CopyBytes # Copy backward if overlapped\r
+ movl %eax, %esi # esi <- End of Source\r
+ leal -1(%edi, %edx), %edi # edi <- End of Destination\r
+ std\r
+L_CopyBytes:\r
+ movl %edx, %ecx\r
+ rep\r
+ movsb # Copy bytes backward\r
+ cld\r
+L_CopyDone:\r
+ movl 12(%esp), %eax # eax <- Destination as return value\r
+ pop %edi\r
+ pop %esi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ScanMem16.S
-#
-# Abstract:
-#
-# ScanMem16 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemScanMem16)
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem16 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT16 Value
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemScanMem16):
- push %edi
- movl 12(%esp), %ecx
- movl 8(%esp), %edi
- movl 16(%esp), %eax
- repne scasw
- leal -2(%edi), %eax
- cmovnz %ecx, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem16.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem16 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemScanMem16)\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem16 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT16 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemScanMem16):\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 8(%esp), %edi\r
+ movl 16(%esp), %eax\r
+ repne scasw\r
+ leal -2(%edi), %eax\r
+ cmovnz %ecx, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ScanMem32.Asm
-#
-# Abstract:
-#
-# ScanMem32 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemScanMem32)
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem32 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT32 Value
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemScanMem32):
- push %edi
- movl 12(%esp), %ecx
- movl 8(%esp), %edi
- movl 16(%esp), %eax
- repne scasl
- leal -4(%edi), %eax
- cmovnz %ecx, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem32.Asm\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem32 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemScanMem32)\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem32 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT32 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemScanMem32):\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 8(%esp), %edi\r
+ movl 16(%esp), %eax\r
+ repne scasl\r
+ leal -4(%edi), %eax\r
+ cmovnz %ecx, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ScanMem64.S
-#
-# Abstract:
-#
-# ScanMem64 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemScanMem64)
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem64 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemScanMem64):
- push %edi
- movl 12(%esp), %ecx
- movl 16(%esp), %eax
- movl 20(%esp), %edx
- movl 8(%esp), %edi
-L0:
- cmpl (%edi), %eax
- leal 8(%edi), %edi
- loopne L0
- jne L1
- cmpl -4(%edi), %edx
- jecxz L1
- jne L0
-L1:
- leal -8(%edi), %eax
- cmovne %ecx, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem64.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem64 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemScanMem64)\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem64 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemScanMem64):\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 16(%esp), %eax\r
+ movl 20(%esp), %edx\r
+ movl 8(%esp), %edi\r
+L0:\r
+ cmpl (%edi), %eax\r
+ leal 8(%edi), %edi\r
+ loopne L0\r
+ jne L1\r
+ cmpl -4(%edi), %edx\r
+ jecxz L1\r
+ jne L0\r
+L1:\r
+ leal -8(%edi), %eax\r
+ cmovne %ecx, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ScanMem8.S
-#
-# Abstract:
-#
-# ScanMem8 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemScanMem8)
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem8 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT8 Value
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemScanMem8):
- push %edi
- movl 12(%esp), %ecx
- movl 8(%esp), %edi
- movb 16(%esp), %al
- repne scasb
- leal -1(%edi), %eax
- cmovnz %ecx, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem8.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem8 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemScanMem8)\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem8 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT8 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemScanMem8):\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 8(%esp), %edi\r
+ movb 16(%esp), %al\r
+ repne scasb\r
+ leal -1(%edi), %eax\r
+ cmovnz %ecx, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetMem.S
-#
-# Abstract:
-#
-# SetMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemSetMem)
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT8 Value
-# )
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemSetMem):
- push %edi
- movl 12(%esp),%ecx
- movb 16(%esp),%al
- movb %al, %ah
- shrd $16, %eax, %edx
- shld $16, %edx, %eax
- movl %ecx, %edx
- movl 8(%esp),%edi
- shr $2, %ecx
- rep stosl
- movl %edx, %ecx
- andl $3, %ecx
- rep stosb
- movl 8(%esp),%eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemSetMem)\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT8 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemSetMem):\r
+ push %edi\r
+ movl 12(%esp),%ecx\r
+ movb 16(%esp),%al\r
+ movb %al, %ah\r
+ shrd $16, %eax, %edx\r
+ shld $16, %edx, %eax\r
+ movl %ecx, %edx\r
+ movl 8(%esp),%edi\r
+ shr $2, %ecx\r
+ rep stosl\r
+ movl %edx, %ecx\r
+ andl $3, %ecx\r
+ rep stosb\r
+ movl 8(%esp),%eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetMem16.S
-#
-# Abstract:
-#
-# SetMem16 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemSetMem16)
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem16 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT16 Value
-# )
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemSetMem16):
- push %edi
- movl 16(%esp), %eax
- movl 8(%esp), %edi
- movl 12(%esp), %ecx
- rep
- stosw
- movl 8(%esp), %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem16.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem16 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemSetMem16)\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem16 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT16 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemSetMem16):\r
+ push %edi\r
+ movl 16(%esp), %eax\r
+ movl 8(%esp), %edi\r
+ movl 12(%esp), %ecx\r
+ rep\r
+ stosw\r
+ movl 8(%esp), %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetMem32.S
-#
-# Abstract:
-#
-# SetMem32 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemSetMem32)
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem32 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT32 Value
-# )
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemSetMem32):
- push %edi
- movl 16(%esp),%eax
- movl 8(%esp),%edi
- movl 12(%esp),%ecx
- rep
- stosl
- movl 8(%esp),%eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem32.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem32 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemSetMem32)\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem32 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT32 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemSetMem32):\r
+ push %edi\r
+ movl 16(%esp),%eax\r
+ movl 8(%esp),%edi\r
+ movl 12(%esp),%ecx\r
+ rep\r
+ stosl\r
+ movl 8(%esp),%eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetMem64.S
-#
-# Abstract:
-#
-# SetMem64 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemSetMem64)
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem64 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT64 Value
-# )
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemSetMem64):
- push %edi
- movl 12(%esp), %ecx
- movl 16(%esp), %eax
- movl 20(%esp), %edx
- movl 8(%esp), %edi
-L0:
- mov %eax, -8(%edi, %ecx, 8)
- mov %edx, -4(%edi, %ecx, 8)
- loop L0
- movl %edi, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem64.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem64 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemSetMem64)\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem64 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT64 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemSetMem64):\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 16(%esp), %eax\r
+ movl 20(%esp), %edx\r
+ movl 8(%esp), %edi\r
+L0:\r
+ mov %eax, -8(%edi, %ecx, 8)\r
+ mov %edx, -4(%edi, %ecx, 8)\r
+ loop L0\r
+ movl %edi, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ZeroMem.S
-#
-# Abstract:
-#
-# ZeroMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl ASM_PFX(InternalMemZeroMem)
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemZeroMem (
-# IN VOID *Buffer,
-# IN UINTN Count
-# );
-#------------------------------------------------------------------------------
-ASM_PFX(InternalMemZeroMem):
- push %edi
- xorl %eax,%eax
- movl 8(%esp),%edi
- movl 12(%esp),%ecx
- movl %ecx,%edx
- shrl $2,%ecx
- andl $3,%edx
- pushl %edi
- rep
- stosl
- movl %edx,%ecx
- rep
- stosb
- popl %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ZeroMem.S\r
+#\r
+# Abstract:\r
+#\r
+# ZeroMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl ASM_PFX(InternalMemZeroMem)\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemZeroMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count\r
+# );\r
+#------------------------------------------------------------------------------\r
+ASM_PFX(InternalMemZeroMem):\r
+ push %edi\r
+ xorl %eax,%eax\r
+ movl 8(%esp),%edi\r
+ movl 12(%esp),%ecx\r
+ movl %ecx,%edx\r
+ shrl $2,%ecx\r
+ andl $3,%edx\r
+ pushl %edi\r
+ rep\r
+ stosl\r
+ movl %edx,%ecx\r
+ rep\r
+ stosb\r
+ popl %eax\r
+ pop %edi\r
+ ret\r
-#
-# ConvertAsm.py: Automatically generated from CompareMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# CompareMem.S
-#
-# Abstract:
-#
-# CompareMem function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# INTN
-# EFIAPI
-# InternalMemCompareMem (
-# IN CONST VOID *DestinationBuffer,
-# IN CONST VOID *SourceBuffer,
-# IN UINTN Length
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemCompareMem)
-ASM_PFX(InternalMemCompareMem):
- push rsi
- push rdi
- mov rsi, rcx
- mov rdi, rdx
- mov rcx, r8
- repe cmpsb
- movzx rax, byte ptr [rsi - 1]
- movzx rdx, byte ptr [rdi - 1]
- sub rax, rdx
- pop rdi
- pop rsi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from CompareMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CompareMem.S\r
+#\r
+# Abstract:\r
+#\r
+# CompareMem function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# INTN\r
+# EFIAPI\r
+# InternalMemCompareMem (\r
+# IN CONST VOID *DestinationBuffer,\r
+# IN CONST VOID *SourceBuffer,\r
+# IN UINTN Length\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemCompareMem)\r
+ASM_PFX(InternalMemCompareMem):\r
+ push rsi\r
+ push rdi\r
+ mov rsi, rcx\r
+ mov rdi, rdx\r
+ mov rcx, r8\r
+ repe cmpsb\r
+ movzx rax, byte ptr [rsi - 1]\r
+ movzx rdx, byte ptr [rdi - 1]\r
+ sub rax, rdx\r
+ pop rdi\r
+ pop rsi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from CopyMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# CopyMem.S
-#
-# Abstract:
-#
-# CopyMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemCopyMem (
-# IN VOID *Destination,
-# IN VOID *Source,
-# IN UINTN Count
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemCopyMem)
-ASM_PFX(InternalMemCopyMem):
- push rsi
- push rdi
- mov rsi, rdx # rsi <- Source
- mov rdi, rcx # rdi <- Destination
- lea r9, [rsi + r8 - 1] # r9 <- End of Source
- cmp rsi, rdi
- mov rax, rdi # rax <- Destination as return value
- jae _InternalMemCopyMem_al_0000
- cmp r9, rdi
- jae _atSym_CopyBackward # Copy backward if overlapped
-_InternalMemCopyMem_al_0000:
- mov rcx, r8
- and r8, 7
- shr rcx, 3
- rep movsq # Copy as many Qwords as possible
- jmp _atSym_CopyBytes
-_atSym_CopyBackward:
- mov rsi, r9 # rsi <- End of Source
- lea rdi, [rdi + r8 - 1] # esi <- End of Destination
- std # set direction flag
-_atSym_CopyBytes:
- mov rcx, r8
- rep movsb # Copy bytes backward
- cld
- pop rdi
- pop rsi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from CopyMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CopyMem.S\r
+#\r
+# Abstract:\r
+#\r
+# CopyMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemCopyMem (\r
+# IN VOID *Destination,\r
+# IN VOID *Source,\r
+# IN UINTN Count\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemCopyMem)\r
+ASM_PFX(InternalMemCopyMem):\r
+ push rsi\r
+ push rdi\r
+ mov rsi, rdx # rsi <- Source\r
+ mov rdi, rcx # rdi <- Destination\r
+ lea r9, [rsi + r8 - 1] # r9 <- End of Source\r
+ cmp rsi, rdi\r
+ mov rax, rdi # rax <- Destination as return value\r
+ jae _InternalMemCopyMem_al_0000\r
+ cmp r9, rdi\r
+ jae _atSym_CopyBackward # Copy backward if overlapped\r
+_InternalMemCopyMem_al_0000:\r
+ mov rcx, r8\r
+ and r8, 7\r
+ shr rcx, 3\r
+ rep movsq # Copy as many Qwords as possible\r
+ jmp _atSym_CopyBytes\r
+_atSym_CopyBackward:\r
+ mov rsi, r9 # rsi <- End of Source\r
+ lea rdi, [rdi + r8 - 1] # esi <- End of Destination\r
+ std # set direction flag\r
+_atSym_CopyBytes:\r
+ mov rcx, r8\r
+ rep movsb # Copy bytes backward\r
+ cld\r
+ pop rdi\r
+ pop rsi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem16.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem16.S
-#
-# Abstract:
-#
-# ScanMem16 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem16 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT16 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem16)
-ASM_PFX(InternalMemScanMem16):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasw
- lea rax, [rdi - 2]
- cmovnz rax, rcx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem16.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem16.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem16 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem16 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT16 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem16)\r
+ASM_PFX(InternalMemScanMem16):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ mov rcx, rdx\r
+ repne scasw\r
+ lea rax, [rdi - 2]\r
+ cmovnz rax, rcx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem32.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem32.S
-#
-# Abstract:
-#
-# ScanMem32 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem32 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT32 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem32)
-ASM_PFX(InternalMemScanMem32):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasd
- lea rax, [rdi - 4]
- cmovnz rax, rcx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem32.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem32.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem32 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem32 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT32 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem32)\r
+ASM_PFX(InternalMemScanMem32):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ mov rcx, rdx\r
+ repne scasd\r
+ lea rax, [rdi - 4]\r
+ cmovnz rax, rcx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem64.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem64.S
-#
-# Abstract:
-#
-# ScanMem64 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem64 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem64)
-ASM_PFX(InternalMemScanMem64):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasq
- lea rax, [rdi - 8]
- cmovnz rax, rcx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem64.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem64.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem64 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem64 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem64)\r
+ASM_PFX(InternalMemScanMem64):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ mov rcx, rdx\r
+ repne scasq\r
+ lea rax, [rdi - 8]\r
+ cmovnz rax, rcx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem8.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem8.S
-#
-# Abstract:
-#
-# ScanMem8 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem8 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT8 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem8)
-ASM_PFX(InternalMemScanMem8):
- push rdi
- mov rdi, rcx
- mov rcx, rdx
- mov rax, r8
- repne scasb
- lea rax, [rdi - 1]
- cmovnz rax, rcx # set rax to 0 if not found
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem8.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem8.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem8 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem8 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT8 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem8)\r
+ASM_PFX(InternalMemScanMem8):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rcx, rdx\r
+ mov rax, r8\r
+ repne scasb\r
+ lea rax, [rdi - 1]\r
+ cmovnz rax, rcx # set rax to 0 if not found\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from SetMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem.S
-#
-# Abstract:
-#
-# SetMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT8 Value
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem)
-ASM_PFX(InternalMemSetMem):
- push rdi
- mov rax, r8 # rax = Value
- mov rdi, rcx # rdi = Buffer
- xchg rcx, rdx # rcx = Count, rdx = Buffer
- rep stosb
- mov rax, rdx # rax = Buffer
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from SetMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT8 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem)\r
+ASM_PFX(InternalMemSetMem):\r
+ push rdi\r
+ mov rax, r8 # rax = Value\r
+ mov rdi, rcx # rdi = Buffer\r
+ xchg rcx, rdx # rcx = Count, rdx = Buffer\r
+ rep stosb\r
+ mov rax, rdx # rax = Buffer\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from SetMem16.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem16.S
-#
-# Abstract:
-#
-# SetMem16 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem16 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT16 Value
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem16)
-ASM_PFX(InternalMemSetMem16):
- push rdi
- mov rdi, rcx
- mov rax, r8
- xchg rcx, rdx
- rep stosw
- mov rax, rdx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from SetMem16.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem16.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem16 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem16 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT16 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem16)\r
+ASM_PFX(InternalMemSetMem16):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ xchg rcx, rdx\r
+ rep stosw\r
+ mov rax, rdx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from SetMem32.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem32.S
-#
-# Abstract:
-#
-# SetMem32 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem32 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT32 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem32)
-ASM_PFX(InternalMemSetMem32):
- push rdi
- mov rdi, rcx
- mov rax, r8
- xchg rcx, rdx
- rep stosd
- mov rax, rdx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from SetMem32.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem32.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem32 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem32 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT32 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem32)\r
+ASM_PFX(InternalMemSetMem32):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ xchg rcx, rdx\r
+ rep stosd\r
+ mov rax, rdx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from SetMem64.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem64.S
-#
-# Abstract:
-#
-# SetMem64 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem64 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT64 Value
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem64)
-ASM_PFX(InternalMemSetMem64):
- push rdi
- mov rdi, rcx
- mov rax, r8
- xchg rcx, rdx
- rep stosq
- mov rax, rdx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from SetMem64.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem64.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem64 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem64 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT64 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem64)\r
+ASM_PFX(InternalMemSetMem64):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ xchg rcx, rdx\r
+ rep stosq\r
+ mov rax, rdx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ZeroMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ZeroMem.S
-#
-# Abstract:
-#
-# ZeroMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemZeroMem (
-# IN VOID *Buffer,
-# IN UINTN Count
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemZeroMem)
-ASM_PFX(InternalMemZeroMem):
- push rdi
- push rcx
- xor rax, rax
- mov rdi, rcx
- mov rcx, rdx
- shr rcx, 3
- and rdx, 7
- rep stosq
- mov ecx, edx
- rep stosb
- pop rax
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ZeroMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ZeroMem.S\r
+#\r
+# Abstract:\r
+#\r
+# ZeroMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemZeroMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemZeroMem)\r
+ASM_PFX(InternalMemZeroMem):\r
+ push rdi\r
+ push rcx\r
+ xor rax, rax\r
+ mov rdi, rcx\r
+ mov rcx, rdx\r
+ shr rcx, 3\r
+ and rdx, 7\r
+ rep stosq\r
+ mov ecx, edx\r
+ rep stosb\r
+ pop rax\r
+ pop rdi\r
+ ret\r
+\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# CompareMem.Asm
-#
-# Abstract:
-#
-# CompareMem function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemCompareMem
-
-#------------------------------------------------------------------------------
-# INTN
-# EFIAPI
-# InternalMemCompareMem (
-# IN CONST VOID *DestinationBuffer,
-# IN CONST VOID *SourceBuffer,
-# IN UINTN Length
-# );
-#------------------------------------------------------------------------------
-_InternalMemCompareMem:
- push %esi
- push %edi
- movl 12(%esp), %esi
- movl 16(%esp), %edi
- movl 20(%esp), %ecx
- repe cmpsb
- movzbl -1(%esi), %eax
- movzbl -1(%edi), %edx
- subl %edx, %eax
- pop %edi
- pop %esi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CompareMem.Asm\r
+#\r
+# Abstract:\r
+#\r
+# CompareMem function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemCompareMem\r
+\r
+#------------------------------------------------------------------------------\r
+# INTN\r
+# EFIAPI\r
+# InternalMemCompareMem (\r
+# IN CONST VOID *DestinationBuffer,\r
+# IN CONST VOID *SourceBuffer,\r
+# IN UINTN Length\r
+# );\r
+#------------------------------------------------------------------------------\r
+_InternalMemCompareMem:\r
+ push %esi\r
+ push %edi\r
+ movl 12(%esp), %esi\r
+ movl 16(%esp), %edi\r
+ movl 20(%esp), %ecx\r
+ repe cmpsb\r
+ movzbl -1(%esi), %eax\r
+ movzbl -1(%edi), %edx\r
+ subl %edx, %eax\r
+ pop %edi\r
+ pop %esi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# CopyMem.Asm
-#
-# Abstract:
-#
-# CopyMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemCopyMem
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemCopyMem (
-# IN VOID *Destination,
-# IN VOID *Source,
-# IN UINTN Count
-# );
-#------------------------------------------------------------------------------
-_InternalMemCopyMem:
- push %esi
- push %edi
- movl 16(%esp), %esi # esi <- Source
- movl 12(%esp), %edi # edi <- Destination
- movl 20(%esp), %edx # edx <- Count
- leal -1(%esi, %edx), %eax # eax <- End of Source
- cmpl %edi, %esi
- jae L0
- cmpl %edi, %eax
- jae L_CopyBackward # Copy backward if overlapped
-L0:
- movl %edx, %ecx
- andl $3, %edx
- shrl $2, %ecx
- rep
- movsl # Copy as many Dwords as possible
- jmp L_CopyBytes
-L_CopyBackward:
- movl %eax, %esi # esi <- End of Source
- leal -1(%edi, %edx), %edi # edi <- End of Destination
- std
-L_CopyBytes:
- movl %edx, %ecx
- rep
- movsb # Copy bytes backward
- cld
- movl 12(%esp), %eax # eax <- Destination as return value
- pop %edi
- pop %esi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CopyMem.Asm\r
+#\r
+# Abstract:\r
+#\r
+# CopyMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemCopyMem\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemCopyMem (\r
+# IN VOID *Destination,\r
+# IN VOID *Source,\r
+# IN UINTN Count\r
+# );\r
+#------------------------------------------------------------------------------\r
+_InternalMemCopyMem:\r
+ push %esi\r
+ push %edi\r
+ movl 16(%esp), %esi # esi <- Source\r
+ movl 12(%esp), %edi # edi <- Destination\r
+ movl 20(%esp), %edx # edx <- Count\r
+ leal -1(%esi, %edx), %eax # eax <- End of Source\r
+ cmpl %edi, %esi\r
+ jae L0\r
+ cmpl %edi, %eax\r
+ jae L_CopyBackward # Copy backward if overlapped\r
+L0:\r
+ movl %edx, %ecx\r
+ andl $3, %edx\r
+ shrl $2, %ecx\r
+ rep\r
+ movsl # Copy as many Dwords as possible\r
+ jmp L_CopyBytes\r
+L_CopyBackward:\r
+ movl %eax, %esi # esi <- End of Source\r
+ leal -1(%edi, %edx), %edi # edi <- End of Destination\r
+ std\r
+L_CopyBytes:\r
+ movl %edx, %ecx\r
+ rep\r
+ movsb # Copy bytes backward\r
+ cld\r
+ movl 12(%esp), %eax # eax <- Destination as return value\r
+ pop %edi\r
+ pop %esi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ScanMem16.Asm
-#
-# Abstract:
-#
-# ScanMem16 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemScanMem16
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem16 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT16 Value
-# );
-#------------------------------------------------------------------------------
-_InternalMemScanMem16:
- push %edi
- movl 12(%esp), %ecx
- movl 8(%esp), %edi
- movl 16(%esp), %eax
- repne scasw
- leal -2(%edi), %eax
- cmovnz %ecx, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem16.Asm\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem16 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemScanMem16\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem16 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT16 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+_InternalMemScanMem16:\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 8(%esp), %edi\r
+ movl 16(%esp), %eax\r
+ repne scasw\r
+ leal -2(%edi), %eax\r
+ cmovnz %ecx, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ScanMem32.Asm
-#
-# Abstract:
-#
-# ScanMem32 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemScanMem32
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem32 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT32 Value
-# );
-#------------------------------------------------------------------------------
-_InternalMemScanMem32:
- push %edi
- movl 12(%esp), %ecx
- movl 8(%esp), %edi
- movl 16(%esp), %eax
- repne scasl
- leal -4(%edi), %eax
- cmovnz %ecx, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem32.Asm\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem32 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemScanMem32\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem32 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT32 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+_InternalMemScanMem32:\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 8(%esp), %edi\r
+ movl 16(%esp), %eax\r
+ repne scasl\r
+ leal -4(%edi), %eax\r
+ cmovnz %ecx, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ScanMem64.Asm
-#
-# Abstract:
-#
-# ScanMem64 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemScanMem64
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem64 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-_InternalMemScanMem64:
- push %edi
- movl 12(%esp), %ecx
- movl 16(%esp), %eax
- movl 20(%esp), %edx
- movl 8(%esp), %edi
-L0:
- cmpl (%edi), %eax
- leal 8(%edi), %edi
- loopne L0
- jne L1
- cmpl -4(%edi), %edx
- jecxz L1
- jne L0
-L1:
- leal -8(%edi), %eax
- cmovne %ecx, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem64.Asm\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem64 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemScanMem64\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem64 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+_InternalMemScanMem64:\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 16(%esp), %eax\r
+ movl 20(%esp), %edx\r
+ movl 8(%esp), %edi\r
+L0:\r
+ cmpl (%edi), %eax\r
+ leal 8(%edi), %edi\r
+ loopne L0\r
+ jne L1\r
+ cmpl -4(%edi), %edx\r
+ jecxz L1\r
+ jne L0\r
+L1:\r
+ leal -8(%edi), %eax\r
+ cmovne %ecx, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ScanMem8.Asm
-#
-# Abstract:
-#
-# ScanMem8 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemScanMem8
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem8 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT8 Value
-# );
-#------------------------------------------------------------------------------
-_InternalMemScanMem8:
- push %edi
- movl 12(%esp), %ecx
- movl 8(%esp), %edi
- movb 16(%esp), %al
- repne scasb
- leal -1(%edi), %eax
- cmovnz %ecx, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem8.Asm\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem8 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemScanMem8\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem8 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT8 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+_InternalMemScanMem8:\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 8(%esp), %edi\r
+ movb 16(%esp), %al\r
+ repne scasb\r
+ leal -1(%edi), %eax\r
+ cmovnz %ecx, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetMem.Asm
-#
-# Abstract:
-#
-# SetMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
- .386:
- .code:
-
-.globl _InternalMemSetMem
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT8 Value
-# )
-#------------------------------------------------------------------------------
-_InternalMemSetMem:
- push %edi
- movl 16(%esp),%eax
- movl 8(%esp),%edi
- movl 12(%esp),%ecx
- rep
- stosb
- movl 8(%esp),%eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem.Asm\r
+#\r
+# Abstract:\r
+#\r
+# SetMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+ .386:\r
+ .code:\r
+\r
+.globl _InternalMemSetMem\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT8 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+_InternalMemSetMem:\r
+ push %edi\r
+ movl 16(%esp),%eax\r
+ movl 8(%esp),%edi\r
+ movl 12(%esp),%ecx\r
+ rep\r
+ stosb\r
+ movl 8(%esp),%eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetMem16.Asm
-#
-# Abstract:
-#
-# SetMem16 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemSetMem16
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem16 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT16 Value
-# )
-#------------------------------------------------------------------------------
-_InternalMemSetMem16:
- push %edi
- movl 16(%esp), %eax
- movl 8(%esp), %edi
- movl 12(%esp), %ecx
- rep
- stosw
- movl 8(%esp), %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem16.Asm\r
+#\r
+# Abstract:\r
+#\r
+# SetMem16 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemSetMem16\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem16 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT16 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+_InternalMemSetMem16:\r
+ push %edi\r
+ movl 16(%esp), %eax\r
+ movl 8(%esp), %edi\r
+ movl 12(%esp), %ecx\r
+ rep\r
+ stosw\r
+ movl 8(%esp), %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetMem32.Asm
-#
-# Abstract:
-#
-# SetMem32 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemSetMem32
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem32 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT32 Value
-# )
-#------------------------------------------------------------------------------
-_InternalMemSetMem32:
- push %edi
- movl 16(%esp),%eax
- movl 8(%esp),%edi
- movl 12(%esp),%ecx
- rep
- stosl
- movl 8(%esp),%eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem32.Asm\r
+#\r
+# Abstract:\r
+#\r
+# SetMem32 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemSetMem32\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem32 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT32 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+_InternalMemSetMem32:\r
+ push %edi\r
+ movl 16(%esp),%eax\r
+ movl 8(%esp),%edi\r
+ movl 12(%esp),%ecx\r
+ rep\r
+ stosl\r
+ movl 8(%esp),%eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetMem64.Asm
-#
-# Abstract:
-#
-# SetMem64 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemSetMem64
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem64 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT64 Value
-# )
-#------------------------------------------------------------------------------
-_InternalMemSetMem64:
- push %edi
- movl 12(%esp), %ecx
- movl 16(%esp), %eax
- movl 20(%esp), %edx
- movl 8(%esp), %edi
-L0:
- mov %eax, -8(%edi, %ecx, 8)
- mov %edx, -4(%edi, %ecx, 8)
- loop L0
- movl %edi, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem64.Asm\r
+#\r
+# Abstract:\r
+#\r
+# SetMem64 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemSetMem64\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem64 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT64 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+_InternalMemSetMem64:\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 16(%esp), %eax\r
+ movl 20(%esp), %edx\r
+ movl 8(%esp), %edi\r
+L0:\r
+ mov %eax, -8(%edi, %ecx, 8)\r
+ mov %edx, -4(%edi, %ecx, 8)\r
+ loop L0\r
+ movl %edi, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ZeroMem.Asm
-#
-# Abstract:
-#
-# ZeroMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemZeroMem
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemZeroMem (
-# IN VOID *Buffer,
-# IN UINTN Count
-# );
-#------------------------------------------------------------------------------
-_InternalMemZeroMem:
- push %edi
- xorl %eax,%eax
- movl 8(%esp),%edi
- movl 12(%esp),%ecx
- movl %ecx,%edx
- shrl $2,%ecx
- andl $3,%edx
- pushl %edi
- rep
- stosl
- movl %edx,%ecx
- rep
- stosb
- popl %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ZeroMem.Asm\r
+#\r
+# Abstract:\r
+#\r
+# ZeroMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemZeroMem\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemZeroMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count\r
+# );\r
+#------------------------------------------------------------------------------\r
+_InternalMemZeroMem:\r
+ push %edi\r
+ xorl %eax,%eax\r
+ movl 8(%esp),%edi\r
+ movl 12(%esp),%ecx\r
+ movl %ecx,%edx\r
+ shrl $2,%ecx\r
+ andl $3,%edx\r
+ pushl %edi\r
+ rep\r
+ stosl\r
+ movl %edx,%ecx\r
+ rep\r
+ stosb\r
+ popl %eax\r
+ pop %edi\r
+ ret\r
-#
-# ConvertAsm.py: Automatically generated from CompareMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# CompareMem.S
-#
-# Abstract:
-#
-# CompareMem function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# INTN
-# EFIAPI
-# InternalMemCompareMem (
-# IN CONST VOID *DestinationBuffer,
-# IN CONST VOID *SourceBuffer,
-# IN UINTN Length
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemCompareMem)
-ASM_PFX(InternalMemCompareMem):
- push rsi
- push rdi
- mov rsi, rcx
- mov rdi, rdx
- mov rcx, r8
- repe cmpsb
- movzx rax, byte ptr [rsi - 1]
- movzx rdx, byte ptr [rdi - 1]
- sub rax, rdx
- pop rdi
- pop rsi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from CompareMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CompareMem.S\r
+#\r
+# Abstract:\r
+#\r
+# CompareMem function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# INTN\r
+# EFIAPI\r
+# InternalMemCompareMem (\r
+# IN CONST VOID *DestinationBuffer,\r
+# IN CONST VOID *SourceBuffer,\r
+# IN UINTN Length\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemCompareMem)\r
+ASM_PFX(InternalMemCompareMem):\r
+ push rsi\r
+ push rdi\r
+ mov rsi, rcx\r
+ mov rdi, rdx\r
+ mov rcx, r8\r
+ repe cmpsb\r
+ movzx rax, byte ptr [rsi - 1]\r
+ movzx rdx, byte ptr [rdi - 1]\r
+ sub rax, rdx\r
+ pop rdi\r
+ pop rsi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from CopyMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# CopyMem.S
-#
-# Abstract:
-#
-# CopyMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemCopyMem (
-# IN VOID *Destination,
-# IN VOID *Source,
-# IN UINTN Count
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemCopyMem)
-ASM_PFX(InternalMemCopyMem):
- push rsi
- push rdi
- mov rsi, rdx # rsi <- Source
- mov rdi, rcx # rdi <- Destination
- lea r9, [rsi + r8 - 1] # r9 <- End of Source
- cmp rsi, rdi
- mov rax, rdi # rax <- Destination as return value
- jae L0
- cmp r9, rdi
- jae L_CopyBackward # Copy backward if overlapped
-L0:
- mov rcx, r8
- and r8, 7
- shr rcx, 3
- rep movsq # Copy as many Qwords as possible
- jmp L_CopyBytes
-L_CopyBackward:
- mov rsi, r9 # rsi <- End of Source
- lea rdi, [rdi + r8 - 1] # esi <- End of Destination
- std # set direction flag
-L_CopyBytes:
- mov rcx, r8
- rep movsb # Copy bytes backward
- cld
- pop rdi
- pop rsi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from CopyMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CopyMem.S\r
+#\r
+# Abstract:\r
+#\r
+# CopyMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemCopyMem (\r
+# IN VOID *Destination,\r
+# IN VOID *Source,\r
+# IN UINTN Count\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemCopyMem)\r
+ASM_PFX(InternalMemCopyMem):\r
+ push rsi\r
+ push rdi\r
+ mov rsi, rdx # rsi <- Source\r
+ mov rdi, rcx # rdi <- Destination\r
+ lea r9, [rsi + r8 - 1] # r9 <- End of Source\r
+ cmp rsi, rdi\r
+ mov rax, rdi # rax <- Destination as return value\r
+ jae L0\r
+ cmp r9, rdi\r
+ jae L_CopyBackward # Copy backward if overlapped\r
+L0:\r
+ mov rcx, r8\r
+ and r8, 7\r
+ shr rcx, 3\r
+ rep movsq # Copy as many Qwords as possible\r
+ jmp L_CopyBytes\r
+L_CopyBackward:\r
+ mov rsi, r9 # rsi <- End of Source\r
+ lea rdi, [rdi + r8 - 1] # esi <- End of Destination\r
+ std # set direction flag\r
+L_CopyBytes:\r
+ mov rcx, r8\r
+ rep movsb # Copy bytes backward\r
+ cld\r
+ pop rdi\r
+ pop rsi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem16.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem16.S
-#
-# Abstract:
-#
-# ScanMem16 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem16 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT16 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem16)
-ASM_PFX(InternalMemScanMem16):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasw
- lea rax, [rdi - 2]
- cmovnz rax, rcx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem16.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem16.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem16 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem16 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT16 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem16)\r
+ASM_PFX(InternalMemScanMem16):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ mov rcx, rdx\r
+ repne scasw\r
+ lea rax, [rdi - 2]\r
+ cmovnz rax, rcx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem32.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem32.S
-#
-# Abstract:
-#
-# ScanMem32 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem32 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT32 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem32)
-ASM_PFX(InternalMemScanMem32):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasd
- lea rax, [rdi - 4]
- cmovnz rax, rcx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem32.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem32.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem32 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem32 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT32 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem32)\r
+ASM_PFX(InternalMemScanMem32):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ mov rcx, rdx\r
+ repne scasd\r
+ lea rax, [rdi - 4]\r
+ cmovnz rax, rcx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem64.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem64.S
-#
-# Abstract:
-#
-# ScanMem64 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem64 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem64)
-ASM_PFX(InternalMemScanMem64):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasq
- lea rax, [rdi - 8]
- cmovnz rax, rcx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem64.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem64.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem64 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem64 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem64)\r
+ASM_PFX(InternalMemScanMem64):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ mov rcx, rdx\r
+ repne scasq\r
+ lea rax, [rdi - 8]\r
+ cmovnz rax, rcx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem8.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem8.S
-#
-# Abstract:
-#
-# ScanMem8 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem8 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT8 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem8)
-ASM_PFX(InternalMemScanMem8):
- push rdi
- mov rdi, rcx
- mov rcx, rdx
- mov rax, r8
- repne scasb
- lea rax, [rdi - 1]
- cmovnz rax, rcx # set rax to 0 if not found
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem8.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem8.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem8 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem8 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT8 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem8)\r
+ASM_PFX(InternalMemScanMem8):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rcx, rdx\r
+ mov rax, r8\r
+ repne scasb\r
+ lea rax, [rdi - 1]\r
+ cmovnz rax, rcx # set rax to 0 if not found\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from SetMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem.S
-#
-# Abstract:
-#
-# SetMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT8 Value
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem)
-ASM_PFX(InternalMemSetMem):
- push rdi
- mov rax, r8 # rax = Value
- mov rdi, rcx # rdi = Buffer
- xchg rcx, rdx # rcx = Count, rdx = Buffer
- rep stosb
- mov rax, rdx # rax = Buffer
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from SetMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT8 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem)\r
+ASM_PFX(InternalMemSetMem):\r
+ push rdi\r
+ mov rax, r8 # rax = Value\r
+ mov rdi, rcx # rdi = Buffer\r
+ xchg rcx, rdx # rcx = Count, rdx = Buffer\r
+ rep stosb\r
+ mov rax, rdx # rax = Buffer\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from SetMem16.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem16.S
-#
-# Abstract:
-#
-# SetMem16 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem16 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT16 Value
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem16)
-ASM_PFX(InternalMemSetMem16):
- push rdi
- mov rdi, rcx
- mov rax, r8
- xchg rcx, rdx
- rep stosw
- mov rax, rdx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from SetMem16.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem16.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem16 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem16 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT16 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem16)\r
+ASM_PFX(InternalMemSetMem16):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ xchg rcx, rdx\r
+ rep stosw\r
+ mov rax, rdx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from SetMem32.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem32.S
-#
-# Abstract:
-#
-# SetMem32 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem32 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT32 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem32)
-ASM_PFX(InternalMemSetMem32):
- push rdi
- mov rdi, rcx
- mov rax, r8
- xchg rcx, rdx
- rep stosd
- mov rax, rdx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from SetMem32.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem32.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem32 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem32 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT32 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem32)\r
+ASM_PFX(InternalMemSetMem32):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ xchg rcx, rdx\r
+ rep stosd\r
+ mov rax, rdx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from SetMem64.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem64.S
-#
-# Abstract:
-#
-# SetMem64 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem64 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT64 Value
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem64)
-ASM_PFX(InternalMemSetMem64):
- push rdi
- mov rdi, rcx
- mov rax, r8
- xchg rcx, rdx
- rep stosq
- mov rax, rdx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from SetMem64.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem64.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem64 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem64 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT64 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem64)\r
+ASM_PFX(InternalMemSetMem64):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ xchg rcx, rdx\r
+ rep stosq\r
+ mov rax, rdx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ZeroMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ZeroMem.S
-#
-# Abstract:
-#
-# ZeroMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemZeroMem (
-# IN VOID *Buffer,
-# IN UINTN Count
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemZeroMem)
-ASM_PFX(InternalMemZeroMem):
- push rdi
- push rcx
- xor rax, rax
- mov rdi, rcx
- mov rcx, rdx
- shr rcx, 3
- and rdx, 7
- rep stosq
- mov ecx, edx
- rep stosb
- pop rax
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ZeroMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ZeroMem.S\r
+#\r
+# Abstract:\r
+#\r
+# ZeroMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemZeroMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemZeroMem)\r
+ASM_PFX(InternalMemZeroMem):\r
+ push rdi\r
+ push rcx\r
+ xor rax, rax\r
+ mov rdi, rcx\r
+ mov rcx, rdx\r
+ shr rcx, 3\r
+ and rdx, 7\r
+ rep stosq\r
+ mov ecx, edx\r
+ rep stosb\r
+ pop rax\r
+ pop rdi\r
+ ret\r
+\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# CompareMem.Asm
-#
-# Abstract:
-#
-# CompareMem function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemCompareMem
-
-#------------------------------------------------------------------------------
-# INTN
-# EFIAPI
-# InternalMemCompareMem (
-# IN CONST VOID *DestinationBuffer,
-# IN CONST VOID *SourceBuffer,
-# IN UINTN Length
-# );
-#------------------------------------------------------------------------------
-_InternalMemCompareMem:
- push %esi
- push %edi
- movl 12(%esp), %esi
- movl 16(%esp), %edi
- movl 20(%esp), %ecx
- repe cmpsb
- movzbl -1(%esi), %eax
- movzbl -1(%edi), %edx
- subl %edx, %eax
- pop %edi
- pop %esi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CompareMem.Asm\r
+#\r
+# Abstract:\r
+#\r
+# CompareMem function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemCompareMem\r
+\r
+#------------------------------------------------------------------------------\r
+# INTN\r
+# EFIAPI\r
+# InternalMemCompareMem (\r
+# IN CONST VOID *DestinationBuffer,\r
+# IN CONST VOID *SourceBuffer,\r
+# IN UINTN Length\r
+# );\r
+#------------------------------------------------------------------------------\r
+_InternalMemCompareMem:\r
+ push %esi\r
+ push %edi\r
+ movl 12(%esp), %esi\r
+ movl 16(%esp), %edi\r
+ movl 20(%esp), %ecx\r
+ repe cmpsb\r
+ movzbl -1(%esi), %eax\r
+ movzbl -1(%edi), %edx\r
+ subl %edx, %eax\r
+ pop %edi\r
+ pop %esi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# CopyMem.asm
-#
-# Abstract:
-#
-# CopyMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemCopyMem
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemCopyMem (
-# IN VOID *Destination,
-# IN VOID *Source,
-# IN UINTN Count
-# );
-#------------------------------------------------------------------------------
-_InternalMemCopyMem:
- push %esi
- push %edi
- movl 16(%esp), %esi # esi <- Source
- movl 12(%esp), %edi # edi <- Destination
- movl 20(%esp), %edx # edx <- Count
- leal -1(%esi,%edx,), %eax # eax <- End of Source
- cmpl %edi, %esi
- jae L0
- cmpl %edi, %eax # Overlapped?
- jae L_CopyBackward # Copy backward if overlapped
-L0:
- xorl %ecx, %ecx
- subl %edi, %ecx
- andl $15, %ecx # ecx + edi aligns on 16-byte boundary
- jz L1
- cmpl %edx, %ecx
- cmova %edx, %ecx
- subl %ecx, %edx # edx <- remaining bytes to copy
- rep
- movsb
-L1:
- movl %edx, %ecx
- andl $15, %edx
- shrl $4, %ecx # ecx <- # of DQwords to copy
- jz L_CopyBytes
- addl $-16, %esp
- movdqu %xmm0, (%esp)
-L2:
- movdqu (%esi), %xmm0
- movntdq %xmm0, (%edi)
- addl $16, %esi
- addl $16, %edi
- loop L2
- mfence
- movdqu (%esp),%xmm0
- addl $16, %esp # stack cleanup
- jmp L_CopyBytes
-L_CopyBackward:
- movl %eax, %esi # esi <- Last byte in Source
- leal -1(%edi,%edx,), %edi # edi <- Last byte in Destination
- std
-L_CopyBytes:
- movl %edx, %ecx
- rep
- movsb
- cld
- movl 12(%esp), %eax # eax <- Destination as return value
- pop %edi
- pop %esi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CopyMem.asm\r
+#\r
+# Abstract:\r
+#\r
+# CopyMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemCopyMem\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemCopyMem (\r
+# IN VOID *Destination,\r
+# IN VOID *Source,\r
+# IN UINTN Count\r
+# );\r
+#------------------------------------------------------------------------------\r
+_InternalMemCopyMem:\r
+ push %esi\r
+ push %edi\r
+ movl 16(%esp), %esi # esi <- Source\r
+ movl 12(%esp), %edi # edi <- Destination\r
+ movl 20(%esp), %edx # edx <- Count\r
+ leal -1(%esi,%edx,), %eax # eax <- End of Source\r
+ cmpl %edi, %esi\r
+ jae L0\r
+ cmpl %edi, %eax # Overlapped?\r
+ jae L_CopyBackward # Copy backward if overlapped\r
+L0:\r
+ xorl %ecx, %ecx\r
+ subl %edi, %ecx\r
+ andl $15, %ecx # ecx + edi aligns on 16-byte boundary\r
+ jz L1\r
+ cmpl %edx, %ecx\r
+ cmova %edx, %ecx\r
+ subl %ecx, %edx # edx <- remaining bytes to copy\r
+ rep\r
+ movsb\r
+L1:\r
+ movl %edx, %ecx\r
+ andl $15, %edx\r
+ shrl $4, %ecx # ecx <- # of DQwords to copy\r
+ jz L_CopyBytes\r
+ addl $-16, %esp\r
+ movdqu %xmm0, (%esp)\r
+L2:\r
+ movdqu (%esi), %xmm0\r
+ movntdq %xmm0, (%edi)\r
+ addl $16, %esi\r
+ addl $16, %edi\r
+ loop L2\r
+ mfence\r
+ movdqu (%esp),%xmm0\r
+ addl $16, %esp # stack cleanup\r
+ jmp L_CopyBytes\r
+L_CopyBackward:\r
+ movl %eax, %esi # esi <- Last byte in Source\r
+ leal -1(%edi,%edx,), %edi # edi <- Last byte in Destination\r
+ std\r
+L_CopyBytes:\r
+ movl %edx, %ecx\r
+ rep\r
+ movsb\r
+ cld\r
+ movl 12(%esp), %eax # eax <- Destination as return value\r
+ pop %edi\r
+ pop %esi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ScanMem16.Asm
-#
-# Abstract:
-#
-# ScanMem16 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemScanMem16
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem16 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT16 Value
-# );
-#------------------------------------------------------------------------------
-_InternalMemScanMem16:
- push %edi
- movl 12(%esp), %ecx
- movl 8(%esp), %edi
- movl 16(%esp), %eax
- repne scasw
- leal -2(%edi), %eax
- cmovnz %ecx, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem16.Asm\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem16 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemScanMem16\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem16 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT16 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+_InternalMemScanMem16:\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 8(%esp), %edi\r
+ movl 16(%esp), %eax\r
+ repne scasw\r
+ leal -2(%edi), %eax\r
+ cmovnz %ecx, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ScanMem32.Asm
-#
-# Abstract:
-#
-# ScanMem32 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemScanMem32
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem32 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT32 Value
-# );
-#------------------------------------------------------------------------------
-_InternalMemScanMem32:
- push %edi
- movl 12(%esp), %ecx
- movl 8(%esp), %edi
- movl 16(%esp), %eax
- repne scasl
- leal -4(%edi), %eax
- cmovnz %ecx, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem32.Asm\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem32 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemScanMem32\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem32 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT32 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+_InternalMemScanMem32:\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 8(%esp), %edi\r
+ movl 16(%esp), %eax\r
+ repne scasl\r
+ leal -4(%edi), %eax\r
+ cmovnz %ecx, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ScanMem64.Asm
-#
-# Abstract:
-#
-# ScanMem64 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemScanMem64
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem64 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-_InternalMemScanMem64:
- push %edi
- movl 12(%esp), %ecx
- movl 16(%esp), %eax
- movl 20(%esp), %edx
- movl 8(%esp), %edi
-L0:
- cmpl (%edi), %eax
- leal 8(%edi), %edi
- loopne L0
- jne L1
- cmpl -4(%edi), %edx
- jecxz L1
- jne L0
-L1:
- leal -8(%edi), %eax
- cmovne %ecx, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem64.Asm\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem64 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemScanMem64\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem64 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+_InternalMemScanMem64:\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 16(%esp), %eax\r
+ movl 20(%esp), %edx\r
+ movl 8(%esp), %edi\r
+L0:\r
+ cmpl (%edi), %eax\r
+ leal 8(%edi), %edi\r
+ loopne L0\r
+ jne L1\r
+ cmpl -4(%edi), %edx\r
+ jecxz L1\r
+ jne L0\r
+L1:\r
+ leal -8(%edi), %eax\r
+ cmovne %ecx, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ScanMem8.Asm
-#
-# Abstract:
-#
-# ScanMem8 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemScanMem8
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem8 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT8 Value
-# );
-#------------------------------------------------------------------------------
-_InternalMemScanMem8:
- push %edi
- movl 12(%esp), %ecx
- movl 8(%esp), %edi
- movb 16(%esp), %al
- repne scasb
- leal -1(%edi), %eax
- cmovnz %ecx, %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem8.Asm\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem8 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemScanMem8\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem8 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT8 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+_InternalMemScanMem8:\r
+ push %edi\r
+ movl 12(%esp), %ecx\r
+ movl 8(%esp), %edi\r
+ movb 16(%esp), %al\r
+ repne scasb\r
+ leal -1(%edi), %eax\r
+ cmovnz %ecx, %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetMem.asm
-#
-# Abstract:
-#
-# SetMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
- .686:
- #.MODEL flat,C
- .xmm:
- .code:
-
-#------------------------------------------------------------------------------
-# VOID *
-# _mem_SetMem (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT8 Value
-# );
-#------------------------------------------------------------------------------
-.globl _InternalMemSetMem
-_InternalMemSetMem:
- push %edi
- movl 12(%esp), %edx # edx <- Count
- movl 8(%esp), %edi # edi <- Buffer
- movb 16(%esp), %al # al <- Value
- xorl %ecx, %ecx
- subl %edi, %ecx
- andl $15, %ecx # ecx + edi aligns on 16-byte boundary
- jz L0
- cmpl %edx, %ecx
- cmova %edx, %ecx
- subl %ecx, %edx
- rep
- stosb
-L0:
- movl %edx, %ecx
- andl $15, %edx
- shrl $4, %ecx # ecx <- # of DQwords to set
- jz L_SetBytes
- movb %al, %ah # ax <- Value | (Value << 8)
- addl $-16, %esp
- movdqu %xmm0, (%esp)
- movd %eax, %xmm0
- pshuflw $0, %xmm0, %xmm0
- movlhps %xmm0, %xmm0
-L1:
- movntdq %xmm0, (%edi)
- addl $16, %edi
- loop L1
- mfence
- movdqu (%esp), %xmm0
- addl $16, %esp # stack cleanup
-L_SetBytes:
- movl %edx, %ecx
- rep
- stosb
- movl 8(%esp), %eax # eax <- Buffer as return value
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem.asm\r
+#\r
+# Abstract:\r
+#\r
+# SetMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+ .686:\r
+ #.MODEL flat,C\r
+ .xmm:\r
+ .code:\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# _mem_SetMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT8 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.globl _InternalMemSetMem\r
+_InternalMemSetMem:\r
+ push %edi\r
+ movl 12(%esp), %edx # edx <- Count\r
+ movl 8(%esp), %edi # edi <- Buffer\r
+ movb 16(%esp), %al # al <- Value\r
+ xorl %ecx, %ecx\r
+ subl %edi, %ecx\r
+ andl $15, %ecx # ecx + edi aligns on 16-byte boundary\r
+ jz L0\r
+ cmpl %edx, %ecx\r
+ cmova %edx, %ecx\r
+ subl %ecx, %edx\r
+ rep\r
+ stosb\r
+L0:\r
+ movl %edx, %ecx\r
+ andl $15, %edx\r
+ shrl $4, %ecx # ecx <- # of DQwords to set\r
+ jz L_SetBytes\r
+ movb %al, %ah # ax <- Value | (Value << 8)\r
+ addl $-16, %esp\r
+ movdqu %xmm0, (%esp)\r
+ movd %eax, %xmm0\r
+ pshuflw $0, %xmm0, %xmm0\r
+ movlhps %xmm0, %xmm0\r
+L1:\r
+ movntdq %xmm0, (%edi)\r
+ addl $16, %edi\r
+ loop L1\r
+ mfence\r
+ movdqu (%esp), %xmm0\r
+ addl $16, %esp # stack cleanup\r
+L_SetBytes:\r
+ movl %edx, %ecx\r
+ rep\r
+ stosb\r
+ movl 8(%esp), %eax # eax <- Buffer as return value\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetMem16.asm
-#
-# Abstract:
-#
-# SetMem16 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemSetMem16
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem16 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT16 Value
-# )
-#------------------------------------------------------------------------------
-_InternalMemSetMem16:
- push %edi
- movl 12(%esp), %edx
- movl 8(%esp), %edi
- xorl %ecx, %ecx
- subl %edi, %ecx
- andl $15, %ecx # ecx + edi aligns on 16-byte boundary
- movl 16(%esp), %eax
- jz L0
- shrl %ecx
- cmpl %edx, %ecx
- cmova %edx, %ecx
- subl %ecx, %edx
- rep
- stosw
-L0:
- movl %edx, %ecx
- andl $7, %edx
- shrl $3, %ecx
- jz L_SetWords
- movd %eax, %xmm0
- pshuflw $0, %xmm0, %xmm0
- movlhps %xmm0, %xmm0
-L1:
- movntdq %xmm0, (%edi)
- addl $16, %edi
- loop L1
- mfence
-L_SetWords:
- movl %edx, %ecx
- rep
- stosw
- movl 8(%esp), %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem16.asm\r
+#\r
+# Abstract:\r
+#\r
+# SetMem16 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemSetMem16\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem16 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT16 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+_InternalMemSetMem16:\r
+ push %edi\r
+ movl 12(%esp), %edx\r
+ movl 8(%esp), %edi\r
+ xorl %ecx, %ecx\r
+ subl %edi, %ecx\r
+ andl $15, %ecx # ecx + edi aligns on 16-byte boundary\r
+ movl 16(%esp), %eax\r
+ jz L0\r
+ shrl %ecx\r
+ cmpl %edx, %ecx\r
+ cmova %edx, %ecx\r
+ subl %ecx, %edx\r
+ rep\r
+ stosw\r
+L0:\r
+ movl %edx, %ecx\r
+ andl $7, %edx\r
+ shrl $3, %ecx\r
+ jz L_SetWords\r
+ movd %eax, %xmm0\r
+ pshuflw $0, %xmm0, %xmm0\r
+ movlhps %xmm0, %xmm0\r
+L1:\r
+ movntdq %xmm0, (%edi)\r
+ addl $16, %edi\r
+ loop L1\r
+ mfence\r
+L_SetWords:\r
+ movl %edx, %ecx\r
+ rep\r
+ stosw\r
+ movl 8(%esp), %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetMem32.asm
-#
-# Abstract:
-#
-# SetMem32 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemSetMem32
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem32 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT32 Value
-# );
-#------------------------------------------------------------------------------
-_InternalMemSetMem32:
- push %edi
- movl 12(%esp), %edx
- movl 8(%esp), %edi
- xorl %ecx, %ecx
- subl %edi, %ecx
- andl $15, %ecx # ecx + edi aligns on 16-byte boundary
- movl 16(%esp), %eax
- jz L0
- shrl $2, %ecx
- cmpl %edx, %ecx
- cmova %edx, %ecx
- subl %ecx, %edx
- rep
- stosl
-L0:
- movl %edx, %ecx
- andl $3, %edx
- shrl $2, %ecx
- jz L_SetDwords
- movd %eax, %xmm0
- pshufd $0, %xmm0, %xmm0
-L1:
- movntdq %xmm0, (%edi)
- addl $16, %edi
- loop L1
- mfence
-L_SetDwords:
- movl %edx, %ecx
- rep
- stosl
- movl 8(%esp), %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem32.asm\r
+#\r
+# Abstract:\r
+#\r
+# SetMem32 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemSetMem32\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem32 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT32 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+_InternalMemSetMem32:\r
+ push %edi\r
+ movl 12(%esp), %edx\r
+ movl 8(%esp), %edi\r
+ xorl %ecx, %ecx\r
+ subl %edi, %ecx\r
+ andl $15, %ecx # ecx + edi aligns on 16-byte boundary\r
+ movl 16(%esp), %eax\r
+ jz L0\r
+ shrl $2, %ecx\r
+ cmpl %edx, %ecx\r
+ cmova %edx, %ecx\r
+ subl %ecx, %edx\r
+ rep\r
+ stosl\r
+L0:\r
+ movl %edx, %ecx\r
+ andl $3, %edx\r
+ shrl $2, %ecx\r
+ jz L_SetDwords\r
+ movd %eax, %xmm0\r
+ pshufd $0, %xmm0, %xmm0\r
+L1:\r
+ movntdq %xmm0, (%edi)\r
+ addl $16, %edi\r
+ loop L1\r
+ mfence\r
+L_SetDwords:\r
+ movl %edx, %ecx\r
+ rep\r
+ stosl\r
+ movl 8(%esp), %eax\r
+ pop %edi\r
+ ret\r
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# ZeroMem.asm
-#
-# Abstract:
-#
-# ZeroMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemZeroMem
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemZeroMem (
-# IN VOID *Buffer,
-# IN UINTN Count
-# );
-#------------------------------------------------------------------------------
-_InternalMemZeroMem:
- push %edi
- movl 8(%esp), %edi
- movl 12(%esp), %edx
- xorl %ecx, %ecx
- subl %edi, %ecx
- xorl %eax, %eax
- andl $15, %ecx
- jz L0
- cmpl %edx, %ecx
- cmova %edx, %ecx
- subl %ecx, %edx
- rep
- stosb
-L0:
- movl %edx, %ecx
- andl $15, %edx
- shrl $4, %ecx
- jz L_ZeroBytes
- pxor %xmm0, %xmm0
-L1:
- movntdq %xmm0, (%edi)
- addl $16, %edi
- loop L1
- mfence
-L_ZeroBytes:
- movl %edx, %ecx
- rep
- stosb
- movl 8(%esp), %eax
- pop %edi
- ret
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ZeroMem.asm\r
+#\r
+# Abstract:\r
+#\r
+# ZeroMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+.globl _InternalMemZeroMem\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemZeroMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count\r
+# );\r
+#------------------------------------------------------------------------------\r
+_InternalMemZeroMem:\r
+ push %edi\r
+ movl 8(%esp), %edi\r
+ movl 12(%esp), %edx\r
+ xorl %ecx, %ecx\r
+ subl %edi, %ecx\r
+ xorl %eax, %eax\r
+ andl $15, %ecx\r
+ jz L0\r
+ cmpl %edx, %ecx\r
+ cmova %edx, %ecx\r
+ subl %ecx, %edx\r
+ rep\r
+ stosb\r
+L0:\r
+ movl %edx, %ecx\r
+ andl $15, %edx\r
+ shrl $4, %ecx\r
+ jz L_ZeroBytes\r
+ pxor %xmm0, %xmm0\r
+L1:\r
+ movntdq %xmm0, (%edi)\r
+ addl $16, %edi\r
+ loop L1\r
+ mfence\r
+L_ZeroBytes:\r
+ movl %edx, %ecx\r
+ rep\r
+ stosb\r
+ movl 8(%esp), %eax\r
+ pop %edi\r
+ ret\r
-#
-# ConvertAsm.py: Automatically generated from CompareMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# CompareMem.S
-#
-# Abstract:
-#
-# CompareMem function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# INTN
-# EFIAPI
-# InternalMemCompareMem (
-# IN CONST VOID *DestinationBuffer,
-# IN CONST VOID *SourceBuffer,
-# IN UINTN Length
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemCompareMem)
-ASM_PFX(InternalMemCompareMem):
- push rsi
- push rdi
- mov rsi, rcx
- mov rdi, rdx
- mov rcx, r8
- repe cmpsb
- movzx rax, byte ptr [rsi - 1]
- movzx rdx, byte ptr [rdi - 1]
- sub rax, rdx
- pop rdi
- pop rsi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from CompareMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CompareMem.S\r
+#\r
+# Abstract:\r
+#\r
+# CompareMem function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# INTN\r
+# EFIAPI\r
+# InternalMemCompareMem (\r
+# IN CONST VOID *DestinationBuffer,\r
+# IN CONST VOID *SourceBuffer,\r
+# IN UINTN Length\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemCompareMem)\r
+ASM_PFX(InternalMemCompareMem):\r
+ push rsi\r
+ push rdi\r
+ mov rsi, rcx\r
+ mov rdi, rdx\r
+ mov rcx, r8\r
+ repe cmpsb\r
+ movzx rax, byte ptr [rsi - 1]\r
+ movzx rdx, byte ptr [rdi - 1]\r
+ sub rax, rdx\r
+ pop rdi\r
+ pop rsi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from CopyMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# CopyMem.S
-#
-# Abstract:
-#
-# CopyMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemCopyMem (
-# IN VOID *Destination,
-# IN VOID *Source,
-# IN UINTN Count
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemCopyMem)
-ASM_PFX(InternalMemCopyMem):
- push rsi
- push rdi
- mov rsi, rdx # rsi <- Source
- mov rdi, rcx # rdi <- Destination
- lea r9, [rsi + r8 - 1] # r9 <- Last byte of Source
- cmp rsi, rdi
- mov rax, rdi # rax <- Destination as return value
- jae L0 # Copy forward if Source > Destination
- cmp r9, rdi # Overlapped?
- jae L_CopyBackward # Copy backward if overlapped
-L0:
- xor rcx, rcx
- sub rcx, rdi # rcx <- -rdi
- and rcx, 15 # rcx + rsi should be 16 bytes aligned
- jz L1 # skip if rcx == 0
- cmp rcx, r8
- cmova rcx, r8
- sub r8, rcx
- rep movsb
-L1:
- mov rcx, r8
- and r8, 15
- shr rcx, 4 # rcx <- # of DQwords to copy
- jz L_CopyBytes
- movdqa [rsp + 0x18], xmm0 # save xmm0 on stack
-L2:
- movdqu xmm0, [rsi] # rsi may not be 16-byte aligned
- movntdq [rdi], xmm0 # rdi should be 16-byte aligned
- add rsi, 16
- add rdi, 16
- loop L2
- mfence
- movdqa xmm0, [rsp + 0x18] # restore xmm0
- jmp L_CopyBytes # copy remaining bytes
-L_CopyBackward:
- mov rsi, r9 # rsi <- Last byte of Source
- lea rdi, [rdi + r8 - 1] # rdi <- Last byte of Destination
- std
-L_CopyBytes:
- mov rcx, r8
- rep movsb
- cld
- pop rdi
- pop rsi
- ret
+#\r
+# ConvertAsm.py: Automatically generated from CopyMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# CopyMem.S\r
+#\r
+# Abstract:\r
+#\r
+# CopyMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemCopyMem (\r
+# IN VOID *Destination,\r
+# IN VOID *Source,\r
+# IN UINTN Count\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemCopyMem)\r
+ASM_PFX(InternalMemCopyMem):\r
+ push rsi\r
+ push rdi\r
+ mov rsi, rdx # rsi <- Source\r
+ mov rdi, rcx # rdi <- Destination\r
+ lea r9, [rsi + r8 - 1] # r9 <- Last byte of Source\r
+ cmp rsi, rdi \r
+ mov rax, rdi # rax <- Destination as return value\r
+ jae L0 # Copy forward if Source > Destination\r
+ cmp r9, rdi # Overlapped?\r
+ jae L_CopyBackward # Copy backward if overlapped\r
+L0: \r
+ xor rcx, rcx \r
+ sub rcx, rdi # rcx <- -rdi\r
+ and rcx, 15 # rcx + rsi should be 16 bytes aligned\r
+ jz L1 # skip if rcx == 0\r
+ cmp rcx, r8\r
+ cmova rcx, r8\r
+ sub r8, rcx\r
+ rep movsb\r
+L1:\r
+ mov rcx, r8\r
+ and r8, 15\r
+ shr rcx, 4 # rcx <- # of DQwords to copy\r
+ jz L_CopyBytes\r
+ movdqa [rsp + 0x18], xmm0 # save xmm0 on stack\r
+L2:\r
+ movdqu xmm0, [rsi] # rsi may not be 16-byte aligned\r
+ movntdq [rdi], xmm0 # rdi should be 16-byte aligned\r
+ add rsi, 16\r
+ add rdi, 16\r
+ loop L2\r
+ mfence\r
+ movdqa xmm0, [rsp + 0x18] # restore xmm0\r
+ jmp L_CopyBytes # copy remaining bytes\r
+L_CopyBackward:\r
+ mov rsi, r9 # rsi <- Last byte of Source\r
+ lea rdi, [rdi + r8 - 1] # rdi <- Last byte of Destination\r
+ std\r
+L_CopyBytes:\r
+ mov rcx, r8\r
+ rep movsb\r
+ cld\r
+ pop rdi\r
+ pop rsi\r
+ ret\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem16.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem16.S
-#
-# Abstract:
-#
-# ScanMem16 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem16 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT16 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem16)
-ASM_PFX(InternalMemScanMem16):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasw
- lea rax, [rdi - 2]
- cmovnz rax, rcx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem16.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem16.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem16 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem16 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT16 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem16)\r
+ASM_PFX(InternalMemScanMem16):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ mov rcx, rdx\r
+ repne scasw\r
+ lea rax, [rdi - 2]\r
+ cmovnz rax, rcx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem32.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem32.S
-#
-# Abstract:
-#
-# ScanMem32 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem32 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT32 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem32)
-ASM_PFX(InternalMemScanMem32):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasd
- lea rax, [rdi - 4]
- cmovnz rax, rcx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem32.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem32.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem32 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem32 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT32 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem32)\r
+ASM_PFX(InternalMemScanMem32):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ mov rcx, rdx\r
+ repne scasd\r
+ lea rax, [rdi - 4]\r
+ cmovnz rax, rcx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem64.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem64.S
-#
-# Abstract:
-#
-# ScanMem64 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem64 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem64)
-ASM_PFX(InternalMemScanMem64):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasq
- lea rax, [rdi - 8]
- cmovnz rax, rcx
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem64.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem64.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem64 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem64 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT64 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem64)\r
+ASM_PFX(InternalMemScanMem64):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rax, r8\r
+ mov rcx, rdx\r
+ repne scasq\r
+ lea rax, [rdi - 8]\r
+ cmovnz rax, rcx\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ScanMem8.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ScanMem8.S
-#
-# Abstract:
-#
-# ScanMem8 function
-#
-# Notes:
-#
-# The following BaseMemoryLib instances contain the same copy of this file:
-#
-# BaseMemoryLibRepStr
-# BaseMemoryLibMmx
-# BaseMemoryLibSse2
-# BaseMemoryLibOptDxe
-# BaseMemoryLibOptPei
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# CONST VOID *
-# EFIAPI
-# InternalMemScanMem8 (
-# IN CONST VOID *Buffer,
-# IN UINTN Length,
-# IN UINT8 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemScanMem8)
-ASM_PFX(InternalMemScanMem8):
- push rdi
- mov rdi, rcx
- mov rcx, rdx
- mov rax, r8
- repne scasb
- lea rax, [rdi - 1]
- cmovnz rax, rcx # set rax to 0 if not found
- pop rdi
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from ScanMem8.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ScanMem8.S\r
+#\r
+# Abstract:\r
+#\r
+# ScanMem8 function\r
+#\r
+# Notes:\r
+#\r
+# The following BaseMemoryLib instances contain the same copy of this file:\r
+#\r
+# BaseMemoryLibRepStr\r
+# BaseMemoryLibMmx\r
+# BaseMemoryLibSse2\r
+# BaseMemoryLibOptDxe\r
+# BaseMemoryLibOptPei\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# CONST VOID *\r
+# EFIAPI\r
+# InternalMemScanMem8 (\r
+# IN CONST VOID *Buffer,\r
+# IN UINTN Length,\r
+# IN UINT8 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemScanMem8)\r
+ASM_PFX(InternalMemScanMem8):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov rcx, rdx\r
+ mov rax, r8\r
+ repne scasb\r
+ lea rax, [rdi - 1]\r
+ cmovnz rax, rcx # set rax to 0 if not found\r
+ pop rdi\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from SetMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem.S
-#
-# Abstract:
-#
-# SetMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT8 Value
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem)
-ASM_PFX(InternalMemSetMem):
- push rdi
- mov rdi, rcx # rdi <- Buffer
- mov al, r8b # al <- Value
- mov r9, rdi # r9 <- Buffer as return value
- xor rcx, rcx
- sub rcx, rdi
- and rcx, 15 # rcx + rdi aligns on 16-byte boundary
- jz L0
- cmp rcx, rdx
- cmova rcx, rdx
- sub rdx, rcx
- rep stosb
-L0:
- mov rcx, rdx
- and rdx, 15
- shr rcx, 4
- jz L_SetBytes
- mov ah, al # ax <- Value repeats twice
- movdqa [rsp + 0x10], xmm0 # save xmm0
- movd xmm0, eax # xmm0[0..16] <- Value repeats twice
- pshuflw xmm0, xmm0, 0 # xmm0[0..63] <- Value repeats 8 times
- movlhps xmm0, xmm0 # xmm0 <- Value repeats 16 times
-L1:
- movntdq [rdi], xmm0 # rdi should be 16-byte aligned
- add rdi, 16
- loop L1
- mfence
- movdqa xmm0, [rsp + 0x10] # restore xmm0
-L_SetBytes:
- mov ecx, edx # high 32 bits of rcx are always zero
- rep stosb
- mov rax, r9 # rax <- Return value
- pop rdi
- ret
+#\r
+# ConvertAsm.py: Automatically generated from SetMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT8 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem)\r
+ASM_PFX(InternalMemSetMem):\r
+ push rdi\r
+ mov rdi, rcx # rdi <- Buffer\r
+ mov al, r8b # al <- Value\r
+ mov r9, rdi # r9 <- Buffer as return value\r
+ xor rcx, rcx\r
+ sub rcx, rdi\r
+ and rcx, 15 # rcx + rdi aligns on 16-byte boundary\r
+ jz L0\r
+ cmp rcx, rdx\r
+ cmova rcx, rdx\r
+ sub rdx, rcx\r
+ rep stosb\r
+L0:\r
+ mov rcx, rdx\r
+ and rdx, 15\r
+ shr rcx, 4\r
+ jz L_SetBytes\r
+ mov ah, al # ax <- Value repeats twice\r
+ movdqa [rsp + 0x10], xmm0 # save xmm0\r
+ movd xmm0, eax # xmm0[0..16] <- Value repeats twice\r
+ pshuflw xmm0, xmm0, 0 # xmm0[0..63] <- Value repeats 8 times\r
+ movlhps xmm0, xmm0 # xmm0 <- Value repeats 16 times\r
+L1:\r
+ movntdq [rdi], xmm0 # rdi should be 16-byte aligned\r
+ add rdi, 16\r
+ loop L1\r
+ mfence\r
+ movdqa xmm0, [rsp + 0x10] # restore xmm0\r
+L_SetBytes:\r
+ mov ecx, edx # high 32 bits of rcx are always zero\r
+ rep stosb\r
+ mov rax, r9 # rax <- Return value\r
+ pop rdi\r
+ ret\r
-#
-# ConvertAsm.py: Automatically generated from SetMem16.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem16.S
-#
-# Abstract:
-#
-# SetMem16 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem16 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT16 Value
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem16)
-ASM_PFX(InternalMemSetMem16):
- push rdi
- mov rdi, rcx
- mov r9, rdi
- xor rcx, rcx
- sub rcx, rdi
- and rcx, 15
- mov rax, r8
- jz L0
- shr rcx, 1
- cmp rcx, rdx
- cmova rcx, rdx
- sub rdx, rcx
- rep stosw
-L0:
- mov rcx, rdx
- and edx, 7
- shr rcx, 3
- jz L_SetWords
- movd xmm0, eax
- pshuflw xmm0, xmm0, 0
- movlhps xmm0, xmm0
-L1:
- movntdq [rdi], xmm0
- add rdi, 16
- loop L1
- mfence
-L_SetWords:
- mov ecx, edx
- rep stosw
- mov rax, r9
- pop rdi
- ret
+#\r
+# ConvertAsm.py: Automatically generated from SetMem16.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem16.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem16 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem16 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT16 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem16)\r
+ASM_PFX(InternalMemSetMem16):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov r9, rdi\r
+ xor rcx, rcx\r
+ sub rcx, rdi\r
+ and rcx, 15\r
+ mov rax, r8\r
+ jz L0\r
+ shr rcx, 1\r
+ cmp rcx, rdx\r
+ cmova rcx, rdx\r
+ sub rdx, rcx\r
+ rep stosw\r
+L0:\r
+ mov rcx, rdx\r
+ and edx, 7\r
+ shr rcx, 3\r
+ jz L_SetWords\r
+ movd xmm0, eax\r
+ pshuflw xmm0, xmm0, 0\r
+ movlhps xmm0, xmm0\r
+L1:\r
+ movntdq [rdi], xmm0\r
+ add rdi, 16\r
+ loop L1\r
+ mfence\r
+L_SetWords:\r
+ mov ecx, edx\r
+ rep stosw\r
+ mov rax, r9\r
+ pop rdi\r
+ ret\r
-#
-# ConvertAsm.py: Automatically generated from SetMem32.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem32.S
-#
-# Abstract:
-#
-# SetMem32 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem32 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT32 Value
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem32)
-ASM_PFX(InternalMemSetMem32):
- push rdi
- mov rdi, rcx
- mov r9, rdi
- xor rcx, rcx
- sub rcx, rdi
- and rcx, 15
- mov rax, r8
- jz L0
- shr rcx, 2
- cmp rcx, rdx
- cmova rcx, rdx
- sub rdx, rcx
- rep stosd
-L0:
- mov rcx, rdx
- and edx, 3
- shr rcx, 2
- jz L_SetDwords
- movd xmm0, eax
- pshufd xmm0, xmm0, 0
-L1:
- movntdq [rdi], xmm0
- add rdi, 16
- loop L1
- mfence
-L_SetDwords:
- mov ecx, edx
- rep stosd
- mov rax, r9
- pop rdi
- ret
+#\r
+# ConvertAsm.py: Automatically generated from SetMem32.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem32.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem32 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem32 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT32 Value\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem32)\r
+ASM_PFX(InternalMemSetMem32):\r
+ push rdi\r
+ mov rdi, rcx\r
+ mov r9, rdi\r
+ xor rcx, rcx\r
+ sub rcx, rdi\r
+ and rcx, 15\r
+ mov rax, r8\r
+ jz L0\r
+ shr rcx, 2\r
+ cmp rcx, rdx\r
+ cmova rcx, rdx\r
+ sub rdx, rcx\r
+ rep stosd\r
+L0:\r
+ mov rcx, rdx\r
+ and edx, 3\r
+ shr rcx, 2\r
+ jz L_SetDwords\r
+ movd xmm0, eax\r
+ pshufd xmm0, xmm0, 0\r
+L1:\r
+ movntdq [rdi], xmm0\r
+ add rdi, 16\r
+ loop L1\r
+ mfence\r
+L_SetDwords:\r
+ mov ecx, edx\r
+ rep stosd\r
+ mov rax, r9\r
+ pop rdi\r
+ ret\r
-#
-# ConvertAsm.py: Automatically generated from SetMem64.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# SetMem64.S
-#
-# Abstract:
-#
-# SetMem64 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemSetMem64 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT64 Value
-# )
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemSetMem64)
-ASM_PFX(InternalMemSetMem64):
- mov rax, rcx # rax <- Buffer
- xchg rcx, rdx # rcx <- Count & rdx <- Buffer
- test dl, 8
- movq xmm0, r8
- jz L0
- mov [rdx], r8
- add rdx, 8
- dec rcx
-L0:
- shr rcx, 1
- jz L_SetQwords
- movlhps xmm0, xmm0
-L1:
- movntdq [rdx], xmm0
- lea rdx, [rdx + 16]
- loop L1
- mfence
-L_SetQwords:
- jnc L2
- mov [rdx], r8
-L2:
- ret
-
+#\r
+# ConvertAsm.py: Automatically generated from SetMem64.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem64.S\r
+#\r
+# Abstract:\r
+#\r
+# SetMem64 function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemSetMem64 (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT64 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemSetMem64)\r
+ASM_PFX(InternalMemSetMem64):\r
+ mov rax, rcx # rax <- Buffer\r
+ xchg rcx, rdx # rcx <- Count & rdx <- Buffer\r
+ test dl, 8\r
+ movq xmm0, r8\r
+ jz L0\r
+ mov [rdx], r8\r
+ add rdx, 8\r
+ dec rcx\r
+L0:\r
+ shr rcx, 1\r
+ jz L_SetQwords\r
+ movlhps xmm0, xmm0\r
+L1:\r
+ movntdq [rdx], xmm0\r
+ lea rdx, [rdx + 16]\r
+ loop L1\r
+ mfence\r
+L_SetQwords:\r
+ jnc L2\r
+ mov [rdx], r8\r
+L2:\r
+ ret\r
+\r
-#
-# ConvertAsm.py: Automatically generated from ZeroMem.asm
-#
-#------------------------------------------------------------------------------
-#
-# 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:
-#
-# ZeroMem.S
-#
-# Abstract:
-#
-# ZeroMem function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID *
-# InternalMemZeroMem (
-# IN VOID *Buffer,
-# IN UINTN Count
-# );
-#------------------------------------------------------------------------------
-.intel_syntax noprefix
-.globl ASM_PFX(InternalMemZeroMem)
-ASM_PFX(InternalMemZeroMem):
- push rdi
- mov rdi, rcx
- xor rcx, rcx
- xor eax, eax
- sub rcx, rdi
- and rcx, 15
- mov r8, rdi
- jz L0
- cmp rcx, rdx
- cmova rcx, rdx
- sub rdx, rcx
- rep stosb
-L0:
- mov rcx, rdx
- and edx, 15
- shr rcx, 4
- jz L_ZeroBytes
- pxor xmm0, xmm0
-L1:
- movntdq [rdi], xmm0 # rdi should be 16-byte aligned
- add rdi, 16
- loop L1
- mfence
-L_ZeroBytes:
- mov ecx, edx
- rep stosb
- mov rax, r8
- pop rdi
- ret
+#\r
+# ConvertAsm.py: Automatically generated from ZeroMem.asm\r
+#\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# ZeroMem.S\r
+#\r
+# Abstract:\r
+#\r
+# ZeroMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# InternalMemZeroMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count\r
+# );\r
+#------------------------------------------------------------------------------\r
+.intel_syntax noprefix\r
+.globl ASM_PFX(InternalMemZeroMem)\r
+ASM_PFX(InternalMemZeroMem):\r
+ push rdi\r
+ mov rdi, rcx\r
+ xor rcx, rcx\r
+ xor eax, eax\r
+ sub rcx, rdi\r
+ and rcx, 15\r
+ mov r8, rdi\r
+ jz L0\r
+ cmp rcx, rdx\r
+ cmova rcx, rdx\r
+ sub rdx, rcx\r
+ rep stosb\r
+L0:\r
+ mov rcx, rdx\r
+ and edx, 15\r
+ shr rcx, 4\r
+ jz L_ZeroBytes\r
+ pxor xmm0, xmm0\r
+L1:\r
+ movntdq [rdi], xmm0 # rdi should be 16-byte aligned\r
+ add rdi, 16\r
+ loop L1\r
+ mfence\r
+L_ZeroBytes:\r
+ mov ecx, edx\r
+ rep stosb\r
+ mov rax, r8\r
+ pop rdi\r
+ ret\r