1;------------------------------------------------------------------------------
2;
3; Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
4; Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
5;
6; SPDX-License-Identifier: BSD-2-Clause-Patent
7;
8;------------------------------------------------------------------------------
9
10    DEFAULT REL
11    SECTION .text
12
13;------------------------------------------------------------------------------
14;  VOID
15;  EFIAPI
16;  IoReadFifo8 (
17;    IN  UINTN                 Port,              // rcx
18;    IN  UINTN                 Size,              // rdx
19;    OUT VOID                  *Buffer            // r8
20;    );
21;------------------------------------------------------------------------------
22global ASM_PFX(IoReadFifo8)
23ASM_PFX(IoReadFifo8):
24    cld
25    xchg    rcx, rdx
26    xchg    rdi, r8             ; rdi: buffer address; r8: save rdi
27rep insb
28    mov     rdi, r8             ; restore rdi
29    ret
30
31;------------------------------------------------------------------------------
32;  VOID
33;  EFIAPI
34;  IoReadFifo16 (
35;    IN  UINTN                 Port,              // rcx
36;    IN  UINTN                 Size,              // rdx
37;    OUT VOID                  *Buffer            // r8
38;    );
39;------------------------------------------------------------------------------
40global ASM_PFX(IoReadFifo16)
41ASM_PFX(IoReadFifo16):
42    cld
43    xchg    rcx, rdx
44    xchg    rdi, r8             ; rdi: buffer address; r8: save rdi
45rep insw
46    mov     rdi, r8             ; restore rdi
47    ret
48
49;------------------------------------------------------------------------------
50;  VOID
51;  EFIAPI
52;  IoReadFifo32 (
53;    IN  UINTN                 Port,              // rcx
54;    IN  UINTN                 Size,              // rdx
55;    OUT VOID                  *Buffer            // r8
56;    );
57;------------------------------------------------------------------------------
58global ASM_PFX(IoReadFifo32)
59ASM_PFX(IoReadFifo32):
60    cld
61    xchg    rcx, rdx
62    xchg    rdi, r8             ; rdi: buffer address; r8: save rdi
63rep insd
64    mov     rdi, r8             ; restore rdi
65    ret
66
67;------------------------------------------------------------------------------
68;  VOID
69;  EFIAPI
70;  IoWriteFifo8 (
71;    IN UINTN                  Port,              // rcx
72;    IN UINTN                  Size,              // rdx
73;    IN VOID                   *Buffer            // r8
74;    );
75;------------------------------------------------------------------------------
76global ASM_PFX(IoWriteFifo8)
77ASM_PFX(IoWriteFifo8):
78    cld
79    xchg    rcx, rdx
80    xchg    rsi, r8             ; rsi: buffer address; r8: save rsi
81rep outsb
82    mov     rsi, r8             ; restore rsi
83    ret
84
85;------------------------------------------------------------------------------
86;  VOID
87;  EFIAPI
88;  IoWriteFifo16 (
89;    IN UINTN                  Port,              // rcx
90;    IN UINTN                  Size,              // rdx
91;    IN VOID                   *Buffer            // r8
92;    );
93;------------------------------------------------------------------------------
94global ASM_PFX(IoWriteFifo16)
95ASM_PFX(IoWriteFifo16):
96    cld
97    xchg    rcx, rdx
98    xchg    rsi, r8             ; rsi: buffer address; r8: save rsi
99rep outsw
100    mov     rsi, r8             ; restore rsi
101    ret
102
103;------------------------------------------------------------------------------
104;  VOID
105;  EFIAPI
106;  IoWriteFifo32 (
107;    IN UINTN                  Port,              // rcx
108;    IN UINTN                  Size,              // rdx
109;    IN VOID                   *Buffer            // r8
110;    );
111;------------------------------------------------------------------------------
112global ASM_PFX(IoWriteFifo32)
113ASM_PFX(IoWriteFifo32):
114    cld
115    xchg    rcx, rdx
116    xchg    rsi, r8             ; rsi: buffer address; r8: save rsi
117rep outsd
118    mov     rsi, r8             ; restore rsi
119    ret
120
121