ScanMem8.S 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #
  2. # ConvertAsm.py: Automatically generated from ScanMem8.asm
  3. #
  4. #------------------------------------------------------------------------------
  5. #
  6. # Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>
  7. # This program and the accompanying materials
  8. # are licensed and made available under the terms and conditions of the BSD License
  9. # which accompanies this distribution. The full text of the license may be found at
  10. # http://opensource.org/licenses/bsd-license.php.
  11. #
  12. # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
  13. # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
  14. #
  15. # Module Name:
  16. #
  17. # ScanMem8.S
  18. #
  19. # Abstract:
  20. #
  21. # ScanMem8 function
  22. #
  23. # Notes:
  24. #
  25. # The following BaseMemoryLib instances contain the same copy of this file:
  26. #
  27. # BaseMemoryLibRepStr
  28. # BaseMemoryLibMmx
  29. # BaseMemoryLibSse2
  30. # BaseMemoryLibOptDxe
  31. # BaseMemoryLibOptPei
  32. #
  33. #------------------------------------------------------------------------------
  34. #------------------------------------------------------------------------------
  35. # CONST VOID *
  36. # EFIAPI
  37. # InternalMemScanMem8 (
  38. # IN CONST VOID *Buffer,
  39. # IN UINTN Length,
  40. # IN UINT8 Value
  41. # );
  42. #------------------------------------------------------------------------------
  43. ASM_GLOBAL ASM_PFX(InternalMemScanMem8)
  44. ASM_PFX(InternalMemScanMem8):
  45. pushq %rdi
  46. movq %rcx, %rdi
  47. movq %rdx, %rcx
  48. movq %r8, %rax
  49. repne scasb
  50. leaq -1(%rdi), %rax
  51. cmovnz %rcx, %rax # set rax to 0 if not found
  52. popq %rdi
  53. ret