From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by mx.groups.io with SMTP id smtpd.web09.26347.1574354201133308742 for ; Thu, 21 Nov 2019 08:36:41 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@linaro.org header.s=google header.b=PMU/si6n; spf=pass (domain: linaro.org, ip: 209.85.221.68, mailfrom: leif.lindholm@linaro.org) Received: by mail-wr1-f68.google.com with SMTP id t2so5268595wrr.1 for ; Thu, 21 Nov 2019 08:36:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=ZA3Zgo4Pu+3PfuqN68a0sIxn06I4BLqYINCAfvxOVSI=; b=PMU/si6nKYwzm+7WMNg5F/HYCt8zJ4iIVgiSPeIMoypQoFvgmoesko+mY8hR62lBpR /S4tOr0Bh3cn1CEXrAe9o+XK9Oj2cmY0NIyBCoD6n/fPrvSnrCY3GbeKSQEW7Q+XZory np6a6JfqaVLfZ78KjDZF85boWEww6IaECJXzbL+Wjq0yUnnSGTmZTadAGO/tRHvJt/3f itErG+W9zY8HitpLTJmApI8dwB0hREzJL6f45h8RW/RfVY8Q6QHVTTydMqBOYC0qn8mP D9Hbzfhqug8MGXhojaGvmHwmHBsvP04rbrjU/BEZLthn6/NGo1gkbxR6aCps6lN2hyws AGaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=ZA3Zgo4Pu+3PfuqN68a0sIxn06I4BLqYINCAfvxOVSI=; b=Sud3vvy55jsaWWidGD/ZOhc244aWMhBZ6lXds+tLUafIl0AgB7wqcKdD71c0ZweU2p 6LIcW+j39CEGFeESdCdbsu7SNKmGDUXGHSezLuTxaoLG0Gb8qn0FOU75gPD8yaT9dnbY jrqrmVrGqKuOR9R1D4JMjsitFx2F9Qv7QvC87ngdPX9SnuVuccqFlBvH0w+tDxKfIG4T /9wW5gYbwH3XjzOYXTYJ5Vw2iczt7jSFCJlOhNS36g+KBten5icLB/D5vg7piZaGFWEr iSG+QB455L2cai+BW5FAfK4iKvz5mWHbQbdtl77orhddxb8dtaCTgMglkcwXBExU+EED mvUA== X-Gm-Message-State: APjAAAVsZ9g/CEWr8BOe0fRaW3WdwusoY1viOh8JApPn4R3d7Pl+J73m Kf71VETcWFiok2xkY7JoCg1FVA== X-Google-Smtp-Source: APXvYqyGqZvavdEQ1Raf4xmrJb2WpO7AKWemT5ed3cEAsa1MABuJ01b+/R5r5TkSbL+zeNt1BvKCKg== X-Received: by 2002:adf:d4cc:: with SMTP id w12mr12004900wrk.93.1574354199329; Thu, 21 Nov 2019 08:36:39 -0800 (PST) Return-Path: Received: from bivouac.eciton.net (bivouac.eciton.net. [2a00:1098:0:86:1000:23:0:2]) by smtp.gmail.com with ESMTPSA id g133sm140626wme.42.2019.11.21.08.36.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Nov 2019 08:36:38 -0800 (PST) Date: Thu, 21 Nov 2019 16:36:36 +0000 From: "Leif Lindholm" To: Abner Chang Cc: devel@edk2.groups.io, Michael D Kinney , Liming Gao , Gilbert Chen Subject: Re: [edk2-staging/RISC-V-V2 PATCH v3 09/39] MdePkg/BaseIoLibIntrinsic: RISC-V I/O intrinsic functions. Message-ID: <20191121163636.GK7359@bivouac.eciton.net> References: <1572227957-13169-1-git-send-email-abner.chang@hpe.com> <1572227957-13169-10-git-send-email-abner.chang@hpe.com> MIME-Version: 1.0 In-Reply-To: <1572227957-13169-10-git-send-email-abner.chang@hpe.com> User-Agent: Mutt/1.10.1 (2018-07-13) Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Mon, Oct 28, 2019 at 09:58:47 +0800, Abner Chang wrote: > RISC-V MMIO library instance. Need to remember to fix subject and description. Something like "MdePkg/BaseIoLibIntrinsic: rename IoLibArm.c => IoLibNoIo.c" and "IoLibArm.c in fact implements a generic Mmio-only (and ANSI C compliant), so rename it to better reflect this." > > Signed-off-by: Abner Chang > > Cc: Michael D Kinney > Cc: Liming Gao > Cc: Leif Lindholm > Cc: Gilbert Chen > --- > .../BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf | 12 +- > MdePkg/Library/BaseIoLibIntrinsic/IoLibArm.c | 593 --------------------- > MdePkg/Library/BaseIoLibIntrinsic/IoLibNoIo.c | 593 +++++++++++++++++++++ > 3 files changed, 601 insertions(+), 597 deletions(-) > delete mode 100644 MdePkg/Library/BaseIoLibIntrinsic/IoLibArm.c > create mode 100644 MdePkg/Library/BaseIoLibIntrinsic/IoLibNoIo.c > > diff --git a/MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf b/MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf > index 457cce9..db349c2 100644 > --- a/MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf > +++ b/MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf > @@ -4,11 +4,12 @@ > # I/O Library that uses compiler intrinsics to perform IN and OUT instructions > # for IA-32 and x64. On IPF, I/O port requests are translated into MMIO requests. > # MMIO requests are forwarded directly to memory. For EBC, I/O port requests > -# ASSERT(). > +# ASSERT(). For ARM and RISC-V, I/O library only provides non I/O read and write. The ARM and RISC-V bit is beside the point, please drop that and start with "I/O library..." / Leif > # > # Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
> # Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
> # Copyright (c) 2017, AMD Incorporated. All rights reserved.
> +# Portinos Copyright (c) 2016, Hewlett Packard Enterprise Development LP. All rights reserved.
> # > # SPDX-License-Identifier: BSD-2-Clause-Patent > # > @@ -25,7 +26,7 @@ > > > # > -# VALID_ARCHITECTURES = IA32 X64 EBC ARM AARCH64 > +# VALID_ARCHITECTURES = IA32 X64 EBC ARM AARCH64 RISCV64 > # > > [Sources] > @@ -50,10 +51,13 @@ > IoLib.c > > [Sources.ARM] > - IoLibArm.c > + IoLibNoIo.c > > [Sources.AARCH64] > - IoLibArm.c > + IoLibNoIo.c > + > +[Sources.RISCV64] > + IoLibNoIo.c > > [Packages] > MdePkg/MdePkg.dec > diff --git a/MdePkg/Library/BaseIoLibIntrinsic/IoLibArm.c b/MdePkg/Library/BaseIoLibIntrinsic/IoLibArm.c > deleted file mode 100644 > index c6b8224..0000000 > --- a/MdePkg/Library/BaseIoLibIntrinsic/IoLibArm.c > +++ /dev/null > @@ -1,593 +0,0 @@ > -/** @file > - I/O Library for ARM. > - > - Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
> - Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
> - Copyright (c) 2017, AMD Incorporated. All rights reserved.
> - > - SPDX-License-Identifier: BSD-2-Clause-Patent > - > -**/ > - > - > -// > -// Include common header file for this module. > -// > -#include "BaseIoLibIntrinsicInternal.h" > - > -/** > - Reads an 8-bit I/O port. > - > - Reads the 8-bit I/O port specified by Port. The 8-bit read value is returned. > - This function must guarantee that all I/O read and write operations are > - serialized. > - > - If 8-bit I/O port operations are not supported, then ASSERT(). > - > - @param Port The I/O port to read. > - > - @return The value read. > - > -**/ > -UINT8 > -EFIAPI > -IoRead8 ( > - IN UINTN Port > - ) > -{ > - ASSERT (FALSE); > - return 0; > -} > - > -/** > - Writes an 8-bit I/O port. > - > - Writes the 8-bit I/O port specified by Port with the value specified by Value > - and returns Value. This function must guarantee that all I/O read and write > - operations are serialized. > - > - If 8-bit I/O port operations are not supported, then ASSERT(). > - > - @param Port The I/O port to write. > - @param Value The value to write to the I/O port. > - > - @return The value written the I/O port. > - > -**/ > -UINT8 > -EFIAPI > -IoWrite8 ( > - IN UINTN Port, > - IN UINT8 Value > - ) > -{ > - ASSERT (FALSE); > - return Value; > -} > - > -/** > - Reads a 16-bit I/O port. > - > - Reads the 16-bit I/O port specified by Port. The 16-bit read value is returned. > - This function must guarantee that all I/O read and write operations are > - serialized. > - > - If 16-bit I/O port operations are not supported, then ASSERT(). > - > - @param Port The I/O port to read. > - > - @return The value read. > - > -**/ > -UINT16 > -EFIAPI > -IoRead16 ( > - IN UINTN Port > - ) > -{ > - ASSERT (FALSE); > - return 0; > -} > - > -/** > - Writes a 16-bit I/O port. > - > - Writes the 16-bit I/O port specified by Port with the value specified by Value > - and returns Value. This function must guarantee that all I/O read and write > - operations are serialized. > - > - If 16-bit I/O port operations are not supported, then ASSERT(). > - > - @param Port The I/O port to write. > - @param Value The value to write to the I/O port. > - > - @return The value written the I/O port. > - > -**/ > -UINT16 > -EFIAPI > -IoWrite16 ( > - IN UINTN Port, > - IN UINT16 Value > - ) > -{ > - ASSERT (FALSE); > - return Value; > -} > - > -/** > - Reads a 32-bit I/O port. > - > - Reads the 32-bit I/O port specified by Port. The 32-bit read value is returned. > - This function must guarantee that all I/O read and write operations are > - serialized. > - > - If 32-bit I/O port operations are not supported, then ASSERT(). > - > - @param Port The I/O port to read. > - > - @return The value read. > - > -**/ > -UINT32 > -EFIAPI > -IoRead32 ( > - IN UINTN Port > - ) > -{ > - ASSERT (FALSE); > - return 0; > -} > - > -/** > - Writes a 32-bit I/O port. > - > - Writes the 32-bit I/O port specified by Port with the value specified by Value > - and returns Value. This function must guarantee that all I/O read and write > - operations are serialized. > - > - If 32-bit I/O port operations are not supported, then ASSERT(). > - > - @param Port The I/O port to write. > - @param Value The value to write to the I/O port. > - > - @return The value written the I/O port. > - > -**/ > -UINT32 > -EFIAPI > -IoWrite32 ( > - IN UINTN Port, > - IN UINT32 Value > - ) > -{ > - ASSERT (FALSE); > - return Value; > -} > - > -/** > - Reads a 64-bit I/O port. > - > - Reads the 64-bit I/O port specified by Port. The 64-bit read value is returned. > - This function must guarantee that all I/O read and write operations are > - serialized. > - > - If 64-bit I/O port operations are not supported, then ASSERT(). > - If Port is not aligned on a 64-bit boundary, then ASSERT(). > - > - @param Port The I/O port to read. > - > - @return The value read. > - > -**/ > -UINT64 > -EFIAPI > -IoRead64 ( > - IN UINTN Port > - ) > -{ > - ASSERT (FALSE); > - return 0; > -} > - > -/** > - Writes a 64-bit I/O port. > - > - Writes the 64-bit I/O port specified by Port with the value specified by Value > - and returns Value. This function must guarantee that all I/O read and write > - operations are serialized. > - > - If 64-bit I/O port operations are not supported, then ASSERT(). > - If Port is not aligned on a 64-bit boundary, then ASSERT(). > - > - @param Port The I/O port to write. > - @param Value The value to write to the I/O port. > - > - @return The value written to the I/O port. > - > -**/ > -UINT64 > -EFIAPI > -IoWrite64 ( > - IN UINTN Port, > - IN UINT64 Value > - ) > -{ > - ASSERT (FALSE); > - return 0; > -} > - > -/** > - Reads an 8-bit I/O port fifo into a block of memory. > - > - Reads the 8-bit I/O fifo port specified by Port. > - The port is read Count times, and the read data is > - stored in the provided Buffer. > - > - This function must guarantee that all I/O read and write operations are > - serialized. > - > - If 8-bit I/O port operations are not supported, then ASSERT(). > - > - @param Port The I/O port to read. > - @param Count The number of times to read I/O port. > - @param Buffer The buffer to store the read data into. > - > -**/ > -VOID > -EFIAPI > -IoReadFifo8 ( > - IN UINTN Port, > - IN UINTN Count, > - OUT VOID *Buffer > - ) > -{ > - ASSERT (FALSE); > -} > - > -/** > - Writes a block of memory into an 8-bit I/O port fifo. > - > - Writes the 8-bit I/O fifo port specified by Port. > - The port is written Count times, and the write data is > - retrieved from the provided Buffer. > - > - This function must guarantee that all I/O write and write operations are > - serialized. > - > - If 8-bit I/O port operations are not supported, then ASSERT(). > - > - @param Port The I/O port to write. > - @param Count The number of times to write I/O port. > - @param Buffer The buffer to retrieve the write data from. > - > -**/ > -VOID > -EFIAPI > -IoWriteFifo8 ( > - IN UINTN Port, > - IN UINTN Count, > - IN VOID *Buffer > - ) > -{ > - ASSERT (FALSE); > -} > - > -/** > - Reads a 16-bit I/O port fifo into a block of memory. > - > - Reads the 16-bit I/O fifo port specified by Port. > - The port is read Count times, and the read data is > - stored in the provided Buffer. > - > - This function must guarantee that all I/O read and write operations are > - serialized. > - > - If 16-bit I/O port operations are not supported, then ASSERT(). > - > - @param Port The I/O port to read. > - @param Count The number of times to read I/O port. > - @param Buffer The buffer to store the read data into. > - > -**/ > -VOID > -EFIAPI > -IoReadFifo16 ( > - IN UINTN Port, > - IN UINTN Count, > - OUT VOID *Buffer > - ) > -{ > - ASSERT (FALSE); > -} > - > -/** > - Writes a block of memory into a 16-bit I/O port fifo. > - > - Writes the 16-bit I/O fifo port specified by Port. > - The port is written Count times, and the write data is > - retrieved from the provided Buffer. > - > - This function must guarantee that all I/O write and write operations are > - serialized. > - > - If 16-bit I/O port operations are not supported, then ASSERT(). > - > - @param Port The I/O port to write. > - @param Count The number of times to write I/O port. > - @param Buffer The buffer to retrieve the write data from. > - > -**/ > -VOID > -EFIAPI > -IoWriteFifo16 ( > - IN UINTN Port, > - IN UINTN Count, > - IN VOID *Buffer > - ) > -{ > - ASSERT (FALSE); > -} > - > -/** > - Reads a 32-bit I/O port fifo into a block of memory. > - > - Reads the 32-bit I/O fifo port specified by Port. > - The port is read Count times, and the read data is > - stored in the provided Buffer. > - > - This function must guarantee that all I/O read and write operations are > - serialized. > - > - If 32-bit I/O port operations are not supported, then ASSERT(). > - > - @param Port The I/O port to read. > - @param Count The number of times to read I/O port. > - @param Buffer The buffer to store the read data into. > - > -**/ > -VOID > -EFIAPI > -IoReadFifo32 ( > - IN UINTN Port, > - IN UINTN Count, > - OUT VOID *Buffer > - ) > -{ > - ASSERT (FALSE); > -} > - > -/** > - Writes a block of memory into a 32-bit I/O port fifo. > - > - Writes the 32-bit I/O fifo port specified by Port. > - The port is written Count times, and the write data is > - retrieved from the provided Buffer. > - > - This function must guarantee that all I/O write and write operations are > - serialized. > - > - If 32-bit I/O port operations are not supported, then ASSERT(). > - > - @param Port The I/O port to write. > - @param Count The number of times to write I/O port. > - @param Buffer The buffer to retrieve the write data from. > - > -**/ > -VOID > -EFIAPI > -IoWriteFifo32 ( > - IN UINTN Port, > - IN UINTN Count, > - IN VOID *Buffer > - ) > -{ > - ASSERT (FALSE); > -} > - > -/** > - Reads an 8-bit MMIO register. > - > - Reads the 8-bit MMIO register specified by Address. The 8-bit read value is > - returned. This function must guarantee that all MMIO read and write > - operations are serialized. > - > - If 8-bit MMIO register operations are not supported, then ASSERT(). > - > - @param Address The MMIO register to read. > - > - @return The value read. > - > -**/ > -UINT8 > -EFIAPI > -MmioRead8 ( > - IN UINTN Address > - ) > -{ > - UINT8 Value; > - > - Value = *(volatile UINT8*)Address; > - return Value; > -} > - > -/** > - Writes an 8-bit MMIO register. > - > - Writes the 8-bit MMIO register specified by Address with the value specified > - by Value and returns Value. This function must guarantee that all MMIO read > - and write operations are serialized. > - > - If 8-bit MMIO register operations are not supported, then ASSERT(). > - > - @param Address The MMIO register to write. > - @param Value The value to write to the MMIO register. > - > -**/ > -UINT8 > -EFIAPI > -MmioWrite8 ( > - IN UINTN Address, > - IN UINT8 Value > - ) > -{ > - *(volatile UINT8*)Address = Value; > - return Value; > -} > - > -/** > - Reads a 16-bit MMIO register. > - > - Reads the 16-bit MMIO register specified by Address. The 16-bit read value is > - returned. This function must guarantee that all MMIO read and write > - operations are serialized. > - > - If 16-bit MMIO register operations are not supported, then ASSERT(). > - > - @param Address The MMIO register to read. > - > - @return The value read. > - > -**/ > -UINT16 > -EFIAPI > -MmioRead16 ( > - IN UINTN Address > - ) > -{ > - UINT16 Value; > - > - ASSERT ((Address & 1) == 0); > - Value = *(volatile UINT16*)Address; > - return Value; > -} > - > -/** > - Writes a 16-bit MMIO register. > - > - Writes the 16-bit MMIO register specified by Address with the value specified > - by Value and returns Value. This function must guarantee that all MMIO read > - and write operations are serialized. > - > - If 16-bit MMIO register operations are not supported, then ASSERT(). > - > - @param Address The MMIO register to write. > - @param Value The value to write to the MMIO register. > - > -**/ > -UINT16 > -EFIAPI > -MmioWrite16 ( > - IN UINTN Address, > - IN UINT16 Value > - ) > -{ > - ASSERT ((Address & 1) == 0); > - *(volatile UINT16*)Address = Value; > - return Value; > -} > - > -/** > - Reads a 32-bit MMIO register. > - > - Reads the 32-bit MMIO register specified by Address. The 32-bit read value is > - returned. This function must guarantee that all MMIO read and write > - operations are serialized. > - > - If 32-bit MMIO register operations are not supported, then ASSERT(). > - > - @param Address The MMIO register to read. > - > - @return The value read. > - > -**/ > -UINT32 > -EFIAPI > -MmioRead32 ( > - IN UINTN Address > - ) > -{ > - UINT32 Value; > - > - ASSERT ((Address & 3) == 0); > - Value = *(volatile UINT32*)Address; > - return Value; > -} > - > -/** > - Writes a 32-bit MMIO register. > - > - Writes the 32-bit MMIO register specified by Address with the value specified > - by Value and returns Value. This function must guarantee that all MMIO read > - and write operations are serialized. > - > - If 32-bit MMIO register operations are not supported, then ASSERT(). > - > - @param Address The MMIO register to write. > - @param Value The value to write to the MMIO register. > - > -**/ > -UINT32 > -EFIAPI > -MmioWrite32 ( > - IN UINTN Address, > - IN UINT32 Value > - ) > -{ > - ASSERT ((Address & 3) == 0); > - *(volatile UINT32*)Address = Value; > - return Value; > -} > - > -/** > - Reads a 64-bit MMIO register. > - > - Reads the 64-bit MMIO register specified by Address. The 64-bit read value is > - returned. This function must guarantee that all MMIO read and write > - operations are serialized. > - > - If 64-bit MMIO register operations are not supported, then ASSERT(). > - > - @param Address The MMIO register to read. > - > - @return The value read. > - > -**/ > -UINT64 > -EFIAPI > -MmioRead64 ( > - IN UINTN Address > - ) > -{ > - UINT64 Value; > - > - ASSERT ((Address & 7) == 0); > - Value = *(volatile UINT64*)Address; > - return Value; > -} > - > -/** > - Writes a 64-bit MMIO register. > - > - Writes the 64-bit MMIO register specified by Address with the value specified > - by Value and returns Value. This function must guarantee that all MMIO read > - and write operations are serialized. > - > - If 64-bit MMIO register operations are not supported, then ASSERT(). > - > - @param Address The MMIO register to write. > - @param Value The value to write to the MMIO register. > - > -**/ > -UINT64 > -EFIAPI > -MmioWrite64 ( > - IN UINTN Address, > - IN UINT64 Value > - ) > -{ > - ASSERT ((Address & 7) == 0); > - *(volatile UINT64*)Address = Value; > - return Value; > -} > - > diff --git a/MdePkg/Library/BaseIoLibIntrinsic/IoLibNoIo.c b/MdePkg/Library/BaseIoLibIntrinsic/IoLibNoIo.c > new file mode 100644 > index 0000000..c6b8224 > --- /dev/null > +++ b/MdePkg/Library/BaseIoLibIntrinsic/IoLibNoIo.c > @@ -0,0 +1,593 @@ > +/** @file > + I/O Library for ARM. > + > + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
> + Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
> + Copyright (c) 2017, AMD Incorporated. All rights reserved.
> + > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > + > +// > +// Include common header file for this module. > +// > +#include "BaseIoLibIntrinsicInternal.h" > + > +/** > + Reads an 8-bit I/O port. > + > + Reads the 8-bit I/O port specified by Port. The 8-bit read value is returned. > + This function must guarantee that all I/O read and write operations are > + serialized. > + > + If 8-bit I/O port operations are not supported, then ASSERT(). > + > + @param Port The I/O port to read. > + > + @return The value read. > + > +**/ > +UINT8 > +EFIAPI > +IoRead8 ( > + IN UINTN Port > + ) > +{ > + ASSERT (FALSE); > + return 0; > +} > + > +/** > + Writes an 8-bit I/O port. > + > + Writes the 8-bit I/O port specified by Port with the value specified by Value > + and returns Value. This function must guarantee that all I/O read and write > + operations are serialized. > + > + If 8-bit I/O port operations are not supported, then ASSERT(). > + > + @param Port The I/O port to write. > + @param Value The value to write to the I/O port. > + > + @return The value written the I/O port. > + > +**/ > +UINT8 > +EFIAPI > +IoWrite8 ( > + IN UINTN Port, > + IN UINT8 Value > + ) > +{ > + ASSERT (FALSE); > + return Value; > +} > + > +/** > + Reads a 16-bit I/O port. > + > + Reads the 16-bit I/O port specified by Port. The 16-bit read value is returned. > + This function must guarantee that all I/O read and write operations are > + serialized. > + > + If 16-bit I/O port operations are not supported, then ASSERT(). > + > + @param Port The I/O port to read. > + > + @return The value read. > + > +**/ > +UINT16 > +EFIAPI > +IoRead16 ( > + IN UINTN Port > + ) > +{ > + ASSERT (FALSE); > + return 0; > +} > + > +/** > + Writes a 16-bit I/O port. > + > + Writes the 16-bit I/O port specified by Port with the value specified by Value > + and returns Value. This function must guarantee that all I/O read and write > + operations are serialized. > + > + If 16-bit I/O port operations are not supported, then ASSERT(). > + > + @param Port The I/O port to write. > + @param Value The value to write to the I/O port. > + > + @return The value written the I/O port. > + > +**/ > +UINT16 > +EFIAPI > +IoWrite16 ( > + IN UINTN Port, > + IN UINT16 Value > + ) > +{ > + ASSERT (FALSE); > + return Value; > +} > + > +/** > + Reads a 32-bit I/O port. > + > + Reads the 32-bit I/O port specified by Port. The 32-bit read value is returned. > + This function must guarantee that all I/O read and write operations are > + serialized. > + > + If 32-bit I/O port operations are not supported, then ASSERT(). > + > + @param Port The I/O port to read. > + > + @return The value read. > + > +**/ > +UINT32 > +EFIAPI > +IoRead32 ( > + IN UINTN Port > + ) > +{ > + ASSERT (FALSE); > + return 0; > +} > + > +/** > + Writes a 32-bit I/O port. > + > + Writes the 32-bit I/O port specified by Port with the value specified by Value > + and returns Value. This function must guarantee that all I/O read and write > + operations are serialized. > + > + If 32-bit I/O port operations are not supported, then ASSERT(). > + > + @param Port The I/O port to write. > + @param Value The value to write to the I/O port. > + > + @return The value written the I/O port. > + > +**/ > +UINT32 > +EFIAPI > +IoWrite32 ( > + IN UINTN Port, > + IN UINT32 Value > + ) > +{ > + ASSERT (FALSE); > + return Value; > +} > + > +/** > + Reads a 64-bit I/O port. > + > + Reads the 64-bit I/O port specified by Port. The 64-bit read value is returned. > + This function must guarantee that all I/O read and write operations are > + serialized. > + > + If 64-bit I/O port operations are not supported, then ASSERT(). > + If Port is not aligned on a 64-bit boundary, then ASSERT(). > + > + @param Port The I/O port to read. > + > + @return The value read. > + > +**/ > +UINT64 > +EFIAPI > +IoRead64 ( > + IN UINTN Port > + ) > +{ > + ASSERT (FALSE); > + return 0; > +} > + > +/** > + Writes a 64-bit I/O port. > + > + Writes the 64-bit I/O port specified by Port with the value specified by Value > + and returns Value. This function must guarantee that all I/O read and write > + operations are serialized. > + > + If 64-bit I/O port operations are not supported, then ASSERT(). > + If Port is not aligned on a 64-bit boundary, then ASSERT(). > + > + @param Port The I/O port to write. > + @param Value The value to write to the I/O port. > + > + @return The value written to the I/O port. > + > +**/ > +UINT64 > +EFIAPI > +IoWrite64 ( > + IN UINTN Port, > + IN UINT64 Value > + ) > +{ > + ASSERT (FALSE); > + return 0; > +} > + > +/** > + Reads an 8-bit I/O port fifo into a block of memory. > + > + Reads the 8-bit I/O fifo port specified by Port. > + The port is read Count times, and the read data is > + stored in the provided Buffer. > + > + This function must guarantee that all I/O read and write operations are > + serialized. > + > + If 8-bit I/O port operations are not supported, then ASSERT(). > + > + @param Port The I/O port to read. > + @param Count The number of times to read I/O port. > + @param Buffer The buffer to store the read data into. > + > +**/ > +VOID > +EFIAPI > +IoReadFifo8 ( > + IN UINTN Port, > + IN UINTN Count, > + OUT VOID *Buffer > + ) > +{ > + ASSERT (FALSE); > +} > + > +/** > + Writes a block of memory into an 8-bit I/O port fifo. > + > + Writes the 8-bit I/O fifo port specified by Port. > + The port is written Count times, and the write data is > + retrieved from the provided Buffer. > + > + This function must guarantee that all I/O write and write operations are > + serialized. > + > + If 8-bit I/O port operations are not supported, then ASSERT(). > + > + @param Port The I/O port to write. > + @param Count The number of times to write I/O port. > + @param Buffer The buffer to retrieve the write data from. > + > +**/ > +VOID > +EFIAPI > +IoWriteFifo8 ( > + IN UINTN Port, > + IN UINTN Count, > + IN VOID *Buffer > + ) > +{ > + ASSERT (FALSE); > +} > + > +/** > + Reads a 16-bit I/O port fifo into a block of memory. > + > + Reads the 16-bit I/O fifo port specified by Port. > + The port is read Count times, and the read data is > + stored in the provided Buffer. > + > + This function must guarantee that all I/O read and write operations are > + serialized. > + > + If 16-bit I/O port operations are not supported, then ASSERT(). > + > + @param Port The I/O port to read. > + @param Count The number of times to read I/O port. > + @param Buffer The buffer to store the read data into. > + > +**/ > +VOID > +EFIAPI > +IoReadFifo16 ( > + IN UINTN Port, > + IN UINTN Count, > + OUT VOID *Buffer > + ) > +{ > + ASSERT (FALSE); > +} > + > +/** > + Writes a block of memory into a 16-bit I/O port fifo. > + > + Writes the 16-bit I/O fifo port specified by Port. > + The port is written Count times, and the write data is > + retrieved from the provided Buffer. > + > + This function must guarantee that all I/O write and write operations are > + serialized. > + > + If 16-bit I/O port operations are not supported, then ASSERT(). > + > + @param Port The I/O port to write. > + @param Count The number of times to write I/O port. > + @param Buffer The buffer to retrieve the write data from. > + > +**/ > +VOID > +EFIAPI > +IoWriteFifo16 ( > + IN UINTN Port, > + IN UINTN Count, > + IN VOID *Buffer > + ) > +{ > + ASSERT (FALSE); > +} > + > +/** > + Reads a 32-bit I/O port fifo into a block of memory. > + > + Reads the 32-bit I/O fifo port specified by Port. > + The port is read Count times, and the read data is > + stored in the provided Buffer. > + > + This function must guarantee that all I/O read and write operations are > + serialized. > + > + If 32-bit I/O port operations are not supported, then ASSERT(). > + > + @param Port The I/O port to read. > + @param Count The number of times to read I/O port. > + @param Buffer The buffer to store the read data into. > + > +**/ > +VOID > +EFIAPI > +IoReadFifo32 ( > + IN UINTN Port, > + IN UINTN Count, > + OUT VOID *Buffer > + ) > +{ > + ASSERT (FALSE); > +} > + > +/** > + Writes a block of memory into a 32-bit I/O port fifo. > + > + Writes the 32-bit I/O fifo port specified by Port. > + The port is written Count times, and the write data is > + retrieved from the provided Buffer. > + > + This function must guarantee that all I/O write and write operations are > + serialized. > + > + If 32-bit I/O port operations are not supported, then ASSERT(). > + > + @param Port The I/O port to write. > + @param Count The number of times to write I/O port. > + @param Buffer The buffer to retrieve the write data from. > + > +**/ > +VOID > +EFIAPI > +IoWriteFifo32 ( > + IN UINTN Port, > + IN UINTN Count, > + IN VOID *Buffer > + ) > +{ > + ASSERT (FALSE); > +} > + > +/** > + Reads an 8-bit MMIO register. > + > + Reads the 8-bit MMIO register specified by Address. The 8-bit read value is > + returned. This function must guarantee that all MMIO read and write > + operations are serialized. > + > + If 8-bit MMIO register operations are not supported, then ASSERT(). > + > + @param Address The MMIO register to read. > + > + @return The value read. > + > +**/ > +UINT8 > +EFIAPI > +MmioRead8 ( > + IN UINTN Address > + ) > +{ > + UINT8 Value; > + > + Value = *(volatile UINT8*)Address; > + return Value; > +} > + > +/** > + Writes an 8-bit MMIO register. > + > + Writes the 8-bit MMIO register specified by Address with the value specified > + by Value and returns Value. This function must guarantee that all MMIO read > + and write operations are serialized. > + > + If 8-bit MMIO register operations are not supported, then ASSERT(). > + > + @param Address The MMIO register to write. > + @param Value The value to write to the MMIO register. > + > +**/ > +UINT8 > +EFIAPI > +MmioWrite8 ( > + IN UINTN Address, > + IN UINT8 Value > + ) > +{ > + *(volatile UINT8*)Address = Value; > + return Value; > +} > + > +/** > + Reads a 16-bit MMIO register. > + > + Reads the 16-bit MMIO register specified by Address. The 16-bit read value is > + returned. This function must guarantee that all MMIO read and write > + operations are serialized. > + > + If 16-bit MMIO register operations are not supported, then ASSERT(). > + > + @param Address The MMIO register to read. > + > + @return The value read. > + > +**/ > +UINT16 > +EFIAPI > +MmioRead16 ( > + IN UINTN Address > + ) > +{ > + UINT16 Value; > + > + ASSERT ((Address & 1) == 0); > + Value = *(volatile UINT16*)Address; > + return Value; > +} > + > +/** > + Writes a 16-bit MMIO register. > + > + Writes the 16-bit MMIO register specified by Address with the value specified > + by Value and returns Value. This function must guarantee that all MMIO read > + and write operations are serialized. > + > + If 16-bit MMIO register operations are not supported, then ASSERT(). > + > + @param Address The MMIO register to write. > + @param Value The value to write to the MMIO register. > + > +**/ > +UINT16 > +EFIAPI > +MmioWrite16 ( > + IN UINTN Address, > + IN UINT16 Value > + ) > +{ > + ASSERT ((Address & 1) == 0); > + *(volatile UINT16*)Address = Value; > + return Value; > +} > + > +/** > + Reads a 32-bit MMIO register. > + > + Reads the 32-bit MMIO register specified by Address. The 32-bit read value is > + returned. This function must guarantee that all MMIO read and write > + operations are serialized. > + > + If 32-bit MMIO register operations are not supported, then ASSERT(). > + > + @param Address The MMIO register to read. > + > + @return The value read. > + > +**/ > +UINT32 > +EFIAPI > +MmioRead32 ( > + IN UINTN Address > + ) > +{ > + UINT32 Value; > + > + ASSERT ((Address & 3) == 0); > + Value = *(volatile UINT32*)Address; > + return Value; > +} > + > +/** > + Writes a 32-bit MMIO register. > + > + Writes the 32-bit MMIO register specified by Address with the value specified > + by Value and returns Value. This function must guarantee that all MMIO read > + and write operations are serialized. > + > + If 32-bit MMIO register operations are not supported, then ASSERT(). > + > + @param Address The MMIO register to write. > + @param Value The value to write to the MMIO register. > + > +**/ > +UINT32 > +EFIAPI > +MmioWrite32 ( > + IN UINTN Address, > + IN UINT32 Value > + ) > +{ > + ASSERT ((Address & 3) == 0); > + *(volatile UINT32*)Address = Value; > + return Value; > +} > + > +/** > + Reads a 64-bit MMIO register. > + > + Reads the 64-bit MMIO register specified by Address. The 64-bit read value is > + returned. This function must guarantee that all MMIO read and write > + operations are serialized. > + > + If 64-bit MMIO register operations are not supported, then ASSERT(). > + > + @param Address The MMIO register to read. > + > + @return The value read. > + > +**/ > +UINT64 > +EFIAPI > +MmioRead64 ( > + IN UINTN Address > + ) > +{ > + UINT64 Value; > + > + ASSERT ((Address & 7) == 0); > + Value = *(volatile UINT64*)Address; > + return Value; > +} > + > +/** > + Writes a 64-bit MMIO register. > + > + Writes the 64-bit MMIO register specified by Address with the value specified > + by Value and returns Value. This function must guarantee that all MMIO read > + and write operations are serialized. > + > + If 64-bit MMIO register operations are not supported, then ASSERT(). > + > + @param Address The MMIO register to write. > + @param Value The value to write to the MMIO register. > + > +**/ > +UINT64 > +EFIAPI > +MmioWrite64 ( > + IN UINTN Address, > + IN UINT64 Value > + ) > +{ > + ASSERT ((Address & 7) == 0); > + *(volatile UINT64*)Address = Value; > + return Value; > +} > + > -- > 2.7.4 >