1 ;------------------------------------------------------------------------------
3 ; Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
4 ; Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
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.
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.
14 ;------------------------------------------------------------------------------
19 ;------------------------------------------------------------------------------
23 ; IN UINTN Port, // rcx
24 ; IN UINTN Size, // rdx
25 ; OUT VOID *Buffer // r8
27 ;------------------------------------------------------------------------------
28 global ASM_PFX(IoReadFifo8)
32 xchg rdi, r8 ; rdi: buffer address; r8: save rdi
34 mov rdi, r8 ; restore rdi
37 ;------------------------------------------------------------------------------
41 ; IN UINTN Port, // rcx
42 ; IN UINTN Size, // rdx
43 ; OUT VOID *Buffer // r8
45 ;------------------------------------------------------------------------------
46 global ASM_PFX(IoReadFifo16)
47 ASM_PFX(IoReadFifo16):
50 xchg rdi, r8 ; rdi: buffer address; r8: save rdi
52 mov rdi, r8 ; restore rdi
55 ;------------------------------------------------------------------------------
59 ; IN UINTN Port, // rcx
60 ; IN UINTN Size, // rdx
61 ; OUT VOID *Buffer // r8
63 ;------------------------------------------------------------------------------
64 global ASM_PFX(IoReadFifo32)
65 ASM_PFX(IoReadFifo32):
68 xchg rdi, r8 ; rdi: buffer address; r8: save rdi
70 mov rdi, r8 ; restore rdi
73 ;------------------------------------------------------------------------------
77 ; IN UINTN Port, // rcx
78 ; IN UINTN Size, // rdx
79 ; IN VOID *Buffer // r8
81 ;------------------------------------------------------------------------------
82 global ASM_PFX(IoWriteFifo8)
83 ASM_PFX(IoWriteFifo8):
86 xchg rsi, r8 ; rsi: buffer address; r8: save rsi
88 mov rsi, r8 ; restore rsi
91 ;------------------------------------------------------------------------------
95 ; IN UINTN Port, // rcx
96 ; IN UINTN Size, // rdx
97 ; IN VOID *Buffer // r8
99 ;------------------------------------------------------------------------------
100 global ASM_PFX(IoWriteFifo16)
101 ASM_PFX(IoWriteFifo16):
104 xchg rsi, r8 ; rsi: buffer address; r8: save rsi
106 mov rsi, r8 ; restore rsi
109 ;------------------------------------------------------------------------------
113 ; IN UINTN Port, // rcx
114 ; IN UINTN Size, // rdx
115 ; IN VOID *Buffer // r8
117 ;------------------------------------------------------------------------------
118 global ASM_PFX(IoWriteFifo32)
119 ASM_PFX(IoWriteFifo32):
122 xchg rsi, r8 ; rsi: buffer address; r8: save rsi
124 mov rsi, r8 ; restore rsi