1 ;------------------------------------------------------------------------------ 2 ; 3 ; Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR> 4 ; This program and the accompanying materials 5 ; are licensed and made available under the terms and conditions of the BSD License 6 ; which accompanies this distribution. The full text of the license may be found at 7 ; http://opensource.org/licenses/bsd-license.php. 8 ; 9 ; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10 ; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11 ; 12 ;------------------------------------------------------------------------------ 13 14 DEFAULT REL 15 SECTION .text 16 17 ;------------------------------------------------------------------------------ 18 ; VOID 19 ; EFIAPI 20 ; IoReadFifo8 ( 21 ; IN UINTN Port, // rcx 22 ; IN UINTN Size, // rdx 23 ; IN VOID *Buffer // r8 24 ; ); 25 ;------------------------------------------------------------------------------ 26 global ASM_PFX(IoReadFifo8) 27 ASM_PFX(IoReadFifo8): 28 29 xchg rcx, rdx 30 xchg rdi, r8 ; rdi: buffer address; r8: save rdi 31 rep insb 32 mov rdi, r8 ; restore rdi 33 ret 34 35 ;------------------------------------------------------------------------------ 36 ; VOID 37 ; EFIAPI 38 ; IoWriteFifo8 ( 39 ; IN UINTN Port, // rcx 40 ; IN UINTN Size, // rdx 41 ; IN VOID *Buffer // r8 42 ; ); 43 ;------------------------------------------------------------------------------ 44 global ASM_PFX(IoWriteFifo8) 45 ASM_PFX(IoWriteFifo8): 46 47 xchg rcx, rdx 48 xchg rsi, r8 ; rdi: buffer address; r8: save rdi 49 rep outsb 50 mov rsi, r8 ; restore rdi 51 ret 52 53