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; SPDX-License-Identifier: BSD-2-Clause-Patent 7; 8;------------------------------------------------------------------------------ 9 10 DEFAULT REL 11 SECTION .text 12 13;------------------------------------------------------------------------------ 14; VOID 15; EFIAPI 16; IoReadFifo8 ( 17; IN UINTN Port, // rcx 18; IN UINTN Size, // rdx 19; OUT VOID *Buffer // r8 20; ); 21;------------------------------------------------------------------------------ 22global ASM_PFX(IoReadFifo8) 23ASM_PFX(IoReadFifo8): 24 cld 25 xchg rcx, rdx 26 xchg rdi, r8 ; rdi: buffer address; r8: save rdi 27rep insb 28 mov rdi, r8 ; restore rdi 29 ret 30 31;------------------------------------------------------------------------------ 32; VOID 33; EFIAPI 34; IoReadFifo16 ( 35; IN UINTN Port, // rcx 36; IN UINTN Size, // rdx 37; OUT VOID *Buffer // r8 38; ); 39;------------------------------------------------------------------------------ 40global ASM_PFX(IoReadFifo16) 41ASM_PFX(IoReadFifo16): 42 cld 43 xchg rcx, rdx 44 xchg rdi, r8 ; rdi: buffer address; r8: save rdi 45rep insw 46 mov rdi, r8 ; restore rdi 47 ret 48 49;------------------------------------------------------------------------------ 50; VOID 51; EFIAPI 52; IoReadFifo32 ( 53; IN UINTN Port, // rcx 54; IN UINTN Size, // rdx 55; OUT VOID *Buffer // r8 56; ); 57;------------------------------------------------------------------------------ 58global ASM_PFX(IoReadFifo32) 59ASM_PFX(IoReadFifo32): 60 cld 61 xchg rcx, rdx 62 xchg rdi, r8 ; rdi: buffer address; r8: save rdi 63rep insd 64 mov rdi, r8 ; restore rdi 65 ret 66 67;------------------------------------------------------------------------------ 68; VOID 69; EFIAPI 70; IoWriteFifo8 ( 71; IN UINTN Port, // rcx 72; IN UINTN Size, // rdx 73; IN VOID *Buffer // r8 74; ); 75;------------------------------------------------------------------------------ 76global ASM_PFX(IoWriteFifo8) 77ASM_PFX(IoWriteFifo8): 78 cld 79 xchg rcx, rdx 80 xchg rsi, r8 ; rsi: buffer address; r8: save rsi 81rep outsb 82 mov rsi, r8 ; restore rsi 83 ret 84 85;------------------------------------------------------------------------------ 86; VOID 87; EFIAPI 88; IoWriteFifo16 ( 89; IN UINTN Port, // rcx 90; IN UINTN Size, // rdx 91; IN VOID *Buffer // r8 92; ); 93;------------------------------------------------------------------------------ 94global ASM_PFX(IoWriteFifo16) 95ASM_PFX(IoWriteFifo16): 96 cld 97 xchg rcx, rdx 98 xchg rsi, r8 ; rsi: buffer address; r8: save rsi 99rep outsw 100 mov rsi, r8 ; restore rsi 101 ret 102 103;------------------------------------------------------------------------------ 104; VOID 105; EFIAPI 106; IoWriteFifo32 ( 107; IN UINTN Port, // rcx 108; IN UINTN Size, // rdx 109; IN VOID *Buffer // r8 110; ); 111;------------------------------------------------------------------------------ 112global ASM_PFX(IoWriteFifo32) 113ASM_PFX(IoWriteFifo32): 114 cld 115 xchg rcx, rdx 116 xchg rsi, r8 ; rsi: buffer address; r8: save rsi 117rep outsd 118 mov rsi, r8 ; restore rsi 119 ret 120 121