summaryrefslogtreecommitdiff
path: root/ReferenceCode/RapidStart/Smm/x64/RapidStartAsm.asm
blob: 84c501f0c6877b0a52f6527d9f039a40ab6eeca5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
;
; This file contains an 'Intel Peripheral Driver' and is
; licensed for Intel CPUs and chipsets under the terms of your
; license agreement with Intel or your vendor.  This file may
; be modified by the user, subject to additional terms of the
; license agreement
;
  page    ,132
  title   RapidStart ARCHITECTURAL SMM ASSEMBLY HOOKS
;------------------------------------------------------------------------------
;
; Copyright (c) 2005 -2012 Intel Corporation. All rights reserved
; This software and associated documentation (if any) is furnished
; under a license and may only be used or copied in accordance
; with the terms of the license. Except as permitted by such
; license, no part of this software or documentation may be
; reproduced, stored in a retrieval system, or transmitted in any
; form or by any means without the express written consent of
; Intel Corporation.
;
; Module Name:
;
;   RapidStartAsm.asm
;
; Abstract:
;
;   Assembly code of the implementation of X64 RapidStart
;
;------------------------------------------------------------------------------

text  SEGMENT

;------------------------------------------------------------------------------
;  UINT64
;  ScanValueMem64 (
;    VOID*   BaseAddress,
;    UINT64  PageSize,
;    UINT64  Index
;    )
;------------------------------------------------------------------------------
ScanValueMem64    PROC    USES    rbx rsi rdi
   xor     rsi, rsi
    dec     rsi
    mov     rdi, rcx
    mov     rax, r8
    mov     rcx, rdx
    repe    scasq
    mov    rax, rsi
    lea     rbx, [rdi - 8]
    cmovne  rax, rbx
    ret
ScanValueMem64    ENDP

text  ENDS
END