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,
20#    IN UINTN                  Count,
21#    IN VOID                   *Buffer
22#    );
23#------------------------------------------------------------------------------
24ASM_GLOBAL ASM_PFX(IoReadFifo8)
25ASM_PFX(IoReadFifo8):
26    push    %edi
27    cld
28    movw    8(%esp), %dx
29    mov     12(%esp), %ecx
30    mov     16(%esp), %edi
31rep insb
32    pop     %edi
33    ret
34
35#------------------------------------------------------------------------------
36#  VOID
37#  EFIAPI
38#  IoReadFifo16 (
39#    IN UINTN                  Port,
40#    IN UINTN                  Count,
41#    IN VOID                   *Buffer
42#    );
43#------------------------------------------------------------------------------
44ASM_GLOBAL ASM_PFX(IoReadFifo16)
45ASM_PFX(IoReadFifo16):
46    push    %edi
47    cld
48    movw    8(%esp), %dx
49    mov     12(%esp), %ecx
50    mov     16(%esp), %edi
51rep insw
52    pop     %edi
53    ret
54
55#------------------------------------------------------------------------------
56#  VOID
57#  EFIAPI
58#  IoReadFifo32 (
59#    IN UINTN                  Port,
60#    IN UINTN                  Count,
61#    IN VOID                   *Buffer
62#    );
63#------------------------------------------------------------------------------
64ASM_GLOBAL ASM_PFX(IoReadFifo32)
65ASM_PFX(IoReadFifo32):
66    push    %edi
67    cld
68    movw    8(%esp), %dx
69    mov     12(%esp), %ecx
70    mov     16(%esp), %edi
71rep insl
72    pop     %edi
73    ret
74
75#------------------------------------------------------------------------------
76#  VOID
77#  EFIAPI
78#  IoWriteFifo8 (
79#    IN UINTN                  Port,
80#    IN UINTN                  Count,
81#    IN VOID                   *Buffer
82#    );
83#------------------------------------------------------------------------------
84ASM_GLOBAL ASM_PFX(IoWriteFifo8)
85ASM_PFX(IoWriteFifo8):
86    push    %esi
87    cld
88    movw    8(%esp), %dx
89    mov     12(%esp), %ecx
90    mov     16(%esp), %esi
91rep outsb
92    pop     %esi
93    ret
94
95#------------------------------------------------------------------------------
96#  VOID
97#  EFIAPI
98#  IoWriteFifo16 (
99#    IN UINTN                  Port,
100#    IN UINTN                  Count,
101#    IN VOID                   *Buffer
102#    );
103#------------------------------------------------------------------------------
104ASM_GLOBAL ASM_PFX(IoWriteFifo16)
105ASM_PFX(IoWriteFifo16):
106    push    %esi
107    cld
108    movw    8(%esp), %dx
109    mov     12(%esp), %ecx
110    mov     16(%esp), %esi
111rep outsw
112    pop     %esi
113    ret
114
115#------------------------------------------------------------------------------
116#  VOID
117#  EFIAPI
118#  IoWriteFifo32 (
119#    IN UINTN                  Port,
120#    IN UINTN                  Count,
121#    IN VOID                   *Buffer
122#    );
123#------------------------------------------------------------------------------
124ASM_GLOBAL ASM_PFX(IoWriteFifo32)
125ASM_PFX(IoWriteFifo32):
126    push    %esi
127    cld
128    movw    8(%esp), %dx
129    mov     12(%esp), %ecx
130    mov     16(%esp), %esi
131rep outsl
132    pop     %esi
133    ret
134
135