1;------------------------------------------------------------------------------ 2; 3; Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR> 4; 5; This program and the accompanying materials are licensed and made available 6; under the terms and conditions of the BSD License which accompanies this 7; distribution. The full text of the license may be found at 8; http://opensource.org/licenses/bsd-license.php. 9; 10; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12; 13;------------------------------------------------------------------------------ 14 15 DEFAULT REL 16 SECTION .text 17 18;------------------------------------------------------------------------------ 19; VOID 20; EFIAPI 21; IoReadFifo8 ( 22; IN UINTN Port, // rcx 23; IN UINTN Size, // rdx 24; IN VOID *Buffer // r8 25; ); 26;------------------------------------------------------------------------------ 27global ASM_PFX(IoReadFifo8) 28ASM_PFX(IoReadFifo8): 29 cld 30 xchg rcx, rdx 31 xchg rdi, r8 ; rdi: buffer address; r8: save rdi 32rep insb 33 mov rdi, r8 ; restore rdi 34 ret 35 36;------------------------------------------------------------------------------ 37; VOID 38; EFIAPI 39; IoReadFifo16 ( 40; IN UINTN Port, // rcx 41; IN UINTN Size, // rdx 42; IN VOID *Buffer // r8 43; ); 44;------------------------------------------------------------------------------ 45global ASM_PFX(IoReadFifo16) 46ASM_PFX(IoReadFifo16): 47 cld 48 xchg rcx, rdx 49 xchg rdi, r8 ; rdi: buffer address; r8: save rdi 50rep insw 51 mov rdi, r8 ; restore rdi 52 ret 53 54;------------------------------------------------------------------------------ 55; VOID 56; EFIAPI 57; IoReadFifo32 ( 58; IN UINTN Port, // rcx 59; IN UINTN Size, // rdx 60; IN VOID *Buffer // r8 61; ); 62;------------------------------------------------------------------------------ 63global ASM_PFX(IoReadFifo32) 64ASM_PFX(IoReadFifo32): 65 cld 66 xchg rcx, rdx 67 xchg rdi, r8 ; rdi: buffer address; r8: save rdi 68rep insd 69 mov rdi, r8 ; restore rdi 70 ret 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;------------------------------------------------------------------------------ 81global ASM_PFX(IoWriteFifo8) 82ASM_PFX(IoWriteFifo8): 83 cld 84 xchg rcx, rdx 85 xchg rsi, r8 ; rsi: buffer address; r8: save rsi 86rep outsb 87 mov rsi, r8 ; restore rsi 88 ret 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;------------------------------------------------------------------------------ 99global ASM_PFX(IoWriteFifo16) 100ASM_PFX(IoWriteFifo16): 101 cld 102 xchg rcx, rdx 103 xchg rsi, r8 ; rsi: buffer address; r8: save rsi 104rep outsw 105 mov rsi, r8 ; restore rsi 106 ret 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;------------------------------------------------------------------------------ 117global ASM_PFX(IoWriteFifo32) 118ASM_PFX(IoWriteFifo32): 119 cld 120 xchg rcx, rdx 121 xchg rsi, r8 ; rsi: buffer address; r8: save rsi 122rep outsd 123 mov rsi, r8 ; restore rsi 124 ret 125 126