Home | History | Annotate | Download | only in X64
      1 #*****************************************************************************
      2 #*
      3 #*   Copyright (c) 2008, Intel Corporation. All rights reserved.<BR>
      4 #*   This program and the accompanying materials
      5 #*   are licensed and made available under the terms and conditions of the BSD License
      6 #*   which accompanies this distribution.  The full text of the license may be found at
      7 #*   http://opensource.org/licenses/bsd-license.php
      8 #*
      9 #*   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 #*   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 #*
     12 #*   Module Name:
     13 #*
     14 #*    Fx.S
     15 #*
     16 #*   Abstract:
     17 #*
     18 #*    AsmFxRestore and AsmFxSave function
     19 #*
     20 #*****************************************************************************
     21 #include <EfiBind.h>
     22 
     23 .globl ASM_PFX(AsmFxSave)
     24 .globl ASM_PFX(AsmFxRestore)
     25 
     26     .text
     27 
     28 #------------------------------------------------------------------------------
     29 # VOID
     30 # AsmFxSave (
     31 #   OUT IA32_FX_BUFFER *Buffer
     32 #   );
     33 #------------------------------------------------------------------------------
     34 ASM_PFX(AsmFxSave):
     35     fxsave (%rcx)
     36     retq
     37 
     38 #------------------------------------------------------------------------------
     39 # VOID
     40 # AsmFxRestore (
     41 #   IN CONST IA32_FX_BUFFER *Buffer
     42 #   );
     43 #------------------------------------------------------------------------------
     44 ASM_PFX(AsmFxRestore):
     45     fxrstor (%rcx)
     46     retq
     47 
     48 #------------------------------------------------------------------------------
     49 # UINTN
     50 # AsmGetEflags (
     51 #   VOID
     52 #   );
     53 #------------------------------------------------------------------------------
     54 ASM_PFX(AsmGetEflags):
     55     pushfq
     56     popq  %rax
     57     ret
     58 #AsmGetEflags ENDP
     59 
     60 #------------------------------------------------------------------------------
     61 # VOID
     62 # AsmSetEflags (
     63 #   IN UINTN   Eflags
     64 #   );
     65 #------------------------------------------------------------------------------
     66 ASM_PFX(AsmSetEflags):
     67     pushq  %rcx
     68     popfq
     69     ret
     70 #AsmSetEflags ENDP
     71