public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Shenglei Zhang <shenglei.zhang@intel.com>
To: edk2-devel@lists.01.org
Cc: Liming Gao <liming.gao@intel.com>,
	Michael D Kinney <michael.d.kinney@intel.com>
Subject: [PATCH 1/8] IntelFrameworkPkg/DxeIoLibCpuIo: Remove DxeIoLibCpuIo
Date: Tue, 13 Nov 2018 16:35:11 +0800	[thread overview]
Message-ID: <20181113083518.6824-2-shenglei.zhang@intel.com> (raw)
In-Reply-To: <20181113083518.6824-1-shenglei.zhang@intel.com>

DxeIoLibCpuIo is not used, so it is removed.
https://bugzilla.tianocore.org/show_bug.cgi?id=1190

Cc: Liming Gao <liming.gao@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Shenglei Zhang <shenglei.zhang@intel.com>
---
 .../DxeIoLibCpuIo/DxeCpuIoLibInternal.h       |  178 --
 .../Library/DxeIoLibCpuIo/DxeIoLibCpuIo.inf   |   52 -
 .../Library/DxeIoLibCpuIo/DxeIoLibCpuIo.uni   |   21 -
 .../Library/DxeIoLibCpuIo/IoHighLevel.c       | 2315 -----------------
 .../Library/DxeIoLibCpuIo/IoLib.c             |  870 -------
 .../Library/DxeIoLibCpuIo/IoLibMmioBuffer.c   |  416 ---
 6 files changed, 3852 deletions(-)
 delete mode 100644 IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeCpuIoLibInternal.h
 delete mode 100644 IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.inf
 delete mode 100644 IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.uni
 delete mode 100644 IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoHighLevel.c
 delete mode 100644 IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoLib.c
 delete mode 100644 IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoLibMmioBuffer.c

diff --git a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeCpuIoLibInternal.h b/IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeCpuIoLibInternal.h
deleted file mode 100644
index 6265caa54c..0000000000
--- a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeCpuIoLibInternal.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/** @file
-  Internal include file of DXE CPU IO Library.
-  It includes all necessary protocol/library class's header file
-  for implementation of IoLib library instance. It is included
-  all source code of this library instance.
-
-  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
-  Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
-
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-  Module Name:  DxeCpuIoLibInternal.h
-
-**/
-
-#ifndef _DXE_CPUIO_LIB_INTERNAL_H_
-#define _DXE_CPUIO_LIB_INTERNAL_H_
-
-
-#include <FrameworkDxe.h>
-
-#include <Protocol/CpuIo.h>
-
-#include <Library/IoLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-#include <Library/DebugLib.h>
-#include <Library/BaseLib.h>
-
-
-/**
-  Reads registers in the EFI CPU I/O space.
-
-  Reads the I/O port specified by Port with registers width specified by Width.
-  The read value is returned.
-
-  This function must guarantee that all I/O read and write operations are serialized.
-  If such operations are not supported, then ASSERT().
-
-  @param  Port          The base address of the I/O operation.
-                        The caller is responsible for aligning the Address if required.
-  @param  Width         The width of the I/O operation.
-
-  @return Data read from registers in the EFI CPU I/O space.
-
-**/
-UINT64
-EFIAPI
-IoReadWorker (
-  IN      UINTN                      Port,
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width
-  );
-
-/**
-  Writes registers in the EFI CPU I/O space.
-
-  Writes the I/O port specified by Port with registers width and value specified by Width
-  and Data respectively. Data is returned.
-
-  This function must guarantee that all I/O read and write operations are serialized.
-  If such operations are not supported, then ASSERT().
-
-  @param  Port          The base address of the I/O operation.
-                        The caller is responsible for aligning the Address if required.
-  @param  Width         The width of the I/O operation.
-  @param  Data          The value to write to the I/O port.
-
-  @return The parameter of Data.
-
-**/
-UINT64
-EFIAPI
-IoWriteWorker (
-  IN      UINTN                      Port,
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width,
-  IN      UINT64                     Data
-  );
-
-/**
-  Reads registers in the EFI CPU I/O space.
-
-  Reads the I/O port specified by Port with registers width specified by Width.
-  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 such operations are not supported, then ASSERT().
-
-  @param  Port          The base address of the I/O operation.
-                        The caller is responsible for aligning the Address if required.
-  @param  Width         The width of the I/O operation.
-  @param  Count         The number of times to read I/O port.
-  @param  Buffer        The buffer to store the read data into.
-
-**/
-VOID
-EFIAPI
-IoReadFifoWorker (
-  IN      UINTN                      Port,
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width,
-  IN      UINTN                      Count,
-  IN      VOID                       *Buffer
-  );
-
-/**
-  Writes registers in the EFI CPU I/O space.
-
-  Writes the I/O port specified by Port with registers width specified by Width.
-  The port is written Count times, and the write data is retrieved from the provided Buffer.
-
-  This function must guarantee that all I/O read and write operations are serialized.
-  If such operations are not supported, then ASSERT().
-
-  @param  Port          The base address of the I/O operation.
-                        The caller is responsible for aligning the Address if required.
-  @param  Width         The width of the I/O operation.
-  @param  Count         The number of times to write I/O port.
-  @param  Buffer        The buffer to store the read data into.
-
-**/
-VOID
-EFIAPI
-IoWriteFifoWorker (
-  IN      UINTN                      Port,
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width,
-  IN      UINTN                      Count,
-  IN      VOID                       *Buffer
-  );
-
-/**
-  Reads memory-mapped registers in the EFI system memory space.
-
-  Reads the MMIO registers specified by Address with registers width specified by Width.
-  The read value is returned. If such operations are not supported, then ASSERT().
-  This function must guarantee that all MMIO read and write operations are serialized.
-
-  @param  Address       The MMIO register to read.
-                        The caller is responsible for aligning the Address if required.
-  @param  Width         The width of the I/O operation.
-
-  @return Data read from registers in the EFI system memory space.
-
-**/
-UINT64
-EFIAPI
-MmioReadWorker (
-  IN      UINTN                     Address,
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH Width
-  );
-
-/**
-  Writes memory-mapped registers in the EFI system memory space.
-
-  Writes the MMIO registers specified by Address with registers width and value specified by Width
-  and Data respectively. Data is returned. If such operations are not supported, then ASSERT().
-  This function must guarantee that all MMIO read and write operations are serialized.
-
-  @param  Address       The MMIO register to read.
-                        The caller is responsible for aligning the Address if required.
-  @param  Width         The width of the I/O operation.
-  @param  Data          The value to write to the I/O port.
-
-  @return Data read from registers in the EFI system memory space.
-
-**/
-UINT64
-EFIAPI
-MmioWriteWorker (
-  IN      UINTN                     Address,
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH Width,
-  IN      UINT64                    Data
-  );
-
-#endif
diff --git a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.inf b/IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.inf
deleted file mode 100644
index 348f05ee98..0000000000
--- a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.inf
+++ /dev/null
@@ -1,52 +0,0 @@
-## @file
-# I/O Library implementation that uses the CPU I/O Protocol for I/O and MMIO operations.
-#
-# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
-#
-#  This program and the accompanying materials
-#  are licensed and made available under the terms and conditions of the BSD License
-#  which accompanies this distribution. The full text of the license may be found at
-#  http://opensource.org/licenses/bsd-license.php
-#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-#
-##
-
-[Defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = DxeIoLibCpuIo
-  MODULE_UNI_FILE                = DxeIoLibCpuIo.uni
-  FILE_GUID                      = e94cd42a-3aad-4ea0-9b09-945891c60ccd
-  MODULE_TYPE                    = DXE_DRIVER
-  VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = IoLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
-  CONSTRUCTOR                    = IoLibConstructor
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-#  VALID_ARCHITECTURES           = IA32 X64 EBC
-#
-
-[Sources]
-  IoLibMmioBuffer.c
-  DxeCpuIoLibInternal.h
-  IoHighLevel.c
-  IoLib.c
-
-[Packages]
-  MdePkg/MdePkg.dec
-  IntelFrameworkPkg/IntelFrameworkPkg.dec
-
-[LibraryClasses]
-  BaseLib
-  DebugLib
-  UefiBootServicesTableLib
-
-[Protocols]
-  gEfiCpuIoProtocolGuid                         ## CONSUMES
-
-[Depex.common.DXE_DRIVER, Depex.common.DXE_RUNTIME_DRIVER, Depex.common.DXE_SAL_DRIVER, Depex.common.DXE_SMM_DRIVER]
-  gEfiCpuIoProtocolGuid
-
diff --git a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.uni b/IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.uni
deleted file mode 100644
index b2a4b4a063..0000000000
--- a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.uni
+++ /dev/null
@@ -1,21 +0,0 @@
-// /** @file
-// I/O Library implementation that uses the CPU I/O Protocol for I/O and MMIO operations.
-//
-// The I/O Library implementation that uses the CPU I/O Protocol for I/O and MMIO operations.
-//
-// Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
-//
-// This program and the accompanying materials
-// are licensed and made available under the terms and conditions of the BSD License
-// which accompanies this distribution. The full text of the license may be found at
-// http://opensource.org/licenses/bsd-license.php
-// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-//
-// **/
-
-
-#string STR_MODULE_ABSTRACT             #language en-US "Uses the CPU I/O Protocol for I/O and MMIO operations"
-
-#string STR_MODULE_DESCRIPTION          #language en-US "The I/O Library implementation that uses the CPU I/O Protocol for I/O and MMIO operations."
-
diff --git a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoHighLevel.c b/IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoHighLevel.c
deleted file mode 100644
index 2ba291f415..0000000000
--- a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoHighLevel.c
+++ /dev/null
@@ -1,2315 +0,0 @@
-/** @file
-  High-level Io/Mmio functions.
-
-  All assertions for bit field operations are handled bit field functions in the
-  Base Library.
-
-  Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-  Module Name:  IoHighLevel.c
-
-  The following IoLib instances share the same version of this file:
-
-    BaseIoLibIntrinsic
-    DxeIoLibCpuIo
-    PeiIoLibCpuIo
-
-**/
-
-
-#include "DxeCpuIoLibInternal.h"
-
-/**
-  Reads an 8-bit I/O port, performs a bitwise OR, and writes the
-  result back to the 8-bit I/O port.
-
-  Reads the 8-bit I/O port specified by Port, performs a bitwise OR
-  between the read result and the value specified by OrData, and writes the
-  result to the 8-bit I/O port specified by Port. The value written to the I/O
-  port 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 write.
-  @param  OrData  The value to OR with the read value from the I/O port.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT8
-EFIAPI
-IoOr8 (
-  IN      UINTN                     Port,
-  IN      UINT8                     OrData
-  )
-{
-  return IoWrite8 (Port, (UINT8) (IoRead8 (Port) | OrData));
-}
-
-/**
-  Reads an 8-bit I/O port, performs a bitwise AND, and writes the result back
-  to the 8-bit I/O port.
-
-  Reads the 8-bit I/O port specified by Port, performs a bitwise AND between
-  the read result and the value specified by AndData, and writes the result to
-  the 8-bit I/O port specified by Port. The value written to the I/O port 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 write.
-  @param  AndData The value to AND with the read value from the I/O port.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT8
-EFIAPI
-IoAnd8 (
-  IN      UINTN                     Port,
-  IN      UINT8                     AndData
-  )
-{
-  return IoWrite8 (Port, (UINT8) (IoRead8 (Port) & AndData));
-}
-
-/**
-  Reads an 8-bit I/O port, performs a bitwise AND followed by a bitwise
-  inclusive OR, and writes the result back to the 8-bit I/O port.
-
-  Reads the 8-bit I/O port specified by Port, performs a bitwise AND between
-  the read result and the value specified by AndData, performs a bitwise OR
-  between the result of the AND operation and the value specified by OrData,
-  and writes the result to the 8-bit I/O port specified by Port. The value
-  written to the I/O port 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 write.
-  @param  AndData The value to AND with the read value from the I/O port.
-  @param  OrData  The value to OR with the result of the AND operation.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT8
-EFIAPI
-IoAndThenOr8 (
-  IN      UINTN                     Port,
-  IN      UINT8                     AndData,
-  IN      UINT8                     OrData
-  )
-{
-  return IoWrite8 (Port, (UINT8) ((IoRead8 (Port) & AndData) | OrData));
-}
-
-/**
-  Reads a bit field of an I/O register.
-
-  Reads the bit field in an 8-bit I/O register. The bit field is specified by
-  the StartBit and the EndBit. The value of the bit field is returned.
-
-  If 8-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 7, then ASSERT().
-  If EndBit is greater than 7, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-
-  @param  Port      The I/O port to read.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..7.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..7.
-
-  @return The value read.
-
-**/
-UINT8
-EFIAPI
-IoBitFieldRead8 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit
-  )
-{
-  return BitFieldRead8 (IoRead8 (Port), StartBit, EndBit);
-}
-
-/**
-  Writes a bit field to an I/O register.
-
-  Writes Value to the bit field of the I/O register. The bit field is specified
-  by the StartBit and the EndBit. All other bits in the destination I/O
-  register are preserved. The value written to the I/O port is returned. Extra
-  left bits in Value are stripped.
-
-  If 8-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 7, then ASSERT().
-  If EndBit is greater than 7, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Port      The I/O port to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..7.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..7.
-  @param  Value     New value of the bit field.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT8
-EFIAPI
-IoBitFieldWrite8 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT8                     Value
-  )
-{
-  return IoWrite8 (
-           Port,
-           BitFieldWrite8 (IoRead8 (Port), StartBit, EndBit, Value)
-           );
-}
-
-/**
-  Reads a bit field in an 8-bit port, performs a bitwise OR, and writes the
-  result back to the bit field in the 8-bit port.
-
-  Reads the 8-bit I/O port specified by Port, performs a bitwise OR
-  between the read result and the value specified by OrData, and writes the
-  result to the 8-bit I/O port specified by Port. The value written to the I/O
-  port is returned. This function must guarantee that all I/O read and write
-  operations are serialized. Extra left bits in OrData are stripped.
-
-  If 8-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 7, then ASSERT().
-  If EndBit is greater than 7, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Port      The I/O port to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..7.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..7.
-  @param  OrData    The value to OR with the read value from the I/O port.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT8
-EFIAPI
-IoBitFieldOr8 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT8                     OrData
-  )
-{
-  return IoWrite8 (
-           Port,
-           BitFieldOr8 (IoRead8 (Port), StartBit, EndBit, OrData)
-           );
-}
-
-/**
-  Reads a bit field in an 8-bit port, performs a bitwise AND, and writes the
-  result back to the bit field in the 8-bit port.
-
-  Reads the 8-bit I/O port specified by Port, performs a bitwise AND between
-  the read result and the value specified by AndData, and writes the result to
-  the 8-bit I/O port specified by Port. The value written to the I/O port is
-  returned. This function must guarantee that all I/O read and write operations
-  are serialized. Extra left bits in AndData are stripped.
-
-  If 8-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 7, then ASSERT().
-  If EndBit is greater than 7, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Port      The I/O port to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..7.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..7.
-  @param  AndData   The value to AND with the read value from the I/O port.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT8
-EFIAPI
-IoBitFieldAnd8 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT8                     AndData
-  )
-{
-  return IoWrite8 (
-           Port,
-           BitFieldAnd8 (IoRead8 (Port), StartBit, EndBit, AndData)
-           );
-}
-
-/**
-  Reads a bit field in an 8-bit port, performs a bitwise AND followed by a
-  bitwise OR, and writes the result back to the bit field in the
-  8-bit port.
-
-  Reads the 8-bit I/O port specified by Port, performs a bitwise AND followed
-  by a bitwise OR between the read result and the value specified by
-  AndData, and writes the result to the 8-bit I/O port specified by Port. The
-  value written to the I/O port is returned. This function must guarantee that
-  all I/O read and write operations are serialized. Extra left bits in both
-  AndData and OrData are stripped.
-
-  If 8-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 7, then ASSERT().
-  If EndBit is greater than 7, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Port      The I/O port to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..7.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..7.
-  @param  AndData   The value to AND with the read value from the I/O port.
-  @param  OrData    The value to OR with the result of the AND operation.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT8
-EFIAPI
-IoBitFieldAndThenOr8 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT8                     AndData,
-  IN      UINT8                     OrData
-  )
-{
-  return IoWrite8 (
-           Port,
-           BitFieldAndThenOr8 (IoRead8 (Port), StartBit, EndBit, AndData, OrData)
-           );
-}
-
-/**
-  Reads a 16-bit I/O port, performs a bitwise OR, and writes the
-  result back to the 16-bit I/O port.
-
-  Reads the 16-bit I/O port specified by Port, performs a bitwise OR
-  between the read result and the value specified by OrData, and writes the
-  result to the 16-bit I/O port specified by Port. The value written to the I/O
-  port 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 write.
-  @param  OrData  The value to OR with the read value from the I/O port.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT16
-EFIAPI
-IoOr16 (
-  IN      UINTN                     Port,
-  IN      UINT16                    OrData
-  )
-{
-  return IoWrite16 (Port, (UINT16) (IoRead16 (Port) | OrData));
-}
-
-/**
-  Reads a 16-bit I/O port, performs a bitwise AND, and writes the result back
-  to the 16-bit I/O port.
-
-  Reads the 16-bit I/O port specified by Port, performs a bitwise AND between
-  the read result and the value specified by AndData, and writes the result to
-  the 16-bit I/O port specified by Port. The value written to the I/O port 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 write.
-  @param  AndData The value to AND with the read value from the I/O port.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT16
-EFIAPI
-IoAnd16 (
-  IN      UINTN                     Port,
-  IN      UINT16                    AndData
-  )
-{
-  return IoWrite16 (Port, (UINT16) (IoRead16 (Port) & AndData));
-}
-
-/**
-  Reads a 16-bit I/O port, performs a bitwise AND followed by a bitwise
-  inclusive OR, and writes the result back to the 16-bit I/O port.
-
-  Reads the 16-bit I/O port specified by Port, performs a bitwise AND between
-  the read result and the value specified by AndData, performs a bitwise OR
-  between the result of the AND operation and the value specified by OrData,
-  and writes the result to the 16-bit I/O port specified by Port. The value
-  written to the I/O port 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 write.
-  @param  AndData The value to AND with the read value from the I/O port.
-  @param  OrData  The value to OR with the result of the AND operation.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT16
-EFIAPI
-IoAndThenOr16 (
-  IN      UINTN                     Port,
-  IN      UINT16                    AndData,
-  IN      UINT16                    OrData
-  )
-{
-  return IoWrite16 (Port, (UINT16) ((IoRead16 (Port) & AndData) | OrData));
-}
-
-/**
-  Reads a bit field of an I/O register.
-
-  Reads the bit field in a 16-bit I/O register. The bit field is specified by
-  the StartBit and the EndBit. The value of the bit field is returned.
-
-  If 16-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 15, then ASSERT().
-  If EndBit is greater than 15, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-
-  @param  Port      The I/O port to read.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..15.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..15.
-
-  @return The value read.
-
-**/
-UINT16
-EFIAPI
-IoBitFieldRead16 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit
-  )
-{
-  return BitFieldRead16 (IoRead16 (Port), StartBit, EndBit);
-}
-
-/**
-  Writes a bit field to an I/O register.
-
-  Writes Value to the bit field of the I/O register. The bit field is specified
-  by the StartBit and the EndBit. All other bits in the destination I/O
-  register are preserved. The value written to the I/O port is returned. Extra
-  left bits in Value are stripped.
-
-  If 16-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 15, then ASSERT().
-  If EndBit is greater than 15, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Port      The I/O port to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..15.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..15.
-  @param  Value     New value of the bit field.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT16
-EFIAPI
-IoBitFieldWrite16 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT16                    Value
-  )
-{
-  return IoWrite16 (
-           Port,
-           BitFieldWrite16 (IoRead16 (Port), StartBit, EndBit, Value)
-           );
-}
-
-/**
-  Reads a bit field in a 16-bit port, performs a bitwise OR, and writes the
-  result back to the bit field in the 16-bit port.
-
-  Reads the 16-bit I/O port specified by Port, performs a bitwise OR
-  between the read result and the value specified by OrData, and writes the
-  result to the 16-bit I/O port specified by Port. The value written to the I/O
-  port is returned. This function must guarantee that all I/O read and write
-  operations are serialized. Extra left bits in OrData are stripped.
-
-  If 16-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 15, then ASSERT().
-  If EndBit is greater than 15, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Port      The I/O port to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..15.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..15.
-  @param  OrData    The value to OR with the read value from the I/O port.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT16
-EFIAPI
-IoBitFieldOr16 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT16                    OrData
-  )
-{
-  return IoWrite16 (
-           Port,
-           BitFieldOr16 (IoRead16 (Port), StartBit, EndBit, OrData)
-           );
-}
-
-/**
-  Reads a bit field in a 16-bit port, performs a bitwise AND, and writes the
-  result back to the bit field in the 16-bit port.
-
-  Reads the 16-bit I/O port specified by Port, performs a bitwise AND between
-  the read result and the value specified by AndData, and writes the result to
-  the 16-bit I/O port specified by Port. The value written to the I/O port is
-  returned. This function must guarantee that all I/O read and write operations
-  are serialized. Extra left bits in AndData are stripped.
-
-  If 16-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 15, then ASSERT().
-  If EndBit is greater than 15, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Port      The I/O port to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..15.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..15.
-  @param  AndData   The value to AND with the read value from the I/O port.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT16
-EFIAPI
-IoBitFieldAnd16 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT16                    AndData
-  )
-{
-  return IoWrite16 (
-           Port,
-           BitFieldAnd16 (IoRead16 (Port), StartBit, EndBit, AndData)
-           );
-}
-
-/**
-  Reads a bit field in a 16-bit port, performs a bitwise AND followed by a
-  bitwise OR, and writes the result back to the bit field in the
-  16-bit port.
-
-  Reads the 16-bit I/O port specified by Port, performs a bitwise AND followed
-  by a bitwise OR between the read result and the value specified by
-  AndData, and writes the result to the 16-bit I/O port specified by Port. The
-  value written to the I/O port is returned. This function must guarantee that
-  all I/O read and write operations are serialized. Extra left bits in both
-  AndData and OrData are stripped.
-
-  If 16-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 15, then ASSERT().
-  If EndBit is greater than 15, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Port      The I/O port to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..15.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..15.
-  @param  AndData   The value to AND with the read value from the I/O port.
-  @param  OrData    The value to OR with the result of the AND operation.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT16
-EFIAPI
-IoBitFieldAndThenOr16 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT16                    AndData,
-  IN      UINT16                    OrData
-  )
-{
-  return IoWrite16 (
-           Port,
-           BitFieldAndThenOr16 (IoRead16 (Port), StartBit, EndBit, AndData, OrData)
-           );
-}
-
-/**
-  Reads a 32-bit I/O port, performs a bitwise OR, and writes the
-  result back to the 32-bit I/O port.
-
-  Reads the 32-bit I/O port specified by Port, performs a bitwise OR
-  between the read result and the value specified by OrData, and writes the
-  result to the 32-bit I/O port specified by Port. The value written to the I/O
-  port 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 write.
-  @param  OrData  The value to OR with the read value from the I/O port.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT32
-EFIAPI
-IoOr32 (
-  IN      UINTN                     Port,
-  IN      UINT32                    OrData
-  )
-{
-  return IoWrite32 (Port, IoRead32 (Port) | OrData);
-}
-
-/**
-  Reads a 32-bit I/O port, performs a bitwise AND, and writes the result back
-  to the 32-bit I/O port.
-
-  Reads the 32-bit I/O port specified by Port, performs a bitwise AND between
-  the read result and the value specified by AndData, and writes the result to
-  the 32-bit I/O port specified by Port. The value written to the I/O port 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 write.
-  @param  AndData The value to AND with the read value from the I/O port.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT32
-EFIAPI
-IoAnd32 (
-  IN      UINTN                     Port,
-  IN      UINT32                    AndData
-  )
-{
-  return IoWrite32 (Port, IoRead32 (Port) & AndData);
-}
-
-/**
-  Reads a 32-bit I/O port, performs a bitwise AND followed by a bitwise
-  inclusive OR, and writes the result back to the 32-bit I/O port.
-
-  Reads the 32-bit I/O port specified by Port, performs a bitwise AND between
-  the read result and the value specified by AndData, performs a bitwise OR
-  between the result of the AND operation and the value specified by OrData,
-  and writes the result to the 32-bit I/O port specified by Port. The value
-  written to the I/O port 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 write.
-  @param  AndData The value to AND with the read value from the I/O port.
-  @param  OrData  The value to OR with the result of the AND operation.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT32
-EFIAPI
-IoAndThenOr32 (
-  IN      UINTN                     Port,
-  IN      UINT32                    AndData,
-  IN      UINT32                    OrData
-  )
-{
-  return IoWrite32 (Port, (IoRead32 (Port) & AndData) | OrData);
-}
-
-/**
-  Reads a bit field of an I/O register.
-
-  Reads the bit field in a 32-bit I/O register. The bit field is specified by
-  the StartBit and the EndBit. The value of the bit field is returned.
-
-  If 32-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 31, then ASSERT().
-  If EndBit is greater than 31, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-
-  @param  Port      The I/O port to read.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..31.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..31.
-
-  @return The value read.
-
-**/
-UINT32
-EFIAPI
-IoBitFieldRead32 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit
-  )
-{
-  return BitFieldRead32 (IoRead32 (Port), StartBit, EndBit);
-}
-
-/**
-  Writes a bit field to an I/O register.
-
-  Writes Value to the bit field of the I/O register. The bit field is specified
-  by the StartBit and the EndBit. All other bits in the destination I/O
-  register are preserved. The value written to the I/O port is returned. Extra
-  left bits in Value are stripped.
-
-  If 32-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 31, then ASSERT().
-  If EndBit is greater than 31, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Port      The I/O port to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..31.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..31.
-  @param  Value     New value of the bit field.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT32
-EFIAPI
-IoBitFieldWrite32 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT32                    Value
-  )
-{
-  return IoWrite32 (
-           Port,
-           BitFieldWrite32 (IoRead32 (Port), StartBit, EndBit, Value)
-           );
-}
-
-/**
-  Reads a bit field in a 32-bit port, performs a bitwise OR, and writes the
-  result back to the bit field in the 32-bit port.
-
-  Reads the 32-bit I/O port specified by Port, performs a bitwise OR
-  between the read result and the value specified by OrData, and writes the
-  result to the 32-bit I/O port specified by Port. The value written to the I/O
-  port is returned. This function must guarantee that all I/O read and write
-  operations are serialized. Extra left bits in OrData are stripped.
-
-  If 32-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 31, then ASSERT().
-  If EndBit is greater than 31, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Port      The I/O port to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..31.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..31.
-  @param  OrData    The value to OR with the read value from the I/O port.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT32
-EFIAPI
-IoBitFieldOr32 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT32                    OrData
-  )
-{
-  return IoWrite32 (
-           Port,
-           BitFieldOr32 (IoRead32 (Port), StartBit, EndBit, OrData)
-           );
-}
-
-/**
-  Reads a bit field in a 32-bit port, performs a bitwise AND, and writes the
-  result back to the bit field in the 32-bit port.
-
-  Reads the 32-bit I/O port specified by Port, performs a bitwise AND between
-  the read result and the value specified by AndData, and writes the result to
-  the 32-bit I/O port specified by Port. The value written to the I/O port is
-  returned. This function must guarantee that all I/O read and write operations
-  are serialized. Extra left bits in AndData are stripped.
-
-  If 32-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 31, then ASSERT().
-  If EndBit is greater than 31, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Port      The I/O port to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..31.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..31.
-  @param  AndData   The value to AND with the read value from the I/O port.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT32
-EFIAPI
-IoBitFieldAnd32 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT32                    AndData
-  )
-{
-  return IoWrite32 (
-           Port,
-           BitFieldAnd32 (IoRead32 (Port), StartBit, EndBit, AndData)
-           );
-}
-
-/**
-  Reads a bit field in a 32-bit port, performs a bitwise AND followed by a
-  bitwise OR, and writes the result back to the bit field in the
-  32-bit port.
-
-  Reads the 32-bit I/O port specified by Port, performs a bitwise AND followed
-  by a bitwise OR between the read result and the value specified by
-  AndData, and writes the result to the 32-bit I/O port specified by Port. The
-  value written to the I/O port is returned. This function must guarantee that
-  all I/O read and write operations are serialized. Extra left bits in both
-  AndData and OrData are stripped.
-
-  If 32-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 31, then ASSERT().
-  If EndBit is greater than 31, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Port      The I/O port to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..31.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..31.
-  @param  AndData   The value to AND with the read value from the I/O port.
-  @param  OrData    The value to OR with the result of the AND operation.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT32
-EFIAPI
-IoBitFieldAndThenOr32 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT32                    AndData,
-  IN      UINT32                    OrData
-  )
-{
-  return IoWrite32 (
-           Port,
-           BitFieldAndThenOr32 (IoRead32 (Port), StartBit, EndBit, AndData, OrData)
-           );
-}
-
-/**
-  Reads a 64-bit I/O port, performs a bitwise OR, and writes the
-  result back to the 64-bit I/O port.
-
-  Reads the 64-bit I/O port specified by Port, performs a bitwise OR
-  between the read result and the value specified by OrData, and writes the
-  result to the 64-bit I/O port specified by Port. The value written to the I/O
-  port 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().
-
-  @param  Port    The I/O port to write.
-  @param  OrData  The value to OR with the read value from the I/O port.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT64
-EFIAPI
-IoOr64 (
-  IN      UINTN                     Port,
-  IN      UINT64                    OrData
-  )
-{
-  return IoWrite64 (Port, IoRead64 (Port) | OrData);
-}
-
-/**
-  Reads a 64-bit I/O port, performs a bitwise AND, and writes the result back
-  to the 64-bit I/O port.
-
-  Reads the 64-bit I/O port specified by Port, performs a bitwise AND between
-  the read result and the value specified by AndData, and writes the result to
-  the 64-bit I/O port specified by Port. The value written to the I/O port 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().
-
-  @param  Port    The I/O port to write.
-  @param  AndData The value to AND with the read value from the I/O port.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT64
-EFIAPI
-IoAnd64 (
-  IN      UINTN                     Port,
-  IN      UINT64                    AndData
-  )
-{
-  return IoWrite64 (Port, IoRead64 (Port) & AndData);
-}
-
-/**
-  Reads a 64-bit I/O port, performs a bitwise AND followed by a bitwise
-  inclusive OR, and writes the result back to the 64-bit I/O port.
-
-  Reads the 64-bit I/O port specified by Port, performs a bitwise AND between
-  the read result and the value specified by AndData, performs a bitwise OR
-  between the result of the AND operation and the value specified by OrData,
-  and writes the result to the 64-bit I/O port specified by Port. The value
-  written to the I/O port 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().
-
-  @param  Port    The I/O port to write.
-  @param  AndData The value to AND with the read value from the I/O port.
-  @param  OrData  The value to OR with the result of the AND operation.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT64
-EFIAPI
-IoAndThenOr64 (
-  IN      UINTN                     Port,
-  IN      UINT64                    AndData,
-  IN      UINT64                    OrData
-  )
-{
-  return IoWrite64 (Port, (IoRead64 (Port) & AndData) | OrData);
-}
-
-/**
-  Reads a bit field of an I/O register.
-
-  Reads the bit field in a 64-bit I/O register. The bit field is specified by
-  the StartBit and the EndBit. The value of the bit field is returned.
-
-  If 64-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 63, then ASSERT().
-  If EndBit is greater than 63, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-
-  @param  Port      The I/O port to read.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..63.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..63.
-
-  @return The value read.
-
-**/
-UINT64
-EFIAPI
-IoBitFieldRead64 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit
-  )
-{
-  return BitFieldRead64 (IoRead64 (Port), StartBit, EndBit);
-}
-
-/**
-  Writes a bit field to an I/O register.
-
-  Writes Value to the bit field of the I/O register. The bit field is specified
-  by the StartBit and the EndBit. All other bits in the destination I/O
-  register are preserved. The value written to the I/O port is returned. Extra
-  left bits in Value are stripped.
-
-  If 64-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 63, then ASSERT().
-  If EndBit is greater than 63, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Port      The I/O port to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..63.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..63.
-  @param  Value     New value of the bit field.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT64
-EFIAPI
-IoBitFieldWrite64 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT64                    Value
-  )
-{
-  return IoWrite64 (
-           Port,
-           BitFieldWrite64 (IoRead64 (Port), StartBit, EndBit, Value)
-           );
-}
-
-/**
-  Reads a bit field in a 64-bit port, performs a bitwise OR, and writes the
-  result back to the bit field in the 64-bit port.
-
-  Reads the 64-bit I/O port specified by Port, performs a bitwise OR
-  between the read result and the value specified by OrData, and writes the
-  result to the 64-bit I/O port specified by Port. The value written to the I/O
-  port is returned. This function must guarantee that all I/O read and write
-  operations are serialized. Extra left bits in OrData are stripped.
-
-  If 64-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 63, then ASSERT().
-  If EndBit is greater than 63, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Port      The I/O port to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..63.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..63.
-  @param  OrData    The value to OR with the read value from the I/O port.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT64
-EFIAPI
-IoBitFieldOr64 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT64                    OrData
-  )
-{
-  return IoWrite64 (
-           Port,
-           BitFieldOr64 (IoRead64 (Port), StartBit, EndBit, OrData)
-           );
-}
-
-/**
-  Reads a bit field in a 64-bit port, performs a bitwise AND, and writes the
-  result back to the bit field in the 64-bit port.
-
-  Reads the 64-bit I/O port specified by Port, performs a bitwise AND between
-  the read result and the value specified by AndData, and writes the result to
-  the 64-bit I/O port specified by Port. The value written to the I/O port is
-  returned. This function must guarantee that all I/O read and write operations
-  are serialized. Extra left bits in AndData are stripped.
-
-  If 64-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 63, then ASSERT().
-  If EndBit is greater than 63, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Port      The I/O port to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..63.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..63.
-  @param  AndData   The value to AND with the read value from the I/O port.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT64
-EFIAPI
-IoBitFieldAnd64 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT64                    AndData
-  )
-{
-  return IoWrite64 (
-           Port,
-           BitFieldAnd64 (IoRead64 (Port), StartBit, EndBit, AndData)
-           );
-}
-
-/**
-  Reads a bit field in a 64-bit port, performs a bitwise AND followed by a
-  bitwise OR, and writes the result back to the bit field in the
-  64-bit port.
-
-  Reads the 64-bit I/O port specified by Port, performs a bitwise AND followed
-  by a bitwise OR between the read result and the value specified by
-  AndData, and writes the result to the 64-bit I/O port specified by Port. The
-  value written to the I/O port is returned. This function must guarantee that
-  all I/O read and write operations are serialized. Extra left bits in both
-  AndData and OrData are stripped.
-
-  If 64-bit I/O port operations are not supported, then ASSERT().
-  If StartBit is greater than 63, then ASSERT().
-  If EndBit is greater than 63, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Port      The I/O port to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..63.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..63.
-  @param  AndData   The value to AND with the read value from the I/O port.
-  @param  OrData    The value to OR with the result of the AND operation.
-
-  @return The value written back to the I/O port.
-
-**/
-UINT64
-EFIAPI
-IoBitFieldAndThenOr64 (
-  IN      UINTN                     Port,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT64                    AndData,
-  IN      UINT64                    OrData
-  )
-{
-  return IoWrite64 (
-           Port,
-           BitFieldAndThenOr64 (IoRead64 (Port), StartBit, EndBit, AndData, OrData)
-           );
-}
-
-/**
-  Reads an 8-bit MMIO register, performs a bitwise OR, and writes the
-  result back to the 8-bit MMIO register.
-
-  Reads the 8-bit MMIO register specified by Address, performs a bitwise
-  inclusive OR between the read result and the value specified by OrData, and
-  writes the result to the 8-bit MMIO register specified by Address. The value
-  written to the MMIO register 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 write.
-  @param  OrData  The value to OR with the read value from the MMIO register.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT8
-EFIAPI
-MmioOr8 (
-  IN      UINTN                     Address,
-  IN      UINT8                     OrData
-  )
-{
-  return MmioWrite8 (Address, (UINT8) (MmioRead8 (Address) | OrData));
-}
-
-/**
-  Reads an 8-bit MMIO register, performs a bitwise AND, and writes the result
-  back to the 8-bit MMIO register.
-
-  Reads the 8-bit MMIO register specified by Address, performs a bitwise AND
-  between the read result and the value specified by AndData, and writes the
-  result to the 8-bit MMIO register specified by Address. The value written to
-  the MMIO register 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 write.
-  @param  AndData The value to AND with the read value from the MMIO register.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT8
-EFIAPI
-MmioAnd8 (
-  IN      UINTN                     Address,
-  IN      UINT8                     AndData
-  )
-{
-  return MmioWrite8 (Address, (UINT8) (MmioRead8 (Address) & AndData));
-}
-
-/**
-  Reads an 8-bit MMIO register, performs a bitwise AND followed by a bitwise
-  inclusive OR, and writes the result back to the 8-bit MMIO register.
-
-  Reads the 8-bit MMIO register specified by Address, performs a bitwise AND
-  between the read result and the value specified by AndData, performs a
-  bitwise OR between the result of the AND operation and the value specified by
-  OrData, and writes the result to the 8-bit MMIO register specified by
-  Address. The value written to the MMIO register 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 write.
-  @param  AndData The value to AND with the read value from the MMIO register.
-  @param  OrData  The value to OR with the result of the AND operation.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT8
-EFIAPI
-MmioAndThenOr8 (
-  IN      UINTN                     Address,
-  IN      UINT8                     AndData,
-  IN      UINT8                     OrData
-  )
-{
-  return MmioWrite8 (Address, (UINT8) ((MmioRead8 (Address) & AndData) | OrData));
-}
-
-/**
-  Reads a bit field of a MMIO register.
-
-  Reads the bit field in an 8-bit MMIO register. The bit field is specified by
-  the StartBit and the EndBit. The value of the bit field is returned.
-
-  If 8-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 7, then ASSERT().
-  If EndBit is greater than 7, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-
-  @param  Address   MMIO register to read.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..7.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..7.
-
-  @return The value read.
-
-**/
-UINT8
-EFIAPI
-MmioBitFieldRead8 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit
-  )
-{
-  return BitFieldRead8 (MmioRead8 (Address), StartBit, EndBit);
-}
-
-/**
-  Writes a bit field to a MMIO register.
-
-  Writes Value to the bit field of the MMIO register. The bit field is
-  specified by the StartBit and the EndBit. All other bits in the destination
-  MMIO register are preserved. The new value of the 8-bit register is returned.
-
-  If 8-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 7, then ASSERT().
-  If EndBit is greater than 7, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Address   MMIO register to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..7.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..7.
-  @param  Value     New value of the bit field.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT8
-EFIAPI
-MmioBitFieldWrite8 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT8                     Value
-  )
-{
-  return MmioWrite8 (
-           Address,
-           BitFieldWrite8 (MmioRead8 (Address), StartBit, EndBit, Value)
-           );
-}
-
-/**
-  Reads a bit field in an 8-bit MMIO register, performs a bitwise OR, and
-  writes the result back to the bit field in the 8-bit MMIO register.
-
-  Reads the 8-bit MMIO register specified by Address, performs a bitwise
-  inclusive OR between the read result and the value specified by OrData, and
-  writes the result to the 8-bit MMIO register specified by Address. The value
-  written to the MMIO register is returned. This function must guarantee that
-  all MMIO read and write operations are serialized. Extra left bits in OrData
-  are stripped.
-
-  If 8-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 7, then ASSERT().
-  If EndBit is greater than 7, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Address   MMIO register to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..7.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..7.
-  @param  OrData    The value to OR with read value from the MMIO register.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT8
-EFIAPI
-MmioBitFieldOr8 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT8                     OrData
-  )
-{
-  return MmioWrite8 (
-           Address,
-           BitFieldOr8 (MmioRead8 (Address), StartBit, EndBit, OrData)
-           );
-}
-
-/**
-  Reads a bit field in an 8-bit MMIO register, performs a bitwise AND, and
-  writes the result back to the bit field in the 8-bit MMIO register.
-
-  Reads the 8-bit MMIO register specified by Address, performs a bitwise AND
-  between the read result and the value specified by AndData, and writes the
-  result to the 8-bit MMIO register specified by Address. The value written to
-  the MMIO register is returned. This function must guarantee that all MMIO
-  read and write operations are serialized. Extra left bits in AndData are
-  stripped.
-
-  If 8-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 7, then ASSERT().
-  If EndBit is greater than 7, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Address   MMIO register to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..7.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..7.
-  @param  AndData   The value to AND with read value from the MMIO register.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT8
-EFIAPI
-MmioBitFieldAnd8 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT8                     AndData
-  )
-{
-  return MmioWrite8 (
-           Address,
-           BitFieldAnd8 (MmioRead8 (Address), StartBit, EndBit, AndData)
-           );
-}
-
-/**
-  Reads a bit field in an 8-bit MMIO register, performs a bitwise AND followed
-  by a bitwise OR, and writes the result back to the bit field in the
-  8-bit MMIO register.
-
-  Reads the 8-bit MMIO register specified by Address, performs a bitwise AND
-  followed by a bitwise OR between the read result and the value
-  specified by AndData, and writes the result to the 8-bit MMIO register
-  specified by Address. The value written to the MMIO register is returned.
-  This function must guarantee that all MMIO read and write operations are
-  serialized. Extra left bits in both AndData and OrData are stripped.
-
-  If 8-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 7, then ASSERT().
-  If EndBit is greater than 7, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Address   MMIO register to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..7.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..7.
-  @param  AndData   The value to AND with read value from the MMIO register.
-  @param  OrData    The value to OR with the result of the AND operation.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT8
-EFIAPI
-MmioBitFieldAndThenOr8 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT8                     AndData,
-  IN      UINT8                     OrData
-  )
-{
-  return MmioWrite8 (
-           Address,
-           BitFieldAndThenOr8 (MmioRead8 (Address), StartBit, EndBit, AndData, OrData)
-           );
-}
-
-/**
-  Reads a 16-bit MMIO register, performs a bitwise OR, and writes the
-  result back to the 16-bit MMIO register.
-
-  Reads the 16-bit MMIO register specified by Address, performs a bitwise
-  inclusive OR between the read result and the value specified by OrData, and
-  writes the result to the 16-bit MMIO register specified by Address. The value
-  written to the MMIO register 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 write.
-  @param  OrData  The value to OR with the read value from the MMIO register.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT16
-EFIAPI
-MmioOr16 (
-  IN      UINTN                     Address,
-  IN      UINT16                    OrData
-  )
-{
-  return MmioWrite16 (Address, (UINT16) (MmioRead16 (Address) | OrData));
-}
-
-/**
-  Reads a 16-bit MMIO register, performs a bitwise AND, and writes the result
-  back to the 16-bit MMIO register.
-
-  Reads the 16-bit MMIO register specified by Address, performs a bitwise AND
-  between the read result and the value specified by AndData, and writes the
-  result to the 16-bit MMIO register specified by Address. The value written to
-  the MMIO register 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 write.
-  @param  AndData The value to AND with the read value from the MMIO register.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT16
-EFIAPI
-MmioAnd16 (
-  IN      UINTN                     Address,
-  IN      UINT16                    AndData
-  )
-{
-  return MmioWrite16 (Address, (UINT16) (MmioRead16 (Address) & AndData));
-}
-
-/**
-  Reads a 16-bit MMIO register, performs a bitwise AND followed by a bitwise
-  inclusive OR, and writes the result back to the 16-bit MMIO register.
-
-  Reads the 16-bit MMIO register specified by Address, performs a bitwise AND
-  between the read result and the value specified by AndData, performs a
-  bitwise OR between the result of the AND operation and the value specified by
-  OrData, and writes the result to the 16-bit MMIO register specified by
-  Address. The value written to the MMIO register 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 write.
-  @param  AndData The value to AND with the read value from the MMIO register.
-  @param  OrData  The value to OR with the result of the AND operation.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT16
-EFIAPI
-MmioAndThenOr16 (
-  IN      UINTN                     Address,
-  IN      UINT16                    AndData,
-  IN      UINT16                    OrData
-  )
-{
-  return MmioWrite16 (Address, (UINT16) ((MmioRead16 (Address) & AndData) | OrData));
-}
-
-/**
-  Reads a bit field of a MMIO register.
-
-  Reads the bit field in a 16-bit MMIO register. The bit field is specified by
-  the StartBit and the EndBit. The value of the bit field is returned.
-
-  If 16-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 15, then ASSERT().
-  If EndBit is greater than 15, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-
-  @param  Address   MMIO register to read.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..15.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..15.
-
-  @return The value read.
-
-**/
-UINT16
-EFIAPI
-MmioBitFieldRead16 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit
-  )
-{
-  return BitFieldRead16 (MmioRead16 (Address), StartBit, EndBit);
-}
-
-/**
-  Writes a bit field to a MMIO register.
-
-  Writes Value to the bit field of the MMIO register. The bit field is
-  specified by the StartBit and the EndBit. All other bits in the destination
-  MMIO register are preserved. The new value of the 16-bit register is returned.
-
-  If 16-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 15, then ASSERT().
-  If EndBit is greater than 15, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Address   MMIO register to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..15.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..15.
-  @param  Value     New value of the bit field.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT16
-EFIAPI
-MmioBitFieldWrite16 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT16                    Value
-  )
-{
-  return MmioWrite16 (
-           Address,
-           BitFieldWrite16 (MmioRead16 (Address), StartBit, EndBit, Value)
-           );
-}
-
-/**
-  Reads a bit field in a 16-bit MMIO register, performs a bitwise OR, and
-  writes the result back to the bit field in the 16-bit MMIO register.
-
-  Reads the 16-bit MMIO register specified by Address, performs a bitwise
-  inclusive OR between the read result and the value specified by OrData, and
-  writes the result to the 16-bit MMIO register specified by Address. The value
-  written to the MMIO register is returned. This function must guarantee that
-  all MMIO read and write operations are serialized. Extra left bits in OrData
-  are stripped.
-
-  If 16-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 15, then ASSERT().
-  If EndBit is greater than 15, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Address   MMIO register to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..15.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..15.
-  @param  OrData    The value to OR with read value from the MMIO register.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT16
-EFIAPI
-MmioBitFieldOr16 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT16                    OrData
-  )
-{
-  return MmioWrite16 (
-           Address,
-           BitFieldOr16 (MmioRead16 (Address), StartBit, EndBit, OrData)
-           );
-}
-
-/**
-  Reads a bit field in a 16-bit MMIO register, performs a bitwise AND, and
-  writes the result back to the bit field in the 16-bit MMIO register.
-
-  Reads the 16-bit MMIO register specified by Address, performs a bitwise AND
-  between the read result and the value specified by AndData, and writes the
-  result to the 16-bit MMIO register specified by Address. The value written to
-  the MMIO register is returned. This function must guarantee that all MMIO
-  read and write operations are serialized. Extra left bits in AndData are
-  stripped.
-
-  If 16-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 15, then ASSERT().
-  If EndBit is greater than 15, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Address   MMIO register to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..15.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..15.
-  @param  AndData   The value to AND with read value from the MMIO register.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT16
-EFIAPI
-MmioBitFieldAnd16 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT16                    AndData
-  )
-{
-  return MmioWrite16 (
-           Address,
-           BitFieldAnd16 (MmioRead16 (Address), StartBit, EndBit, AndData)
-           );
-}
-
-/**
-  Reads a bit field in a 16-bit MMIO register, performs a bitwise AND followed
-  by a bitwise OR, and writes the result back to the bit field in the
-  16-bit MMIO register.
-
-  Reads the 16-bit MMIO register specified by Address, performs a bitwise AND
-  followed by a bitwise OR between the read result and the value
-  specified by AndData, and writes the result to the 16-bit MMIO register
-  specified by Address. The value written to the MMIO register is returned.
-  This function must guarantee that all MMIO read and write operations are
-  serialized. Extra left bits in both AndData and OrData are stripped.
-
-  If 16-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 15, then ASSERT().
-  If EndBit is greater than 15, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Address   MMIO register to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..15.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..15.
-  @param  AndData   The value to AND with read value from the MMIO register.
-  @param  OrData    The value to OR with the result of the AND operation.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT16
-EFIAPI
-MmioBitFieldAndThenOr16 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT16                    AndData,
-  IN      UINT16                    OrData
-  )
-{
-  return MmioWrite16 (
-           Address,
-           BitFieldAndThenOr16 (MmioRead16 (Address), StartBit, EndBit, AndData, OrData)
-           );
-}
-
-/**
-  Reads a 32-bit MMIO register, performs a bitwise OR, and writes the
-  result back to the 32-bit MMIO register.
-
-  Reads the 32-bit MMIO register specified by Address, performs a bitwise
-  inclusive OR between the read result and the value specified by OrData, and
-  writes the result to the 32-bit MMIO register specified by Address. The value
-  written to the MMIO register 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 write.
-  @param  OrData  The value to OR with the read value from the MMIO register.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT32
-EFIAPI
-MmioOr32 (
-  IN      UINTN                     Address,
-  IN      UINT32                    OrData
-  )
-{
-  return MmioWrite32 (Address, MmioRead32 (Address) | OrData);
-}
-
-/**
-  Reads a 32-bit MMIO register, performs a bitwise AND, and writes the result
-  back to the 32-bit MMIO register.
-
-  Reads the 32-bit MMIO register specified by Address, performs a bitwise AND
-  between the read result and the value specified by AndData, and writes the
-  result to the 32-bit MMIO register specified by Address. The value written to
-  the MMIO register 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 write.
-  @param  AndData The value to AND with the read value from the MMIO register.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT32
-EFIAPI
-MmioAnd32 (
-  IN      UINTN                     Address,
-  IN      UINT32                    AndData
-  )
-{
-  return MmioWrite32 (Address, MmioRead32 (Address) & AndData);
-}
-
-/**
-  Reads a 32-bit MMIO register, performs a bitwise AND followed by a bitwise
-  inclusive OR, and writes the result back to the 32-bit MMIO register.
-
-  Reads the 32-bit MMIO register specified by Address, performs a bitwise AND
-  between the read result and the value specified by AndData, performs a
-  bitwise OR between the result of the AND operation and the value specified by
-  OrData, and writes the result to the 32-bit MMIO register specified by
-  Address. The value written to the MMIO register 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 write.
-  @param  AndData The value to AND with the read value from the MMIO register.
-  @param  OrData  The value to OR with the result of the AND operation.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT32
-EFIAPI
-MmioAndThenOr32 (
-  IN      UINTN                     Address,
-  IN      UINT32                    AndData,
-  IN      UINT32                    OrData
-  )
-{
-  return MmioWrite32 (Address, (MmioRead32 (Address) & AndData) | OrData);
-}
-
-/**
-  Reads a bit field of a MMIO register.
-
-  Reads the bit field in a 32-bit MMIO register. The bit field is specified by
-  the StartBit and the EndBit. The value of the bit field is returned.
-
-  If 32-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 31, then ASSERT().
-  If EndBit is greater than 31, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-
-  @param  Address   MMIO register to read.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..31.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..31.
-
-  @return The value read.
-
-**/
-UINT32
-EFIAPI
-MmioBitFieldRead32 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit
-  )
-{
-  return BitFieldRead32 (MmioRead32 (Address), StartBit, EndBit);
-}
-
-/**
-  Writes a bit field to a MMIO register.
-
-  Writes Value to the bit field of the MMIO register. The bit field is
-  specified by the StartBit and the EndBit. All other bits in the destination
-  MMIO register are preserved. The new value of the 32-bit register is returned.
-
-  If 32-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 31, then ASSERT().
-  If EndBit is greater than 31, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Address   MMIO register to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..31.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..31.
-  @param  Value     New value of the bit field.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT32
-EFIAPI
-MmioBitFieldWrite32 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT32                    Value
-  )
-{
-  return MmioWrite32 (
-           Address,
-           BitFieldWrite32 (MmioRead32 (Address), StartBit, EndBit, Value)
-           );
-}
-
-/**
-  Reads a bit field in a 32-bit MMIO register, performs a bitwise OR, and
-  writes the result back to the bit field in the 32-bit MMIO register.
-
-  Reads the 32-bit MMIO register specified by Address, performs a bitwise
-  inclusive OR between the read result and the value specified by OrData, and
-  writes the result to the 32-bit MMIO register specified by Address. The value
-  written to the MMIO register is returned. This function must guarantee that
-  all MMIO read and write operations are serialized. Extra left bits in OrData
-  are stripped.
-
-  If 32-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 31, then ASSERT().
-  If EndBit is greater than 31, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Address   MMIO register to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..31.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..31.
-  @param  OrData    The value to OR with read value from the MMIO register.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT32
-EFIAPI
-MmioBitFieldOr32 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT32                    OrData
-  )
-{
-  return MmioWrite32 (
-           Address,
-           BitFieldOr32 (MmioRead32 (Address), StartBit, EndBit, OrData)
-           );
-}
-
-/**
-  Reads a bit field in a 32-bit MMIO register, performs a bitwise AND, and
-  writes the result back to the bit field in the 32-bit MMIO register.
-
-  Reads the 32-bit MMIO register specified by Address, performs a bitwise AND
-  between the read result and the value specified by AndData, and writes the
-  result to the 32-bit MMIO register specified by Address. The value written to
-  the MMIO register is returned. This function must guarantee that all MMIO
-  read and write operations are serialized. Extra left bits in AndData are
-  stripped.
-
-  If 32-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 31, then ASSERT().
-  If EndBit is greater than 31, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Address   MMIO register to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..31.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..31.
-  @param  AndData   The value to AND with read value from the MMIO register.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT32
-EFIAPI
-MmioBitFieldAnd32 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT32                    AndData
-  )
-{
-  return MmioWrite32 (
-           Address,
-           BitFieldAnd32 (MmioRead32 (Address), StartBit, EndBit, AndData)
-           );
-}
-
-/**
-  Reads a bit field in a 32-bit MMIO register, performs a bitwise AND followed
-  by a bitwise OR, and writes the result back to the bit field in the
-  32-bit MMIO register.
-
-  Reads the 32-bit MMIO register specified by Address, performs a bitwise AND
-  followed by a bitwise OR between the read result and the value
-  specified by AndData, and writes the result to the 32-bit MMIO register
-  specified by Address. The value written to the MMIO register is returned.
-  This function must guarantee that all MMIO read and write operations are
-  serialized. Extra left bits in both AndData and OrData are stripped.
-
-  If 32-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 31, then ASSERT().
-  If EndBit is greater than 31, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Address   MMIO register to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..31.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..31.
-  @param  AndData   The value to AND with read value from the MMIO register.
-  @param  OrData    The value to OR with the result of the AND operation.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT32
-EFIAPI
-MmioBitFieldAndThenOr32 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT32                    AndData,
-  IN      UINT32                    OrData
-  )
-{
-  return MmioWrite32 (
-           Address,
-           BitFieldAndThenOr32 (MmioRead32 (Address), StartBit, EndBit, AndData, OrData)
-           );
-}
-
-/**
-  Reads a 64-bit MMIO register, performs a bitwise OR, and writes the
-  result back to the 64-bit MMIO register.
-
-  Reads the 64-bit MMIO register specified by Address, performs a bitwise
-  inclusive OR between the read result and the value specified by OrData, and
-  writes the result to the 64-bit MMIO register specified by Address. The value
-  written to the MMIO register 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 write.
-  @param  OrData  The value to OR with the read value from the MMIO register.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT64
-EFIAPI
-MmioOr64 (
-  IN      UINTN                     Address,
-  IN      UINT64                    OrData
-  )
-{
-  return MmioWrite64 (Address, MmioRead64 (Address) | OrData);
-}
-
-/**
-  Reads a 64-bit MMIO register, performs a bitwise AND, and writes the result
-  back to the 64-bit MMIO register.
-
-  Reads the 64-bit MMIO register specified by Address, performs a bitwise AND
-  between the read result and the value specified by AndData, and writes the
-  result to the 64-bit MMIO register specified by Address. The value written to
-  the MMIO register 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 write.
-  @param  AndData The value to AND with the read value from the MMIO register.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT64
-EFIAPI
-MmioAnd64 (
-  IN      UINTN                     Address,
-  IN      UINT64                    AndData
-  )
-{
-  return MmioWrite64 (Address, MmioRead64 (Address) & AndData);
-}
-
-/**
-  Reads a 64-bit MMIO register, performs a bitwise AND followed by a bitwise
-  inclusive OR, and writes the result back to the 64-bit MMIO register.
-
-  Reads the 64-bit MMIO register specified by Address, performs a bitwise AND
-  between the read result and the value specified by AndData, performs a
-  bitwise OR between the result of the AND operation and the value specified by
-  OrData, and writes the result to the 64-bit MMIO register specified by
-  Address. The value written to the MMIO register 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 write.
-  @param  AndData The value to AND with the read value from the MMIO register.
-  @param  OrData  The value to OR with the result of the AND operation.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT64
-EFIAPI
-MmioAndThenOr64 (
-  IN      UINTN                     Address,
-  IN      UINT64                    AndData,
-  IN      UINT64                    OrData
-  )
-{
-  return MmioWrite64 (Address, (MmioRead64 (Address) & AndData) | OrData);
-}
-
-/**
-  Reads a bit field of a MMIO register.
-
-  Reads the bit field in a 64-bit MMIO register. The bit field is specified by
-  the StartBit and the EndBit. The value of the bit field is returned.
-
-  If 64-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 63, then ASSERT().
-  If EndBit is greater than 63, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-
-  @param  Address   MMIO register to read.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..63.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..63.
-
-  @return The value read.
-
-**/
-UINT64
-EFIAPI
-MmioBitFieldRead64 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit
-  )
-{
-  return BitFieldRead64 (MmioRead64 (Address), StartBit, EndBit);
-}
-
-/**
-  Writes a bit field to a MMIO register.
-
-  Writes Value to the bit field of the MMIO register. The bit field is
-  specified by the StartBit and the EndBit. All other bits in the destination
-  MMIO register are preserved. The new value of the 64-bit register is returned.
-
-  If 64-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 63, then ASSERT().
-  If EndBit is greater than 63, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Address   MMIO register to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..63.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..63.
-  @param  Value     New value of the bit field.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT64
-EFIAPI
-MmioBitFieldWrite64 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT64                    Value
-  )
-{
-  return MmioWrite64 (
-           Address,
-           BitFieldWrite64 (MmioRead64 (Address), StartBit, EndBit, Value)
-           );
-}
-
-/**
-  Reads a bit field in a 64-bit MMIO register, performs a bitwise OR, and
-  writes the result back to the bit field in the 64-bit MMIO register.
-
-  Reads the 64-bit MMIO register specified by Address, performs a bitwise
-  inclusive OR between the read result and the value specified by OrData, and
-  writes the result to the 64-bit MMIO register specified by Address. The value
-  written to the MMIO register is returned. This function must guarantee that
-  all MMIO read and write operations are serialized. Extra left bits in OrData
-  are stripped.
-
-  If 64-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 63, then ASSERT().
-  If EndBit is greater than 63, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Address   MMIO register to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..63.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..63.
-  @param  OrData    The value to OR with read value from the MMIO register.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT64
-EFIAPI
-MmioBitFieldOr64 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT64                    OrData
-  )
-{
-  return MmioWrite64 (
-           Address,
-           BitFieldOr64 (MmioRead64 (Address), StartBit, EndBit, OrData)
-           );
-}
-
-/**
-  Reads a bit field in a 64-bit MMIO register, performs a bitwise AND, and
-  writes the result back to the bit field in the 64-bit MMIO register.
-
-  Reads the 64-bit MMIO register specified by Address, performs a bitwise AND
-  between the read result and the value specified by AndData, and writes the
-  result to the 64-bit MMIO register specified by Address. The value written to
-  the MMIO register is returned. This function must guarantee that all MMIO
-  read and write operations are serialized. Extra left bits in AndData are
-  stripped.
-
-  If 64-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 63, then ASSERT().
-  If EndBit is greater than 63, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Address   MMIO register to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..63.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..63.
-  @param  AndData   The value to AND with read value from the MMIO register.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT64
-EFIAPI
-MmioBitFieldAnd64 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT64                    AndData
-  )
-{
-  return MmioWrite64 (
-           Address,
-           BitFieldAnd64 (MmioRead64 (Address), StartBit, EndBit, AndData)
-           );
-}
-
-/**
-  Reads a bit field in a 64-bit MMIO register, performs a bitwise AND followed
-  by a bitwise OR, and writes the result back to the bit field in the
-  64-bit MMIO register.
-
-  Reads the 64-bit MMIO register specified by Address, performs a bitwise AND
-  followed by a bitwise OR between the read result and the value
-  specified by AndData, and writes the result to the 64-bit MMIO register
-  specified by Address. The value written to the MMIO register is returned.
-  This function must guarantee that all MMIO read and write operations are
-  serialized. Extra left bits in both AndData and OrData are stripped.
-
-  If 64-bit MMIO register operations are not supported, then ASSERT().
-  If StartBit is greater than 63, then ASSERT().
-  If EndBit is greater than 63, then ASSERT().
-  If EndBit is less than StartBit, then ASSERT().
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
-
-  @param  Address   MMIO register to write.
-  @param  StartBit  The ordinal of the least significant bit in the bit field.
-                    Range 0..63.
-  @param  EndBit    The ordinal of the most significant bit in the bit field.
-                    Range 0..63.
-  @param  AndData   The value to AND with read value from the MMIO register.
-  @param  OrData    The value to OR with the result of the AND operation.
-
-  @return The value written back to the MMIO register.
-
-**/
-UINT64
-EFIAPI
-MmioBitFieldAndThenOr64 (
-  IN      UINTN                     Address,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT64                    AndData,
-  IN      UINT64                    OrData
-  )
-{
-  return MmioWrite64 (
-           Address,
-           BitFieldAndThenOr64 (MmioRead64 (Address), StartBit, EndBit, AndData, OrData)
-           );
-}
diff --git a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoLib.c b/IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoLib.c
deleted file mode 100644
index eadc5e5681..0000000000
--- a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoLib.c
+++ /dev/null
@@ -1,870 +0,0 @@
-/** @file
-  I/O Library.
-  The implementation of I/O operation for this library instance
-  are based on EFI_CPU_IO_PROTOCOL.
-
-  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
-  Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
-
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-  Module Name:  IoLib.c
-
-**/
-
-
-#include "DxeCpuIoLibInternal.h"
-
-//
-// Globle varible to cache pointer to CpuIo protocol.
-//
-EFI_CPU_IO_PROTOCOL  *mCpuIo = NULL;
-
-/**
-  The constructor function caches the pointer to CpuIo protocol.
-
-  The constructor function locates CpuIo protocol from protocol database.
-  It will ASSERT() if that operation fails and it will always return EFI_SUCCESS.
-
-  @param  ImageHandle   The firmware allocated handle for the EFI image.
-  @param  SystemTable   A pointer to the EFI System Table.
-
-  @retval EFI_SUCCESS   The constructor always returns EFI_SUCCESS.
-
-**/
-EFI_STATUS
-EFIAPI
-IoLibConstructor (
-  IN      EFI_HANDLE                ImageHandle,
-  IN      EFI_SYSTEM_TABLE          *SystemTable
-  )
-{
-  EFI_STATUS  Status;
-
-  Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, (VOID **) &mCpuIo);
-  ASSERT_EFI_ERROR (Status);
-
-  return Status;
-}
-
-/**
-  Reads registers in the EFI CPU I/O space.
-
-  Reads the I/O port specified by Port with registers width specified by Width.
-  The read value is returned. If such operations are not supported, then ASSERT().
-  This function must guarantee that all I/O read and write operations are serialized.
-
-  @param  Port          The base address of the I/O operation.
-                        The caller is responsible for aligning the Address if required.
-  @param  Width         The width of the I/O operation.
-
-  @return Data read from registers in the EFI CPU I/O space.
-
-**/
-UINT64
-EFIAPI
-IoReadWorker (
-  IN      UINTN                      Port,
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width
-  )
-{
-  EFI_STATUS                        Status;
-  UINT64                            Data;
-
-  Status = mCpuIo->Io.Read (mCpuIo, Width, Port, 1, &Data);
-  ASSERT_EFI_ERROR (Status);
-
-  return Data;
-}
-
-/**
-  Writes registers in the EFI CPU I/O space.
-
-  Writes the I/O port specified by Port with registers width and value specified by Width
-  and Data respectively.  Data is returned. If such operations are not supported, then ASSERT().
-  This function must guarantee that all I/O read and write operations are serialized.
-
-  @param  Port          The base address of the I/O operation.
-                        The caller is responsible for aligning the Address if required.
-  @param  Width         The width of the I/O operation.
-  @param  Data          The value to write to the I/O port.
-
-  @return The parameter of Data.
-
-**/
-UINT64
-EFIAPI
-IoWriteWorker (
-  IN      UINTN                      Port,
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width,
-  IN      UINT64                     Data
-  )
-{
-  EFI_STATUS  Status;
-
-  Status = mCpuIo->Io.Write (mCpuIo, Width, Port, 1, &Data);
-  ASSERT_EFI_ERROR (Status);
-
-  return Data;
-}
-
-/**
-  Reads registers in the EFI CPU I/O space.
-
-  Reads the I/O port specified by Port with registers width specified by Width.
-  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 such operations are not supported, then ASSERT().
-
-  @param  Port          The base address of the I/O operation.
-                        The caller is responsible for aligning the Address if required.
-  @param  Width         The width of the I/O operation.
-  @param  Count         The number of times to read I/O port.
-  @param  Buffer        The buffer to store the read data into.
-
-**/
-VOID
-EFIAPI
-IoReadFifoWorker (
-  IN      UINTN                      Port,
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width,
-  IN      UINTN                      Count,
-  IN      VOID                       *Buffer
-  )
-{
-  EFI_STATUS  Status;
-
-  Status = mCpuIo->Io.Read (mCpuIo, Width, Port, Count, Buffer);
-  ASSERT_EFI_ERROR (Status);
-}
-
-/**
-  Writes registers in the EFI CPU I/O space.
-
-  Writes the I/O port specified by Port with registers width specified by Width.
-  The port is written Count times, and the write data is retrieved from the provided Buffer.
-
-  This function must guarantee that all I/O read and write operations are serialized.
-  If such operations are not supported, then ASSERT().
-
-  @param  Port          The base address of the I/O operation.
-                        The caller is responsible for aligning the Address if required.
-  @param  Width         The width of the I/O operation.
-  @param  Count         The number of times to write I/O port.
-  @param  Buffer        The buffer to store the read data into.
-
-**/
-VOID
-EFIAPI
-IoWriteFifoWorker (
-  IN      UINTN                      Port,
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width,
-  IN      UINTN                      Count,
-  IN      VOID                       *Buffer
-  )
-{
-  EFI_STATUS  Status;
-
-  Status = mCpuIo->Io.Write (mCpuIo, Width, Port, Count, Buffer);
-  ASSERT_EFI_ERROR (Status);
-}
-
-/**
-  Reads memory-mapped registers in the EFI system memory space.
-
-  Reads the MMIO registers specified by Address with registers width specified by Width.
-  The read value is returned. If such operations are not supported, then ASSERT().
-  This function must guarantee that all MMIO read and write operations are serialized.
-
-  @param  Address       The MMIO register to read.
-                        The caller is responsible for aligning the Address if required.
-  @param  Width         The width of the I/O operation.
-
-  @return Data read from registers in the EFI system memory space.
-
-**/
-UINT64
-EFIAPI
-MmioReadWorker (
-  IN      UINTN                      Address,
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width
-  )
-{
-  EFI_STATUS  Status;
-  UINT64      Data;
-
-  Status = mCpuIo->Mem.Read (mCpuIo, Width, Address, 1, &Data);
-  ASSERT_EFI_ERROR (Status);
-
-  return Data;
-}
-
-/**
-  Writes memory-mapped registers in the EFI system memory space.
-
-  Writes the MMIO registers specified by Address with registers width and value specified by Width
-  and Data respectively. Data is returned. If such operations are not supported, then ASSERT().
-  This function must guarantee that all MMIO read and write operations are serialized.
-
-  @param  Address       The MMIO register to read.
-                        The caller is responsible for aligning the Address if required.
-  @param  Width         The width of the I/O operation.
-  @param  Data          The value to write to the I/O port.
-
-  @return Data read from registers in the EFI system memory space.
-
-**/
-UINT64
-EFIAPI
-MmioWriteWorker (
-  IN      UINTN                      Address,
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width,
-  IN      UINT64                     Data
-  )
-{
-  EFI_STATUS  Status;
-
-  Status = mCpuIo->Mem.Write (mCpuIo, Width, Address, 1, &Data);
-  ASSERT_EFI_ERROR (Status);
-
-  return Data;
-}
-
-/**
-  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
-  )
-{
-  return (UINT8)IoReadWorker (Port, EfiCpuIoWidthUint8);
-}
-
-/**
-  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
-  )
-{
-  return (UINT8)IoWriteWorker (Port, EfiCpuIoWidthUint8, 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 Port is not aligned on a 16-bit boundary, then ASSERT().
-
-  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
-  )
-{
-  //
-  // Make sure Port is aligned on a 16-bit boundary.
-  //
-  ASSERT ((Port & 1) == 0);
-  return (UINT16)IoReadWorker (Port, EfiCpuIoWidthUint16);
-}
-
-/**
-  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 Port is not aligned on a 16-bit boundary, then ASSERT().
-
-  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
-  )
-{
-  //
-  // Make sure Port is aligned on a 16-bit boundary.
-  //
-  ASSERT ((Port & 1) == 0);
-  return (UINT16)IoWriteWorker (Port, EfiCpuIoWidthUint16, 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 Port is not aligned on a 32-bit boundary, then ASSERT().
-
-  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
-  )
-{
-  //
-  // Make sure Port is aligned on a 32-bit boundary.
-  //
-  ASSERT ((Port & 3) == 0);
-  return (UINT32)IoReadWorker (Port, EfiCpuIoWidthUint32);
-}
-
-/**
-  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 Port is not aligned on a 32-bit boundary, then ASSERT().
-
-  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
-  )
-{
-  //
-  // Make sure Port is aligned on a 32-bit boundary.
-  //
-  ASSERT ((Port & 3) == 0);
-  return (UINT32)IoWriteWorker (Port, EfiCpuIoWidthUint32, 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 Port is not aligned on a 64-bit boundary, then ASSERT().
-
-  If 64-bit I/O port operations are not supported, then ASSERT().
-
-  @param  Port  The I/O port to read.
-
-  @return The value read.
-
-**/
-UINT64
-EFIAPI
-IoRead64 (
-  IN      UINTN                     Port
-  )
-{
-  //
-  // Make sure Port is aligned on a 64-bit boundary.
-  //
-  ASSERT ((Port & 7) == 0);
-  return IoReadWorker (Port, EfiCpuIoWidthUint64);
-}
-
-/**
-  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 Port is not aligned on a 64-bit boundary, then ASSERT().
-
-  If 64-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.
-
-**/
-UINT64
-EFIAPI
-IoWrite64 (
-  IN      UINTN                     Port,
-  IN      UINT64                    Value
-  )
-{
-  //
-  // Make sure Port is aligned on a 64-bit boundary.
-  //
-  ASSERT ((Port & 7) == 0);
-  return IoWriteWorker (Port, EfiCpuIoWidthUint64, Value);
-}
-
-/**
-  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
-  )
-{
-  IoReadFifoWorker (Port, EfiCpuIoWidthFifoUint8, Count, Buffer);
-}
-
-/**
-  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
-  )
-{
-  IoWriteFifoWorker (Port, EfiCpuIoWidthFifoUint8, Count, Buffer);
-}
-
-/**
-  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
-  )
-{
-  //
-  // Make sure Port is aligned on a 16-bit boundary.
-  //
-  ASSERT ((Port & 1) == 0);
-  IoReadFifoWorker (Port, EfiCpuIoWidthFifoUint16, Count, Buffer);
-}
-
-/**
-  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
-  )
-{
-  //
-  // Make sure Port is aligned on a 16-bit boundary.
-  //
-  ASSERT ((Port & 1) == 0);
-  IoWriteFifoWorker (Port, EfiCpuIoWidthFifoUint16, Count, Buffer);
-}
-
-/**
-  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
-  )
-{
-  //
-  // Make sure Port is aligned on a 32-bit boundary.
-  //
-  ASSERT ((Port & 3) == 0);
-  IoReadFifoWorker (Port, EfiCpuIoWidthFifoUint32, Count, Buffer);
-}
-
-/**
-  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
-  )
-{
-  //
-  // Make sure Port is aligned on a 32-bit boundary.
-  //
-  ASSERT ((Port & 3) == 0);
-  IoWriteFifoWorker (Port, EfiCpuIoWidthFifoUint32, Count, Buffer);
-}
-
-/**
-  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
-  )
-{
-  return (UINT8)MmioReadWorker (Address, EfiCpuIoWidthUint8);
-}
-
-/**
-  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
-  )
-{
-  return (UINT8)MmioWriteWorker (Address, EfiCpuIoWidthUint8, 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 Address is not aligned on a 16-bit boundary, then ASSERT().
-
-  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
-  )
-{
-  //
-  // Make sure Address is aligned on a 16-bit boundary.
-  //
-  ASSERT ((Address & 1) == 0);
-  return (UINT16)MmioReadWorker (Address, EfiCpuIoWidthUint16);
-}
-
-/**
-  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 Address is not aligned on a 16-bit boundary, then ASSERT().
-
-  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
-  )
-{
-  //
-  // Make sure Address is aligned on a 16-bit boundary.
-  //
-  ASSERT ((Address & 1) == 0);
-  return (UINT16)MmioWriteWorker (Address, EfiCpuIoWidthUint16, 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 Address is not aligned on a 32-bit boundary, then ASSERT().
-
-  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
-  )
-{
-  //
-  // Make sure Address is aligned on a 32-bit boundary.
-  //
-  ASSERT ((Address & 3) == 0);
-  return (UINT32)MmioReadWorker (Address, EfiCpuIoWidthUint32);
-}
-
-/**
-  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 Address is not aligned on a 32-bit boundary, then ASSERT().
-
-  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
-  )
-{
-  //
-  // Make sure Address is aligned on a 32-bit boundary.
-  //
-  ASSERT ((Address & 3) == 0);
-  return (UINT32)MmioWriteWorker (Address, EfiCpuIoWidthUint32, 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 Address is not aligned on a 64-bit boundary, then ASSERT().
-
-  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
-  )
-{
-  //
-  // Make sure Address is aligned on a 64-bit boundary.
-  //
-  ASSERT ((Address & 7) == 0);
-  return (UINT64)MmioReadWorker (Address, EfiCpuIoWidthUint64);
-}
-
-/**
-  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 Address is not aligned on a 64-bit boundary, then ASSERT().
-
-  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
-  )
-{
-  //
-  // Make sure Address is aligned on a 64-bit boundary.
-  //
-  ASSERT ((Address & 7) == 0);
-  return (UINT64)MmioWriteWorker (Address, EfiCpuIoWidthUint64, Value);
-}
diff --git a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoLibMmioBuffer.c b/IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoLibMmioBuffer.c
deleted file mode 100644
index 7bd641b6c6..0000000000
--- a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoLibMmioBuffer.c
+++ /dev/null
@@ -1,416 +0,0 @@
-/** @file
-  I/O Library MMIO Buffer Functions.
-
-  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-  Module Name:  IoLibMmioBuffer.c
-
-**/
-
-
-#include "DxeCpuIoLibInternal.h"
-
-/**
-  Copy data from MMIO region to system memory by using 8-bit access.
-
-  Copy data from MMIO region specified by starting address StartAddress
-  to system memory specified by Buffer by using 8-bit access. The total
-  number of byte to be copied is specified by Length. Buffer is returned.
-
-  If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT().
-  If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
-
-
-  @param  StartAddress    Starting address for the MMIO region to be copied from.
-  @param  Length          Size in bytes of the copy.
-  @param  Buffer          Pointer to a system memory buffer receiving the data read.
-
-  @return Buffer
-
-**/
-UINT8 *
-EFIAPI
-MmioReadBuffer8 (
-  IN  UINTN       StartAddress,
-  IN  UINTN       Length,
-  OUT UINT8       *Buffer
-  )
-{
-  UINT8   *ReturnBuffer;
-
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - StartAddress));
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - (UINTN) Buffer));
-
-  ReturnBuffer = Buffer;
-
-  while (Length-- > 0) {
-    *(Buffer++) = MmioRead8 (StartAddress++);
-  }
-
-  return ReturnBuffer;
-}
-
-/**
-  Copy data from MMIO region to system memory by using 16-bit access.
-
-  Copy data from MMIO region specified by starting address StartAddress
-  to system memory specified by Buffer by using 16-bit access. The total
-  number of byte to be copied is specified by Length. Buffer is returned.
-
-  If StartAddress is not aligned on a 16-bit boundary, then ASSERT().
-
-  If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT().
-  If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
-
-  If Length is not aligned on a 16-bit boundary, then ASSERT().
-
-  If Buffer is not aligned on a 16-bit boundary, then ASSERT().
-
-  @param  StartAddress    Starting address for the MMIO region to be copied from.
-  @param  Length          Size in bytes of the copy.
-  @param  Buffer          Pointer to a system memory buffer receiving the data read.
-
-  @return Buffer
-
-**/
-UINT16 *
-EFIAPI
-MmioReadBuffer16 (
-  IN  UINTN       StartAddress,
-  IN  UINTN       Length,
-  OUT UINT16      *Buffer
-  )
-{
-  UINT16    *ReturnBuffer;
-
-  ASSERT ((StartAddress & (sizeof (UINT16) - 1)) == 0);
-
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - StartAddress));
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - (UINTN) Buffer));
-
-  ASSERT ((Length & (sizeof (UINT16) - 1)) == 0);
-  ASSERT (((UINTN) Buffer & (sizeof (UINT16) - 1)) == 0);
-
-  ReturnBuffer = Buffer;
-
-  while (Length > 0) {
-    *(Buffer++) = MmioRead16 (StartAddress);
-    StartAddress += sizeof (UINT16);
-    Length -= sizeof (UINT16);
-  }
-
-  return ReturnBuffer;
-}
-
-/**
-  Copy data from MMIO region to system memory by using 32-bit access.
-
-  Copy data from MMIO region specified by starting address StartAddress
-  to system memory specified by Buffer by using 32-bit access. The total
-  number of byte to be copied is specified by Length. Buffer is returned.
-
-  If StartAddress is not aligned on a 32-bit boundary, then ASSERT().
-
-  If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT().
-  If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
-
-  If Length is not aligned on a 32-bit boundary, then ASSERT().
-  If Buffer is not aligned on a 32-bit boundary, then ASSERT().
-
-  @param  StartAddress    Starting address for the MMIO region to be copied from.
-  @param  Length          Size in bytes of the copy.
-  @param  Buffer          Pointer to a system memory buffer receiving the data read.
-
-  @return Buffer
-
-**/
-UINT32 *
-EFIAPI
-MmioReadBuffer32 (
-  IN  UINTN       StartAddress,
-  IN  UINTN       Length,
-  OUT UINT32      *Buffer
-  )
-{
-  UINT32    *ReturnBuffer;
-
-  ASSERT ((StartAddress & (sizeof (UINT32) - 1)) == 0);
-
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - StartAddress));
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - (UINTN) Buffer));
-
-  ASSERT ((Length & (sizeof (UINT32) - 1)) == 0);
-  ASSERT (((UINTN) Buffer & (sizeof (UINT32) - 1)) == 0);
-
-  ReturnBuffer = Buffer;
-
-  while (Length > 0) {
-    *(Buffer++) = MmioRead32 (StartAddress);
-    StartAddress += sizeof (UINT32);
-    Length -= sizeof (UINT32);
-  }
-
-  return ReturnBuffer;
-}
-
-/**
-  Copy data from MMIO region to system memory by using 64-bit access.
-
-  Copy data from MMIO region specified by starting address StartAddress
-  to system memory specified by Buffer by using 64-bit access. The total
-  number of byte to be copied is specified by Length. Buffer is returned.
-
-  If StartAddress is not aligned on a 64-bit boundary, then ASSERT().
-
-  If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT().
-  If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
-
-  If Length is not aligned on a 64-bit boundary, then ASSERT().
-
-  If Buffer is not aligned on a 64-bit boundary, then ASSERT().
-
-  @param  StartAddress    Starting address for the MMIO region to be copied from.
-  @param  Length          Size in bytes of the copy.
-  @param  Buffer          Pointer to a system memory buffer receiving the data read.
-
-  @return Buffer
-
-**/
-UINT64 *
-EFIAPI
-MmioReadBuffer64 (
-  IN  UINTN       StartAddress,
-  IN  UINTN       Length,
-  OUT UINT64      *Buffer
-  )
-{
-  UINT64    *ReturnBuffer;
-
-  ASSERT ((StartAddress & (sizeof (UINT64) - 1)) == 0);
-
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - StartAddress));
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - (UINTN) Buffer));
-
-  ASSERT ((Length & (sizeof (UINT64) - 1)) == 0);
-  ASSERT (((UINTN) Buffer & (sizeof (UINT64) - 1)) == 0);
-
-  ReturnBuffer = Buffer;
-
-  while (Length > 0) {
-    *(Buffer++) = MmioRead64 (StartAddress);
-    StartAddress += sizeof (UINT64);
-    Length -= sizeof (UINT64);
-  }
-
-  return ReturnBuffer;
-}
-
-
-/**
-  Copy data from system memory to MMIO region by using 8-bit access.
-
-  Copy data from system memory specified by Buffer to MMIO region specified
-  by starting address StartAddress by using 8-bit access. The total number
-  of byte to be copied is specified by Length. Buffer is returned.
-
-  If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT().
-  If Length is greater than (MAX_ADDRESS -Buffer + 1), then ASSERT().
-
-
-  @param  StartAddress    Starting address for the MMIO region to be copied to.
-  @param  Length     Size in bytes of the copy.
-  @param  Buffer          Pointer to a system memory buffer containing the data to write.
-
-  @return Buffer
-
-**/
-UINT8 *
-EFIAPI
-MmioWriteBuffer8 (
-  IN  UINTN         StartAddress,
-  IN  UINTN         Length,
-  IN  CONST UINT8   *Buffer
-  )
-{
-  VOID* ReturnBuffer;
-
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - StartAddress));
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - (UINTN) Buffer));
-
-  ReturnBuffer = (UINT8 *) Buffer;
-
-  while (Length-- > 0) {
-     MmioWrite8 (StartAddress++, *(Buffer++));
-  }
-
-  return ReturnBuffer;
-
-}
-
-/**
-  Copy data from system memory to MMIO region by using 16-bit access.
-
-  Copy data from system memory specified by Buffer to MMIO region specified
-  by starting address StartAddress by using 16-bit access. The total number
-  of byte to be copied is specified by Length. Buffer is returned.
-
-  If StartAddress is not aligned on a 16-bit boundary, then ASSERT().
-
-  If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT().
-  If Length is greater than (MAX_ADDRESS -Buffer + 1), then ASSERT().
-
-  If Length is not aligned on a 16-bit boundary, then ASSERT().
-
-  If Buffer is not aligned on a 16-bit boundary, then ASSERT().
-
-  @param  StartAddress    Starting address for the MMIO region to be copied to.
-  @param  Length     Size in bytes of the copy.
-  @param  Buffer          Pointer to a system memory buffer containing the data to write.
-
-  @return Buffer
-
-**/
-UINT16 *
-EFIAPI
-MmioWriteBuffer16 (
-  IN  UINTN        StartAddress,
-  IN  UINTN        Length,
-  IN  CONST UINT16 *Buffer
-  )
-{
-  UINT16    *ReturnBuffer;
-
-  ASSERT ((StartAddress & (sizeof (UINT16) - 1)) == 0);
-
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - StartAddress));
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - (UINTN) Buffer));
-
-  ASSERT ((Length & (sizeof (UINT16) - 1)) == 0);
-  ASSERT (((UINTN) Buffer & (sizeof (UINT16) - 1)) == 0);
-
-  ReturnBuffer = (UINT16 *) Buffer;
-
-  while (Length > 0) {
-    MmioWrite16 (StartAddress, *(Buffer++));
-
-    StartAddress += sizeof (UINT16);
-    Length -= sizeof (UINT16);
-  }
-
-  return ReturnBuffer;
-}
-
-
-/**
-  Copy data from system memory to MMIO region by using 32-bit access.
-
-  Copy data from system memory specified by Buffer to MMIO region specified
-  by starting address StartAddress by using 32-bit access. The total number
-  of byte to be copied is specified by Length. Buffer is returned.
-
-  If StartAddress is not aligned on a 32-bit boundary, then ASSERT().
-
-  If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT().
-  If Length is greater than (MAX_ADDRESS -Buffer + 1), then ASSERT().
-
-  If Length is not aligned on a 32-bit boundary, then ASSERT().
-
-  If Buffer is not aligned on a 32-bit boundary, then ASSERT().
-
-  @param  StartAddress    Starting address for the MMIO region to be copied to.
-  @param  Length     Size in bytes of the copy.
-  @param  Buffer          Pointer to a system memory buffer containing the data to write.
-
-  @return Buffer
-
-**/
-UINT32 *
-EFIAPI
-MmioWriteBuffer32 (
-  IN  UINTN        StartAddress,
-  IN  UINTN        Length,
-  IN  CONST UINT32 *Buffer
-  )
-{
-  UINT32    *ReturnBuffer;
-
-  ASSERT ((StartAddress & (sizeof (UINT32) - 1)) == 0);
-
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - StartAddress));
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - (UINTN) Buffer));
-
-  ASSERT ((Length & (sizeof (UINT32) - 1)) == 0);
-  ASSERT (((UINTN) Buffer & (sizeof (UINT32) - 1)) == 0);
-
-  ReturnBuffer = (UINT32 *) Buffer;
-
-  while (Length > 0) {
-    MmioWrite32 (StartAddress, *(Buffer++));
-
-    StartAddress += sizeof (UINT32);
-    Length -= sizeof (UINT32);
-  }
-
-  return ReturnBuffer;
-}
-
-/**
-  Copy data from system memory to MMIO region by using 64-bit access.
-
-  Copy data from system memory specified by Buffer to MMIO region specified
-  by starting address StartAddress by using 64-bit access. The total number
-  of byte to be copied is specified by Length. Buffer is returned.
-
-  If StartAddress is not aligned on a 64-bit boundary, then ASSERT().
-
-  If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT().
-  If Length is greater than (MAX_ADDRESS -Buffer + 1), then ASSERT().
-
-  If Length is not aligned on a 64-bit boundary, then ASSERT().
-
-  If Buffer is not aligned on a 64-bit boundary, then ASSERT().
-
-  @param  StartAddress    Starting address for the MMIO region to be copied to.
-  @param  Length     Size in bytes of the copy.
-  @param  Buffer          Pointer to a system memory buffer containing the data to write.
-
-  @return Buffer
-
-**/
-UINT64 *
-EFIAPI
-MmioWriteBuffer64 (
-  IN  UINTN        StartAddress,
-  IN  UINTN        Length,
-  IN  CONST UINT64 *Buffer
-  )
-{
-  UINT64    *ReturnBuffer;
-
-  ASSERT ((StartAddress & (sizeof (UINT64) - 1)) == 0);
-
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - StartAddress));
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - (UINTN) Buffer));
-
-  ASSERT ((Length & (sizeof (UINT64) - 1)) == 0);
-  ASSERT (((UINTN) Buffer & (sizeof (UINT64) - 1)) == 0);
-
-  ReturnBuffer = (UINT64 *) Buffer;
-
-  while (Length > 0) {
-    MmioWrite64 (StartAddress, *(Buffer++));
-
-    StartAddress += sizeof (UINT64);
-    Length -= sizeof (UINT64);
-  }
-
-  return ReturnBuffer;
-}
-
-- 
2.18.0.windows.1



  reply	other threads:[~2018-11-13  8:35 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-13  8:35 [PATCH 0/8] IntelFrameworkPkg: Remove unused library instances Shenglei Zhang
2018-11-13  8:35 ` Shenglei Zhang [this message]
2018-11-13  8:35 ` [PATCH 2/8] IntelFrameworkPkg/Library: Remove DxeSmmDriverEntryPoint Shenglei Zhang
2018-11-13  8:35 ` [PATCH 3/8] IntelFrameworkPkg/FrameworkUefiLib: Remove FrameworkUefiLib Shenglei Zhang
2018-11-13  8:35 ` [PATCH 4/8] IntelFrameworkPkg/PeiHobLibFramework: Remove PeiHobLibFramework Shenglei Zhang
2018-11-13  8:35 ` [PATCH 5/8] IntelFrameworkPkg/PeiSmbusLibSmbusPpi: Remove PeiSmbusLibSmbusPpi Shenglei Zhang
2018-11-13  8:35 ` [PATCH 6/8] IntelFrameworkPkg: Remove the redundant INFs Shenglei Zhang
2018-11-14  3:12   ` Ni, Ruiyu
2018-11-14  3:32     ` Zhang, Shenglei
2018-11-14  5:18       ` Kinney, Michael D
2018-11-19  5:15         ` Gao, Liming
2018-11-19 20:05           ` Kinney, Michael D
2018-11-13  8:35 ` [PATCH 7/8] MdePkg: Remove DxeIoLibCpuIo in comments Shenglei Zhang
2018-11-13  8:35 ` [PATCH 8/8] Vlv2TbltDevicePkg: Remove DxeSmmDriverEntryPoint in DSCs Shenglei Zhang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181113083518.6824-2-shenglei.zhang@intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox