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