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    .code
16
17;------------------------------------------------------------------------------
18;  VOID
19;  EFIAPI
20;  IoReadFifo8 (
21;    IN UINTN                  Port,              // rcx
22;    IN UINTN                  Size,              // rdx
23;    IN VOID                   *Buffer            // r8
24;    );
25;------------------------------------------------------------------------------
26IoReadFifo8 PROC
27    cld
28    xchg    rcx, rdx
29    xchg    rdi, r8             ; rdi: buffer address; r8: save rdi
30rep insb
31    mov     rdi, r8             ; restore rdi
32    ret
33IoReadFifo8 ENDP
34
35;------------------------------------------------------------------------------
36;  VOID
37;  EFIAPI
38;  IoReadFifo16 (
39;    IN UINTN                  Port,              // rcx
40;    IN UINTN                  Size,              // rdx
41;    IN VOID                   *Buffer            // r8
42;    );
43;------------------------------------------------------------------------------
44IoReadFifo16 PROC
45    cld
46    xchg    rcx, rdx
47    xchg    rdi, r8             ; rdi: buffer address; r8: save rdi
48rep insw
49    mov     rdi, r8             ; restore rdi
50    ret
51IoReadFifo16 ENDP
52
53;------------------------------------------------------------------------------
54;  VOID
55;  EFIAPI
56;  IoReadFifo32 (
57;    IN UINTN                  Port,              // rcx
58;    IN UINTN                  Size,              // rdx
59;    IN VOID                   *Buffer            // r8
60;    );
61;------------------------------------------------------------------------------
62IoReadFifo32 PROC
63    cld
64    xchg    rcx, rdx
65    xchg    rdi, r8             ; rdi: buffer address; r8: save rdi
66rep insd
67    mov     rdi, r8             ; restore rdi
68    ret
69IoReadFifo32 ENDP
70
71;------------------------------------------------------------------------------
72;  VOID
73;  EFIAPI
74;  IoWriteFifo8 (
75;    IN UINTN                  Port,              // rcx
76;    IN UINTN                  Size,              // rdx
77;    IN VOID                   *Buffer            // r8
78;    );
79;------------------------------------------------------------------------------
80IoWriteFifo8 PROC
81    cld
82    xchg    rcx, rdx
83    xchg    rsi, r8             ; rsi: buffer address; r8: save rsi
84rep outsb
85    mov     rsi, r8             ; restore rsi
86    ret
87IoWriteFifo8 ENDP
88
89;------------------------------------------------------------------------------
90;  VOID
91;  EFIAPI
92;  IoWriteFifo16 (
93;    IN UINTN                  Port,              // rcx
94;    IN UINTN                  Size,              // rdx
95;    IN VOID                   *Buffer            // r8
96;    );
97;------------------------------------------------------------------------------
98IoWriteFifo16 PROC
99    cld
100    xchg    rcx, rdx
101    xchg    rsi, r8             ; rsi: buffer address; r8: save rsi
102rep outsw
103    mov     rsi, r8             ; restore rsi
104    ret
105IoWriteFifo16 ENDP
106
107;------------------------------------------------------------------------------
108;  VOID
109;  EFIAPI
110;  IoWriteFifo32 (
111;    IN UINTN                  Port,              // rcx
112;    IN UINTN                  Size,              // rdx
113;    IN VOID                   *Buffer            // r8
114;    );
115;------------------------------------------------------------------------------
116IoWriteFifo32 PROC
117    cld
118    xchg    rcx, rdx
119    xchg    rsi, r8             ; rsi: buffer address; r8: save rsi
120rep outsd
121    mov     rsi, r8             ; restore rsi
122    ret
123IoWriteFifo32 ENDP
124
125    END
126
127