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