MdePkg:simplify Fifo API in BaseIoLibIntrinsic
Simplify IoRead/WriteFifo implement by repeatedly calling IoRead/Write in the C code. This can avoid calling assembly code to use string I/O instructions. With this change Ia32/IoFifo.nasm and X64/IoFifo.nasm can be removed. Then the source files for IA32 and X64 are the same. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Cc: Ray Ni <ray.ni@intel.com> Signed-off-by: Dun Tan <dun.tan@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com> Acked-by: Michael D Kinney <michael.d.kinney@intel.com> Acked-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
@@ -1,131 +0,0 @@
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
; Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||
; Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
|
||||
;
|
||||
; SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
SECTION .text
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; VOID
|
||||
; EFIAPI
|
||||
; IoReadFifo8 (
|
||||
; IN UINTN Port,
|
||||
; IN UINTN Size,
|
||||
; OUT VOID *Buffer
|
||||
; );
|
||||
;------------------------------------------------------------------------------
|
||||
global ASM_PFX(IoReadFifo8)
|
||||
ASM_PFX(IoReadFifo8):
|
||||
push edi
|
||||
cld
|
||||
mov dx, [esp + 8]
|
||||
mov ecx, [esp + 12]
|
||||
mov edi, [esp + 16]
|
||||
rep insb
|
||||
pop edi
|
||||
ret
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; VOID
|
||||
; EFIAPI
|
||||
; IoReadFifo16 (
|
||||
; IN UINTN Port,
|
||||
; IN UINTN Size,
|
||||
; OUT VOID *Buffer
|
||||
; );
|
||||
;------------------------------------------------------------------------------
|
||||
global ASM_PFX(IoReadFifo16)
|
||||
ASM_PFX(IoReadFifo16):
|
||||
push edi
|
||||
cld
|
||||
mov dx, [esp + 8]
|
||||
mov ecx, [esp + 12]
|
||||
mov edi, [esp + 16]
|
||||
rep insw
|
||||
pop edi
|
||||
ret
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; VOID
|
||||
; EFIAPI
|
||||
; IoReadFifo32 (
|
||||
; IN UINTN Port,
|
||||
; IN UINTN Size,
|
||||
; OUT VOID *Buffer
|
||||
; );
|
||||
;------------------------------------------------------------------------------
|
||||
global ASM_PFX(IoReadFifo32)
|
||||
ASM_PFX(IoReadFifo32):
|
||||
push edi
|
||||
cld
|
||||
mov dx, [esp + 8]
|
||||
mov ecx, [esp + 12]
|
||||
mov edi, [esp + 16]
|
||||
rep insd
|
||||
pop edi
|
||||
ret
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; VOID
|
||||
; EFIAPI
|
||||
; IoWriteFifo8 (
|
||||
; IN UINTN Port,
|
||||
; IN UINTN Size,
|
||||
; IN VOID *Buffer
|
||||
; );
|
||||
;------------------------------------------------------------------------------
|
||||
global ASM_PFX(IoWriteFifo8)
|
||||
ASM_PFX(IoWriteFifo8):
|
||||
push esi
|
||||
cld
|
||||
mov dx, [esp + 8]
|
||||
mov ecx, [esp + 12]
|
||||
mov esi, [esp + 16]
|
||||
rep outsb
|
||||
pop esi
|
||||
ret
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; VOID
|
||||
; EFIAPI
|
||||
; IoWriteFifo16 (
|
||||
; IN UINTN Port,
|
||||
; IN UINTN Size,
|
||||
; IN VOID *Buffer
|
||||
; );
|
||||
;------------------------------------------------------------------------------
|
||||
global ASM_PFX(IoWriteFifo16)
|
||||
ASM_PFX(IoWriteFifo16):
|
||||
push esi
|
||||
cld
|
||||
mov dx, [esp + 8]
|
||||
mov ecx, [esp + 12]
|
||||
mov esi, [esp + 16]
|
||||
rep outsw
|
||||
pop esi
|
||||
ret
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; VOID
|
||||
; EFIAPI
|
||||
; IoWriteFifo32 (
|
||||
; IN UINTN Port,
|
||||
; IN UINTN Size,
|
||||
; IN VOID *Buffer
|
||||
; );
|
||||
;------------------------------------------------------------------------------
|
||||
global ASM_PFX(IoWriteFifo32)
|
||||
ASM_PFX(IoWriteFifo32):
|
||||
push esi
|
||||
cld
|
||||
mov dx, [esp + 8]
|
||||
mov ecx, [esp + 12]
|
||||
mov esi, [esp + 16]
|
||||
rep outsd
|
||||
pop esi
|
||||
ret
|
||||
|
Reference in New Issue
Block a user