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