Home | History | Annotate | Download | only in X64
      1 #------------------------------------------------------------------------------
      2 #
      3 # Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
      4 #
      5 # This program and the accompanying materials are licensed and made available
      6 # under the terms and conditions of the BSD License which accompanies this
      7 # distribution.  The full text of the license may be found at
      8 # http://opensource.org/licenses/bsd-license.php.
      9 #
     10 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     11 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12 #
     13 #------------------------------------------------------------------------------
     14 
     15 #------------------------------------------------------------------------------
     16 #  VOID
     17 #  EFIAPI
     18 #  IoReadFifo8 (
     19 #    IN UINTN                  Port,              // rcx
     20 #    IN UINTN                  Count,             // rdx
     21 #    IN VOID                   *Buffer            // r8
     22 #    );
     23 #------------------------------------------------------------------------------
     24 ASM_GLOBAL ASM_PFX(IoReadFifo8)
     25 ASM_PFX(IoReadFifo8):
     26     cld
     27     xchg    %rcx, %rdx
     28     xchg    %r8, %rdi           # rdi: buffer address; r8: save register
     29 rep insb
     30     mov     %r8, %rdi           # restore rdi
     31     ret
     32 
     33 #------------------------------------------------------------------------------
     34 #  VOID
     35 #  EFIAPI
     36 #  IoReadFifo16 (
     37 #    IN UINTN                  Port,              // rcx
     38 #    IN UINTN                  Count,             // rdx
     39 #    IN VOID                   *Buffer            // r8
     40 #    );
     41 #------------------------------------------------------------------------------
     42 ASM_GLOBAL ASM_PFX(IoReadFifo16)
     43 ASM_PFX(IoReadFifo16):
     44     cld
     45     xchg    %rcx, %rdx
     46     xchg    %r8, %rdi           # rdi: buffer address; r8: save register
     47 rep insw
     48     mov     %r8, %rdi           # restore rdi
     49     ret
     50 
     51 #------------------------------------------------------------------------------
     52 #  VOID
     53 #  EFIAPI
     54 #  IoReadFifo32 (
     55 #    IN UINTN                  Port,              // rcx
     56 #    IN UINTN                  Count,             // rdx
     57 #    IN VOID                   *Buffer            // r8
     58 #    );
     59 #------------------------------------------------------------------------------
     60 ASM_GLOBAL ASM_PFX(IoReadFifo32)
     61 ASM_PFX(IoReadFifo32):
     62     cld
     63     xchg    %rcx, %rdx
     64     xchg    %r8, %rdi           # rdi: buffer address; r8: save register
     65 rep insl
     66     mov     %r8, %rdi           # restore rdi
     67     ret
     68 
     69 #------------------------------------------------------------------------------
     70 #  VOID
     71 #  EFIAPI
     72 #  IoWriteFifo8 (
     73 #    IN UINTN                  Port,              // rcx
     74 #    IN UINTN                  Count,             // rdx
     75 #    IN VOID                   *Buffer            // r8
     76 #    );
     77 #------------------------------------------------------------------------------
     78 ASM_GLOBAL ASM_PFX(IoWriteFifo8)
     79 ASM_PFX(IoWriteFifo8):
     80     cld
     81     xchg    %rcx, %rdx
     82     xchg    %r8, %rsi           # rsi: buffer address; r8: save register
     83 rep outsb
     84     mov     %r8, %rsi           # restore rsi
     85     ret
     86 
     87 #------------------------------------------------------------------------------
     88 #  VOID
     89 #  EFIAPI
     90 #  IoWriteFifo16 (
     91 #    IN UINTN                  Port,              // rcx
     92 #    IN UINTN                  Count,             // rdx
     93 #    IN VOID                   *Buffer            // r8
     94 #    );
     95 #------------------------------------------------------------------------------
     96 ASM_GLOBAL ASM_PFX(IoWriteFifo16)
     97 ASM_PFX(IoWriteFifo16):
     98     cld
     99     xchg    %rcx, %rdx
    100     xchg    %r8, %rsi           # rsi: buffer address; r8: save register
    101 rep outsw
    102     mov     %r8, %rsi           # restore rsi
    103     ret
    104 
    105 #------------------------------------------------------------------------------
    106 #  VOID
    107 #  EFIAPI
    108 #  IoWriteFifo32 (
    109 #    IN UINTN                  Port,              // rcx
    110 #    IN UINTN                  Count,             // rdx
    111 #    IN VOID                   *Buffer            // r8
    112 #    );
    113 #------------------------------------------------------------------------------
    114 ASM_GLOBAL ASM_PFX(IoWriteFifo32)
    115 ASM_PFX(IoWriteFifo32):
    116     cld
    117     xchg    %rcx, %rdx
    118     xchg    %r8, %rsi           # rsi: buffer address; r8: save register
    119 rep outsl
    120     mov     %r8, %rsi           # restore rsi
    121     ret
    122 
    123