mirror of https://github.com/acidanthera/audk.git
Clean up file header comments to match CPU I/O Protocol .h file.
Add check to make sure the Address parameter passed in is properly aligned for the requested operation. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9760 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
0b70a697a6
commit
7a7f916a70
|
@ -124,18 +124,26 @@ UINT8 mOutStride[] = {
|
||||||
/**
|
/**
|
||||||
Check parameters to a CPU I/O Protocol service request.
|
Check parameters to a CPU I/O Protocol service request.
|
||||||
|
|
||||||
@param Width Signifies the width of the I/O or Memory operation.
|
The I/O operations are carried out exactly as requested. The caller is responsible
|
||||||
@param Address The base address of the I/O or Memory operation.
|
for satisfying any alignment and I/O width restrictions that a PI System on a
|
||||||
@param Count The number of I/O or Memory operations to perform.
|
platform might require. For example on some platforms, width requests of
|
||||||
The number of bytes moved is Width size * Count, starting at Address.
|
EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will
|
||||||
@param Buffer For read operations, the destination buffer to store the results.
|
be handled by the driver.
|
||||||
For write operations, the source buffer from which to write data.
|
|
||||||
@param MmioOperation TRUE for an MMIO operation, FALSE for I/O Port operation.
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS The parameters for this request pass the checks.
|
@param[in] MmioOperation TRUE for an MMIO operation, FALSE for I/O Port operation.
|
||||||
@retval EFI_INVALID_PARAMETER Buffer is NULL or Width is not valid.
|
@param[in] Width Signifies the width of the I/O or Memory operation.
|
||||||
@retval EFI_UNSUPPORTED The address range specified by Address, Width, and Count exceeds Limit.
|
@param[in] Address The base address of the I/O operation.
|
||||||
The Buffer is not aligned for the given Width.
|
@param[in] Count The number of I/O operations to perform. The number of
|
||||||
|
bytes moved is Width size * Count, starting at Address.
|
||||||
|
@param[in] Buffer For read operations, the destination buffer to store the results.
|
||||||
|
For write operations, the source buffer from which to write data.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The parameters for this request pass the checks.
|
||||||
|
@retval EFI_INVALID_PARAMETER Width is invalid for this PI system.
|
||||||
|
@retval EFI_INVALID_PARAMETER Buffer is NULL.
|
||||||
|
@retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width.
|
||||||
|
@retval EFI_UNSUPPORTED The address range specified by Address, Width,
|
||||||
|
and Count is not valid for this PI system.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
|
@ -180,6 +188,13 @@ CpuIoCheckParameter (
|
||||||
return EFI_INVALID_PARAMETER;
|
return EFI_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check to see if Address is alligned
|
||||||
|
//
|
||||||
|
if ((Address & (UINT64)(mInStride[Width] - 1)) != 0) {
|
||||||
|
return EFI_UNSUPPORTED;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check to see if any address associated with this transfer exceeds the maximum
|
// Check to see if any address associated with this transfer exceeds the maximum
|
||||||
// allowed address. The maximum address implied by the parameters passed in is
|
// allowed address. The maximum address implied by the parameters passed in is
|
||||||
|
@ -223,18 +238,40 @@ CpuIoCheckParameter (
|
||||||
/**
|
/**
|
||||||
Reads memory-mapped registers.
|
Reads memory-mapped registers.
|
||||||
|
|
||||||
@param This A pointer to the EFI_CPU_IO_PROTOCOL instance.
|
The I/O operations are carried out exactly as requested. The caller is responsible
|
||||||
@param Width Signifies the width of the I/O or Memory operation.
|
for satisfying any alignment and I/O width restrictions that a PI System on a
|
||||||
@param Address The base address of the I/O or Memoryoperation.
|
platform might require. For example on some platforms, width requests of
|
||||||
@param Count The number of I/O or Memory operations to perform.
|
EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will
|
||||||
The number of bytes moved is Width size * Count, starting at Address.
|
be handled by the driver.
|
||||||
@param Buffer For read operations, the destination buffer to store the results.
|
|
||||||
For write operations, the source buffer from which to write data.
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS The data was read from or written to the EFI system.
|
If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32,
|
||||||
@retval EFI_INVALID_PARAMETER Width is invalid for this EFI system.Or Buffer is NULL.
|
or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for
|
||||||
@retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width.
|
each of the Count operations that is performed.
|
||||||
Or,The address range specified by Address, Width, and Count is not valid for this EFI system.
|
|
||||||
|
If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16,
|
||||||
|
EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is
|
||||||
|
incremented for each of the Count operations that is performed. The read or
|
||||||
|
write operation is performed Count times on the same Address.
|
||||||
|
|
||||||
|
If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16,
|
||||||
|
EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is
|
||||||
|
incremented for each of the Count operations that is performed. The read or
|
||||||
|
write operation is performed Count times from the first element of Buffer.
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_CPU_IO_PROTOCOL instance.
|
||||||
|
@param[in] Width Signifies the width of the I/O or Memory operation.
|
||||||
|
@param[in] Address The base address of the I/O operation.
|
||||||
|
@param[in] Count The number of I/O operations to perform. The number of
|
||||||
|
bytes moved is Width size * Count, starting at Address.
|
||||||
|
@param[out] Buffer For read operations, the destination buffer to store the results.
|
||||||
|
For write operations, the source buffer from which to write data.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The data was read from or written to the PI system.
|
||||||
|
@retval EFI_INVALID_PARAMETER Width is invalid for this PI system.
|
||||||
|
@retval EFI_INVALID_PARAMETER Buffer is NULL.
|
||||||
|
@retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width.
|
||||||
|
@retval EFI_UNSUPPORTED The address range specified by Address, Width,
|
||||||
|
and Count is not valid for this PI system.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
|
@ -281,18 +318,40 @@ CpuMemoryServiceRead (
|
||||||
/**
|
/**
|
||||||
Writes memory-mapped registers.
|
Writes memory-mapped registers.
|
||||||
|
|
||||||
@param This A pointer to the EFI_CPU_IO_PROTOCOL instance.
|
The I/O operations are carried out exactly as requested. The caller is responsible
|
||||||
@param Width Signifies the width of the I/O or Memory operation.
|
for satisfying any alignment and I/O width restrictions that a PI System on a
|
||||||
@param Address The base address of the I/O or Memoryoperation.
|
platform might require. For example on some platforms, width requests of
|
||||||
@param Count The number of I/O or Memory operations to perform.
|
EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will
|
||||||
The number of bytes moved is Width size * Count, starting at Address.
|
be handled by the driver.
|
||||||
@param Buffer For read operations, the destination buffer to store the results.
|
|
||||||
For write operations, the source buffer from which to write data.
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS The data was read from or written to the EFI system.
|
If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32,
|
||||||
@retval EFI_INVALID_PARAMETER Width is invalid for this EFI system.Or Buffer is NULL.
|
or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for
|
||||||
@retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width.
|
each of the Count operations that is performed.
|
||||||
Or,The address range specified by Address, Width, and Count is not valid for this EFI system.
|
|
||||||
|
If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16,
|
||||||
|
EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is
|
||||||
|
incremented for each of the Count operations that is performed. The read or
|
||||||
|
write operation is performed Count times on the same Address.
|
||||||
|
|
||||||
|
If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16,
|
||||||
|
EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is
|
||||||
|
incremented for each of the Count operations that is performed. The read or
|
||||||
|
write operation is performed Count times from the first element of Buffer.
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_CPU_IO_PROTOCOL instance.
|
||||||
|
@param[in] Width Signifies the width of the I/O or Memory operation.
|
||||||
|
@param[in] Address The base address of the I/O operation.
|
||||||
|
@param[in] Count The number of I/O operations to perform. The number of
|
||||||
|
bytes moved is Width size * Count, starting at Address.
|
||||||
|
@param[in] Buffer For read operations, the destination buffer to store the results.
|
||||||
|
For write operations, the source buffer from which to write data.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The data was read from or written to the PI system.
|
||||||
|
@retval EFI_INVALID_PARAMETER Width is invalid for this PI system.
|
||||||
|
@retval EFI_INVALID_PARAMETER Buffer is NULL.
|
||||||
|
@retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width.
|
||||||
|
@retval EFI_UNSUPPORTED The address range specified by Address, Width,
|
||||||
|
and Count is not valid for this PI system.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
|
@ -339,18 +398,40 @@ CpuMemoryServiceWrite (
|
||||||
/**
|
/**
|
||||||
Reads I/O registers.
|
Reads I/O registers.
|
||||||
|
|
||||||
@param This A pointer to the EFI_CPU_IO_PROTOCOL instance.
|
The I/O operations are carried out exactly as requested. The caller is responsible
|
||||||
@param Width Signifies the width of the I/O or Memory operation.
|
for satisfying any alignment and I/O width restrictions that a PI System on a
|
||||||
@param Address The base address of the I/O or Memoryoperation.
|
platform might require. For example on some platforms, width requests of
|
||||||
@param Count The number of I/O or Memory operations to perform.
|
EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will
|
||||||
The number of bytes moved is Width size * Count, starting at Address.
|
be handled by the driver.
|
||||||
@param Buffer For read operations, the destination buffer to store the results.
|
|
||||||
For write operations, the source buffer from which to write data.
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS The data was read from or written to the EFI system.
|
If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32,
|
||||||
@retval EFI_INVALID_PARAMETER Width is invalid for this EFI system.Or Buffer is NULL.
|
or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for
|
||||||
@retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width.
|
each of the Count operations that is performed.
|
||||||
Or,The address range specified by Address, Width, and Count is not valid for this EFI system.
|
|
||||||
|
If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16,
|
||||||
|
EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is
|
||||||
|
incremented for each of the Count operations that is performed. The read or
|
||||||
|
write operation is performed Count times on the same Address.
|
||||||
|
|
||||||
|
If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16,
|
||||||
|
EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is
|
||||||
|
incremented for each of the Count operations that is performed. The read or
|
||||||
|
write operation is performed Count times from the first element of Buffer.
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_CPU_IO_PROTOCOL instance.
|
||||||
|
@param[in] Width Signifies the width of the I/O or Memory operation.
|
||||||
|
@param[in] Address The base address of the I/O operation.
|
||||||
|
@param[in] Count The number of I/O operations to perform. The number of
|
||||||
|
bytes moved is Width size * Count, starting at Address.
|
||||||
|
@param[out] Buffer For read operations, the destination buffer to store the results.
|
||||||
|
For write operations, the source buffer from which to write data.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The data was read from or written to the PI system.
|
||||||
|
@retval EFI_INVALID_PARAMETER Width is invalid for this PI system.
|
||||||
|
@retval EFI_INVALID_PARAMETER Buffer is NULL.
|
||||||
|
@retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width.
|
||||||
|
@retval EFI_UNSUPPORTED The address range specified by Address, Width,
|
||||||
|
and Count is not valid for this PI system.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
|
@ -396,18 +477,40 @@ CpuIoServiceRead (
|
||||||
/**
|
/**
|
||||||
Write I/O registers.
|
Write I/O registers.
|
||||||
|
|
||||||
@param This A pointer to the EFI_CPU_IO_PROTOCOL instance.
|
The I/O operations are carried out exactly as requested. The caller is responsible
|
||||||
@param Width Signifies the width of the I/O or Memory operation.
|
for satisfying any alignment and I/O width restrictions that a PI System on a
|
||||||
@param Address The base address of the I/O or Memoryoperation.
|
platform might require. For example on some platforms, width requests of
|
||||||
@param Count The number of I/O or Memory operations to perform.
|
EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will
|
||||||
The number of bytes moved is Width size * Count, starting at Address.
|
be handled by the driver.
|
||||||
@param Buffer For read operations, the destination buffer to store the results.
|
|
||||||
For write operations, the source buffer from which to write data.
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS The data was read from or written to the EFI system.
|
If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32,
|
||||||
@retval EFI_INVALID_PARAMETER Width is invalid for this EFI system.Or Buffer is NULL.
|
or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for
|
||||||
@retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width.
|
each of the Count operations that is performed.
|
||||||
Or,The address range specified by Address, Width, and Count is not valid for this EFI system.
|
|
||||||
|
If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16,
|
||||||
|
EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is
|
||||||
|
incremented for each of the Count operations that is performed. The read or
|
||||||
|
write operation is performed Count times on the same Address.
|
||||||
|
|
||||||
|
If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16,
|
||||||
|
EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is
|
||||||
|
incremented for each of the Count operations that is performed. The read or
|
||||||
|
write operation is performed Count times from the first element of Buffer.
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_CPU_IO_PROTOCOL instance.
|
||||||
|
@param[in] Width Signifies the width of the I/O or Memory operation.
|
||||||
|
@param[in] Address The base address of the I/O operation.
|
||||||
|
@param[in] Count The number of I/O operations to perform. The number of
|
||||||
|
bytes moved is Width size * Count, starting at Address.
|
||||||
|
@param[in] Buffer For read operations, the destination buffer to store the results.
|
||||||
|
For write operations, the source buffer from which to write data.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The data was read from or written to the PI system.
|
||||||
|
@retval EFI_INVALID_PARAMETER Width is invalid for this PI system.
|
||||||
|
@retval EFI_INVALID_PARAMETER Buffer is NULL.
|
||||||
|
@retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width.
|
||||||
|
@retval EFI_UNSUPPORTED The address range specified by Address, Width,
|
||||||
|
and Count is not valid for this PI system.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
|
|
Loading…
Reference in New Issue