]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Library/BaseIoLibIntrinsic/X64/IoFifo.asm
87c61071ce2ef275ed6c5b0f44442c1c24967d47
[mirror_edk2.git] / MdePkg / Library / BaseIoLibIntrinsic / X64 / IoFifo.asm
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 ; This program and the accompanying materials are licensed and made available
7 ; under the terms and conditions of the BSD License which accompanies this
8 ; distribution. The full text of the license may be found at
9 ; http://opensource.org/licenses/bsd-license.php.
10 ;
11 ; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 ; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 ;
14 ;------------------------------------------------------------------------------
15
16 .code
17
18 ;------------------------------------------------------------------------------
19 ; VOID
20 ; EFIAPI
21 ; IoReadFifo8 (
22 ; IN UINTN Port, // rcx
23 ; IN UINTN Size, // rdx
24 ; OUT VOID *Buffer // r8
25 ; );
26 ;------------------------------------------------------------------------------
27 IoReadFifo8 PROC
28 cld
29 xchg rcx, rdx
30 xchg rdi, r8 ; rdi: buffer address; r8: save rdi
31 rep insb
32 mov rdi, r8 ; restore rdi
33 ret
34 IoReadFifo8 ENDP
35
36 ;------------------------------------------------------------------------------
37 ; VOID
38 ; EFIAPI
39 ; IoReadFifo16 (
40 ; IN UINTN Port, // rcx
41 ; IN UINTN Size, // rdx
42 ; OUT VOID *Buffer // r8
43 ; );
44 ;------------------------------------------------------------------------------
45 IoReadFifo16 PROC
46 cld
47 xchg rcx, rdx
48 xchg rdi, r8 ; rdi: buffer address; r8: save rdi
49 rep insw
50 mov rdi, r8 ; restore rdi
51 ret
52 IoReadFifo16 ENDP
53
54 ;------------------------------------------------------------------------------
55 ; VOID
56 ; EFIAPI
57 ; IoReadFifo32 (
58 ; IN UINTN Port, // rcx
59 ; IN UINTN Size, // rdx
60 ; OUT VOID *Buffer // r8
61 ; );
62 ;------------------------------------------------------------------------------
63 IoReadFifo32 PROC
64 cld
65 xchg rcx, rdx
66 xchg rdi, r8 ; rdi: buffer address; r8: save rdi
67 rep insd
68 mov rdi, r8 ; restore rdi
69 ret
70 IoReadFifo32 ENDP
71
72 ;------------------------------------------------------------------------------
73 ; VOID
74 ; EFIAPI
75 ; IoWriteFifo8 (
76 ; IN UINTN Port, // rcx
77 ; IN UINTN Size, // rdx
78 ; IN VOID *Buffer // r8
79 ; );
80 ;------------------------------------------------------------------------------
81 IoWriteFifo8 PROC
82 cld
83 xchg rcx, rdx
84 xchg rsi, r8 ; rsi: buffer address; r8: save rsi
85 rep outsb
86 mov rsi, r8 ; restore rsi
87 ret
88 IoWriteFifo8 ENDP
89
90 ;------------------------------------------------------------------------------
91 ; VOID
92 ; EFIAPI
93 ; IoWriteFifo16 (
94 ; IN UINTN Port, // rcx
95 ; IN UINTN Size, // rdx
96 ; IN VOID *Buffer // r8
97 ; );
98 ;------------------------------------------------------------------------------
99 IoWriteFifo16 PROC
100 cld
101 xchg rcx, rdx
102 xchg rsi, r8 ; rsi: buffer address; r8: save rsi
103 rep outsw
104 mov rsi, r8 ; restore rsi
105 ret
106 IoWriteFifo16 ENDP
107
108 ;------------------------------------------------------------------------------
109 ; VOID
110 ; EFIAPI
111 ; IoWriteFifo32 (
112 ; IN UINTN Port, // rcx
113 ; IN UINTN Size, // rdx
114 ; IN VOID *Buffer // r8
115 ; );
116 ;------------------------------------------------------------------------------
117 IoWriteFifo32 PROC
118 cld
119 xchg rcx, rdx
120 xchg rsi, r8 ; rsi: buffer address; r8: save rsi
121 rep outsd
122 mov rsi, r8 ; restore rsi
123 ret
124 IoWriteFifo32 ENDP
125
126 END
127