Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MdePkg/BaseIoLibIntrinsic: Add EBC support
The EBC instruction set supports memory and MMIO access, but not I/O port access. Add EBC support to BaseIoLibIntrinsic that generates an ASSERT() if the IoReadXX()/IoWriteXX() APIs are used. This matches the implementation for other CPU types that do not support I/O port access. Cc: Liming Gao <liming.gao@intel.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19234 6f19259b-4bc3-4df7-8a09-765794883524
- Loading branch information
Showing
3 changed files
with
180 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
/** @file | ||
I/O Library for EBC. | ||
EBC does not support port I/O. All APIs in this file ASSERT(). | ||
Copyright (c) 2015, 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. | ||
**/ | ||
|
||
#include "BaseIoLibIntrinsicInternal.h" | ||
|
||
/** | ||
Reads an 8-bit I/O port. | ||
Reads the 8-bit I/O port specified by Port. The 8-bit read value is returned. | ||
This function must guarantee that all I/O read and write operations are | ||
serialized. | ||
If 8-bit I/O port operations are not supported, then ASSERT(). | ||
@param Port The I/O port to read. | ||
@return The value read. | ||
**/ | ||
UINT8 | ||
EFIAPI | ||
IoRead8 ( | ||
IN UINTN Port | ||
) | ||
{ | ||
ASSERT (FALSE); | ||
return 0; | ||
} | ||
|
||
/** | ||
Writes an 8-bit I/O port. | ||
Writes the 8-bit I/O port specified by Port with the value specified by Value | ||
and returns Value. This function must guarantee that all I/O read and write | ||
operations are serialized. | ||
If 8-bit I/O port operations are not supported, then ASSERT(). | ||
@param Port The I/O port to write. | ||
@param Value The value to write to the I/O port. | ||
@return The value written to the I/O port. | ||
**/ | ||
UINT8 | ||
EFIAPI | ||
IoWrite8 ( | ||
IN UINTN Port, | ||
IN UINT8 Value | ||
) | ||
{ | ||
ASSERT (FALSE); | ||
return 0; | ||
} | ||
|
||
/** | ||
Reads a 16-bit I/O port. | ||
Reads the 16-bit I/O port specified by Port. The 16-bit read value is returned. | ||
This function must guarantee that all I/O read and write operations are | ||
serialized. | ||
If 16-bit I/O port operations are not supported, then ASSERT(). | ||
If Port is not aligned on a 16-bit boundary, then ASSERT(). | ||
@param Port The I/O port to read. | ||
@return The value read. | ||
**/ | ||
UINT16 | ||
EFIAPI | ||
IoRead16 ( | ||
IN UINTN Port | ||
) | ||
{ | ||
ASSERT (FALSE); | ||
return 0; | ||
} | ||
|
||
/** | ||
Writes a 16-bit I/O port. | ||
Writes the 16-bit I/O port specified by Port with the value specified by Value | ||
and returns Value. This function must guarantee that all I/O read and write | ||
operations are serialized. | ||
If 16-bit I/O port operations are not supported, then ASSERT(). | ||
If Port is not aligned on a 16-bit boundary, then ASSERT(). | ||
@param Port The I/O port to write. | ||
@param Value The value to write to the I/O port. | ||
@return The value written to the I/O port. | ||
**/ | ||
UINT16 | ||
EFIAPI | ||
IoWrite16 ( | ||
IN UINTN Port, | ||
IN UINT16 Value | ||
) | ||
{ | ||
ASSERT (FALSE); | ||
return 0; | ||
} | ||
|
||
/** | ||
Reads a 32-bit I/O port. | ||
Reads the 32-bit I/O port specified by Port. The 32-bit read value is returned. | ||
This function must guarantee that all I/O read and write operations are | ||
serialized. | ||
If 32-bit I/O port operations are not supported, then ASSERT(). | ||
If Port is not aligned on a 32-bit boundary, then ASSERT(). | ||
@param Port The I/O port to read. | ||
@return The value read. | ||
**/ | ||
UINT32 | ||
EFIAPI | ||
IoRead32 ( | ||
IN UINTN Port | ||
) | ||
{ | ||
ASSERT (FALSE); | ||
return 0; | ||
} | ||
|
||
/** | ||
Writes a 32-bit I/O port. | ||
Writes the 32-bit I/O port specified by Port with the value specified by Value | ||
and returns Value. This function must guarantee that all I/O read and write | ||
operations are serialized. | ||
If 32-bit I/O port operations are not supported, then ASSERT(). | ||
If Port is not aligned on a 32-bit boundary, then ASSERT(). | ||
@param Port The I/O port to write. | ||
@param Value The value to write to the I/O port. | ||
@return The value written to the I/O port. | ||
**/ | ||
UINT32 | ||
EFIAPI | ||
IoWrite32 ( | ||
IN UINTN Port, | ||
IN UINT32 Value | ||
) | ||
{ | ||
ASSERT (FALSE); | ||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters