]> git.proxmox.com Git - mirror_edk2.git/blob - PcAtChipsetPkg/PciHostBridgeDxe/Ia32/IoFifo.asm
PcAtChipsetPkg/PciHostBridgeDxe: Improve KVM FIFO I/O read/write performance
[mirror_edk2.git] / PcAtChipsetPkg / PciHostBridgeDxe / Ia32 / IoFifo.asm
1 ;------------------------------------------------------------------------------
2 ;
3 ; Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
4 ; This program and the accompanying materials
5 ; are licensed and made available under the terms and conditions of the BSD License
6 ; which accompanies this distribution. The full text of the license may be found at
7 ; http://opensource.org/licenses/bsd-license.php.
8 ;
9 ; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 ; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11 ;
12 ;------------------------------------------------------------------------------
13
14 .586P
15 .model flat,C
16 .code
17
18 ;------------------------------------------------------------------------------
19 ; VOID
20 ; EFIAPI
21 ; IoReadFifo8 (
22 ; IN UINTN Port,
23 ; IN UINTN Size,
24 ; IN VOID *Buffer
25 ; );
26 ;------------------------------------------------------------------------------
27 IoReadFifo8 PROC
28 push edi
29 cld
30 mov dx, [esp + 8]
31 mov ecx, [esp + 12]
32 mov edi, [esp + 16]
33 rep insb
34 pop edi
35 ret
36 IoReadFifo8 ENDP
37
38 ;------------------------------------------------------------------------------
39 ; VOID
40 ; EFIAPI
41 ; IoReadFifo16 (
42 ; IN UINTN Port,
43 ; IN UINTN Size,
44 ; IN VOID *Buffer
45 ; );
46 ;------------------------------------------------------------------------------
47 IoReadFifo16 PROC
48 push edi
49 cld
50 mov dx, [esp + 8]
51 mov ecx, [esp + 12]
52 mov edi, [esp + 16]
53 rep insw
54 pop edi
55 ret
56 IoReadFifo16 ENDP
57
58 ;------------------------------------------------------------------------------
59 ; VOID
60 ; EFIAPI
61 ; IoReadFifo32 (
62 ; IN UINTN Port,
63 ; IN UINTN Size,
64 ; IN VOID *Buffer
65 ; );
66 ;------------------------------------------------------------------------------
67 IoReadFifo32 PROC
68 push edi
69 cld
70 mov dx, [esp + 8]
71 mov ecx, [esp + 12]
72 mov edi, [esp + 16]
73 rep insd
74 pop edi
75 ret
76 IoReadFifo32 ENDP
77
78 ;------------------------------------------------------------------------------
79 ; VOID
80 ; EFIAPI
81 ; IoWriteFifo8 (
82 ; IN UINTN Port,
83 ; IN UINTN Size,
84 ; IN VOID *Buffer
85 ; );
86 ;------------------------------------------------------------------------------
87 IoWriteFifo8 PROC
88 push esi
89 cld
90 mov dx, [esp + 8]
91 mov ecx, [esp + 12]
92 mov esi, [esp + 16]
93 rep outsb
94 pop esi
95 ret
96 IoWriteFifo8 ENDP
97
98 ;------------------------------------------------------------------------------
99 ; VOID
100 ; EFIAPI
101 ; IoWriteFifo16 (
102 ; IN UINTN Port,
103 ; IN UINTN Size,
104 ; IN VOID *Buffer
105 ; );
106 ;------------------------------------------------------------------------------
107 IoWriteFifo16 PROC
108 push esi
109 cld
110 mov dx, [esp + 8]
111 mov ecx, [esp + 12]
112 mov esi, [esp + 16]
113 rep outsw
114 pop esi
115 ret
116 IoWriteFifo16 ENDP
117
118 ;------------------------------------------------------------------------------
119 ; VOID
120 ; EFIAPI
121 ; IoWriteFifo32 (
122 ; IN UINTN Port,
123 ; IN UINTN Size,
124 ; IN VOID *Buffer
125 ; );
126 ;------------------------------------------------------------------------------
127 IoWriteFifo32 PROC
128 push esi
129 cld
130 mov dx, [esp + 8]
131 mov ecx, [esp + 12]
132 mov esi, [esp + 16]
133 rep outsd
134 pop esi
135 ret
136 IoWriteFifo32 ENDP
137
138 END
139