Changeset 58466 in vbox for trunk/src/VBox/Devices/EFI/Firmware/UefiCpuPkg/CpuIo2Dxe
- Timestamp:
- Oct 29, 2015 4:30:44 AM (9 years ago)
- Location:
- trunk/src/VBox/Devices/EFI/Firmware
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/EFI/Firmware
- Property svn:mergeinfo changed
/vendor/edk2/current merged: 103769-103776
- Property svn:mergeinfo changed
-
trunk/src/VBox/Devices/EFI/Firmware/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.c
r58459 r58466 3 3 4 4 Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR> 5 This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 5 This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 12 13 13 **/ … … 73 73 Check parameters to a CPU I/O 2 Protocol service request. 74 74 75 The I/O operations are carried out exactly as requested. The caller is responsible 76 for satisfying any alignment and I/O width restrictions that a PI System on a 77 platform might require. For example on some platforms, width requests of 78 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 75 The I/O operations are carried out exactly as requested. The caller is responsible 76 for satisfying any alignment and I/O width restrictions that a PI System on a 77 platform might require. For example on some platforms, width requests of 78 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 79 79 be handled by the driver. 80 80 81 81 @param[in] MmioOperation TRUE for an MMIO operation, FALSE for I/O Port operation. 82 82 @param[in] Width Signifies the width of the I/O or Memory operation. 83 @param[in] Address The base address of the I/O operation. 84 @param[in] Count The number of I/O operations to perform. The number of 83 @param[in] Address The base address of the I/O operation. 84 @param[in] Count The number of I/O operations to perform. The number of 85 85 bytes moved is Width size * Count, starting at Address. 86 86 @param[in] Buffer For read operations, the destination buffer to store the results. … … 91 91 @retval EFI_INVALID_PARAMETER Buffer is NULL. 92 92 @retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width. 93 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 93 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 94 94 and Count is not valid for this PI system. 95 95 … … 136 136 return EFI_INVALID_PARAMETER; 137 137 } 138 138 139 139 // 140 140 // Check to see if Address is aligned … … 145 145 146 146 // 147 // Check to see if any address associated with this transfer exceeds the maximum 147 // Check to see if any address associated with this transfer exceeds the maximum 148 148 // allowed address. The maximum address implied by the parameters passed in is 149 149 // Address + Size * Count. If the following condition is met, then the transfer … … 152 152 // Address + Size * Count > (MmioOperation ? MAX_ADDRESS : MAX_IO_PORT_ADDRESS) + 1 153 153 // 154 // Since MAX_ADDRESS can be the maximum integer value supported by the CPU and Count 154 // Since MAX_ADDRESS can be the maximum integer value supported by the CPU and Count 155 155 // can also be the maximum integer value supported by the CPU, this range 156 156 // check must be adjusted to avoid all oveflow conditions. 157 // 158 // The following form of the range check is equivalent but assumes that 157 // 158 // The following form of the range check is equivalent but assumes that 159 159 // MAX_ADDRESS and MAX_IO_PORT_ADDRESS are of the form (2^n - 1). 160 160 // … … 164 164 return EFI_UNSUPPORTED; 165 165 } 166 } else { 166 } else { 167 167 MaxCount = RShiftU64 (Limit, Width); 168 168 if (MaxCount < (Count - 1)) { … … 188 188 Reads memory-mapped registers. 189 189 190 The I/O operations are carried out exactly as requested. The caller is responsible 191 for satisfying any alignment and I/O width restrictions that a PI System on a 192 platform might require. For example on some platforms, width requests of 193 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 190 The I/O operations are carried out exactly as requested. The caller is responsible 191 for satisfying any alignment and I/O width restrictions that a PI System on a 192 platform might require. For example on some platforms, width requests of 193 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 194 194 be handled by the driver. 195 196 If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32, 197 or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for 195 196 If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32, 197 or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for 198 198 each of the Count operations that is performed. 199 200 If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16, 201 EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is 202 incremented for each of the Count operations that is performed. The read or 199 200 If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16, 201 EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is 202 incremented for each of the Count operations that is performed. The read or 203 203 write operation is performed Count times on the same Address. 204 205 If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16, 206 EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is 207 incremented for each of the Count operations that is performed. The read or 204 205 If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16, 206 EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is 207 incremented for each of the Count operations that is performed. The read or 208 208 write operation is performed Count times from the first element of Buffer. 209 209 210 210 @param[in] This A pointer to the EFI_CPU_IO2_PROTOCOL instance. 211 211 @param[in] Width Signifies the width of the I/O or Memory operation. 212 @param[in] Address The base address of the I/O operation. 213 @param[in] Count The number of I/O operations to perform. The number of 212 @param[in] Address The base address of the I/O operation. 213 @param[in] Count The number of I/O operations to perform. The number of 214 214 bytes moved is Width size * Count, starting at Address. 215 215 @param[out] Buffer For read operations, the destination buffer to store the results. … … 220 220 @retval EFI_INVALID_PARAMETER Buffer is NULL. 221 221 @retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width. 222 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 222 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 223 223 and Count is not valid for this PI system. 224 224 … … 268 268 Writes memory-mapped registers. 269 269 270 The I/O operations are carried out exactly as requested. The caller is responsible 271 for satisfying any alignment and I/O width restrictions that a PI System on a 272 platform might require. For example on some platforms, width requests of 273 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 270 The I/O operations are carried out exactly as requested. The caller is responsible 271 for satisfying any alignment and I/O width restrictions that a PI System on a 272 platform might require. For example on some platforms, width requests of 273 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 274 274 be handled by the driver. 275 276 If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32, 277 or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for 275 276 If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32, 277 or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for 278 278 each of the Count operations that is performed. 279 280 If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16, 281 EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is 282 incremented for each of the Count operations that is performed. The read or 279 280 If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16, 281 EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is 282 incremented for each of the Count operations that is performed. The read or 283 283 write operation is performed Count times on the same Address. 284 285 If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16, 286 EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is 287 incremented for each of the Count operations that is performed. The read or 284 285 If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16, 286 EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is 287 incremented for each of the Count operations that is performed. The read or 288 288 write operation is performed Count times from the first element of Buffer. 289 289 290 290 @param[in] This A pointer to the EFI_CPU_IO2_PROTOCOL instance. 291 291 @param[in] Width Signifies the width of the I/O or Memory operation. 292 @param[in] Address The base address of the I/O operation. 293 @param[in] Count The number of I/O operations to perform. The number of 292 @param[in] Address The base address of the I/O operation. 293 @param[in] Count The number of I/O operations to perform. The number of 294 294 bytes moved is Width size * Count, starting at Address. 295 295 @param[in] Buffer For read operations, the destination buffer to store the results. … … 300 300 @retval EFI_INVALID_PARAMETER Buffer is NULL. 301 301 @retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width. 302 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 302 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 303 303 and Count is not valid for this PI system. 304 304 … … 348 348 Reads I/O registers. 349 349 350 The I/O operations are carried out exactly as requested. The caller is responsible 351 for satisfying any alignment and I/O width restrictions that a PI System on a 352 platform might require. For example on some platforms, width requests of 353 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 350 The I/O operations are carried out exactly as requested. The caller is responsible 351 for satisfying any alignment and I/O width restrictions that a PI System on a 352 platform might require. For example on some platforms, width requests of 353 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 354 354 be handled by the driver. 355 356 If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32, 357 or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for 355 356 If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32, 357 or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for 358 358 each of the Count operations that is performed. 359 360 If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16, 361 EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is 362 incremented for each of the Count operations that is performed. The read or 359 360 If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16, 361 EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is 362 incremented for each of the Count operations that is performed. The read or 363 363 write operation is performed Count times on the same Address. 364 365 If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16, 366 EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is 367 incremented for each of the Count operations that is performed. The read or 364 365 If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16, 366 EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is 367 incremented for each of the Count operations that is performed. The read or 368 368 write operation is performed Count times from the first element of Buffer. 369 369 370 370 @param[in] This A pointer to the EFI_CPU_IO2_PROTOCOL instance. 371 371 @param[in] Width Signifies the width of the I/O or Memory operation. 372 @param[in] Address The base address of the I/O operation. 373 @param[in] Count The number of I/O operations to perform. The number of 372 @param[in] Address The base address of the I/O operation. 373 @param[in] Count The number of I/O operations to perform. The number of 374 374 bytes moved is Width size * Count, starting at Address. 375 375 @param[out] Buffer For read operations, the destination buffer to store the results. … … 380 380 @retval EFI_INVALID_PARAMETER Buffer is NULL. 381 381 @retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width. 382 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 382 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 383 383 and Count is not valid for this PI system. 384 384 … … 427 427 Write I/O registers. 428 428 429 The I/O operations are carried out exactly as requested. The caller is responsible 430 for satisfying any alignment and I/O width restrictions that a PI System on a 431 platform might require. For example on some platforms, width requests of 432 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 429 The I/O operations are carried out exactly as requested. The caller is responsible 430 for satisfying any alignment and I/O width restrictions that a PI System on a 431 platform might require. For example on some platforms, width requests of 432 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 433 433 be handled by the driver. 434 435 If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32, 436 or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for 434 435 If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32, 436 or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for 437 437 each of the Count operations that is performed. 438 439 If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16, 440 EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is 441 incremented for each of the Count operations that is performed. The read or 438 439 If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16, 440 EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is 441 incremented for each of the Count operations that is performed. The read or 442 442 write operation is performed Count times on the same Address. 443 444 If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16, 445 EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is 446 incremented for each of the Count operations that is performed. The read or 443 444 If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16, 445 EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is 446 incremented for each of the Count operations that is performed. The read or 447 447 write operation is performed Count times from the first element of Buffer. 448 448 449 449 @param[in] This A pointer to the EFI_CPU_IO2_PROTOCOL instance. 450 450 @param[in] Width Signifies the width of the I/O or Memory operation. 451 @param[in] Address The base address of the I/O operation. 452 @param[in] Count The number of I/O operations to perform. The number of 451 @param[in] Address The base address of the I/O operation. 452 @param[in] Count The number of I/O operations to perform. The number of 453 453 bytes moved is Width size * Count, starting at Address. 454 454 @param[in] Buffer For read operations, the destination buffer to store the results. … … 459 459 @retval EFI_INVALID_PARAMETER Buffer is NULL. 460 460 @retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width. 461 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 461 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 462 462 and Count is not valid for this PI system. 463 463 464 464 **/ 465 465 EFI_STATUS … … 502 502 } 503 503 } 504 504 505 505 return EFI_SUCCESS; 506 506 } … … 509 509 The user Entry Point for module CpuIo2Dxe. The user code starts with this function. 510 510 511 @param[in] ImageHandle The firmware allocated handle for the EFI image. 511 @param[in] ImageHandle The firmware allocated handle for the EFI image. 512 512 @param[in] SystemTable A pointer to the EFI System Table. 513 513 514 514 @retval EFI_SUCCESS The entry point is executed successfully. 515 515 @retval other Some error occurs when executing this entry point. -
trunk/src/VBox/Devices/EFI/Firmware/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.h
r48674 r58466 3 3 4 4 Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR> 5 This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 5 This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 12 13 13 **/ … … 30 30 Reads memory-mapped registers. 31 31 32 The I/O operations are carried out exactly as requested. The caller is responsible 33 for satisfying any alignment and I/O width restrictions that a PI System on a 34 platform might require. For example on some platforms, width requests of 35 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 36 be handled by the driver. 37 38 If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32, 39 or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for 40 each of the Count operations that is performed. 41 42 If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16, 43 EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is 44 incremented for each of the Count operations that is performed. The read or 45 write operation is performed Count times on the same Address. 46 47 If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16, 48 EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is 49 incremented for each of the Count operations that is performed. The read or 50 write operation is performed Count times from the first element of Buffer. 51 52 @param[in] This A pointer to the EFI_CPU_IO2_PROTOCOL instance. 53 @param[in] Width Signifies the width of the I/O or Memory operation. 54 @param[in] Address The base address of the I/O operation. 55 @param[in] Count The number of I/O operations to perform. The number of 32 The I/O operations are carried out exactly as requested. The caller is responsible 33 for satisfying any alignment and I/O width restrictions that a PI System on a 34 platform might require. For example on some platforms, width requests of 35 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 36 be handled by the driver. 37 38 If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32, 39 or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for 40 each of the Count operations that is performed. 41 42 If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16, 43 EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is 44 incremented for each of the Count operations that is performed. The read or 45 write operation is performed Count times on the same Address. 46 47 If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16, 48 EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is 49 incremented for each of the Count operations that is performed. The read or 50 write operation is performed Count times from the first element of Buffer. 51 52 @param[in] This A pointer to the EFI_CPU_IO2_PROTOCOL instance. 53 @param[in] Width Signifies the width of the I/O or Memory operation. 54 @param[in] Address The base address of the I/O operation. 55 @param[in] Count The number of I/O operations to perform. The number of 56 56 bytes moved is Width size * Count, starting at Address. 57 57 @param[out] Buffer For read operations, the destination buffer to store the results. … … 62 62 @retval EFI_INVALID_PARAMETER Buffer is NULL. 63 63 @retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width. 64 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 64 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 65 65 and Count is not valid for this PI system. 66 66 … … 79 79 Writes memory-mapped registers. 80 80 81 The I/O operations are carried out exactly as requested. The caller is responsible 82 for satisfying any alignment and I/O width restrictions that a PI System on a 83 platform might require. For example on some platforms, width requests of 84 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 85 be handled by the driver. 86 87 If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32, 88 or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for 89 each of the Count operations that is performed. 90 91 If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16, 92 EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is 93 incremented for each of the Count operations that is performed. The read or 94 write operation is performed Count times on the same Address. 95 96 If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16, 97 EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is 98 incremented for each of the Count operations that is performed. The read or 99 write operation is performed Count times from the first element of Buffer. 100 101 @param[in] This A pointer to the EFI_CPU_IO2_PROTOCOL instance. 102 @param[in] Width Signifies the width of the I/O or Memory operation. 103 @param[in] Address The base address of the I/O operation. 104 @param[in] Count The number of I/O operations to perform. The number of 81 The I/O operations are carried out exactly as requested. The caller is responsible 82 for satisfying any alignment and I/O width restrictions that a PI System on a 83 platform might require. For example on some platforms, width requests of 84 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 85 be handled by the driver. 86 87 If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32, 88 or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for 89 each of the Count operations that is performed. 90 91 If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16, 92 EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is 93 incremented for each of the Count operations that is performed. The read or 94 write operation is performed Count times on the same Address. 95 96 If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16, 97 EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is 98 incremented for each of the Count operations that is performed. The read or 99 write operation is performed Count times from the first element of Buffer. 100 101 @param[in] This A pointer to the EFI_CPU_IO2_PROTOCOL instance. 102 @param[in] Width Signifies the width of the I/O or Memory operation. 103 @param[in] Address The base address of the I/O operation. 104 @param[in] Count The number of I/O operations to perform. The number of 105 105 bytes moved is Width size * Count, starting at Address. 106 106 @param[in] Buffer For read operations, the destination buffer to store the results. … … 111 111 @retval EFI_INVALID_PARAMETER Buffer is NULL. 112 112 @retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width. 113 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 113 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 114 114 and Count is not valid for this PI system. 115 115 … … 128 128 Reads I/O registers. 129 129 130 The I/O operations are carried out exactly as requested. The caller is responsible 131 for satisfying any alignment and I/O width restrictions that a PI System on a 132 platform might require. For example on some platforms, width requests of 133 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 134 be handled by the driver. 135 136 If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32, 137 or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for 138 each of the Count operations that is performed. 139 140 If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16, 141 EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is 142 incremented for each of the Count operations that is performed. The read or 143 write operation is performed Count times on the same Address. 144 145 If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16, 146 EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is 147 incremented for each of the Count operations that is performed. The read or 148 write operation is performed Count times from the first element of Buffer. 149 150 @param[in] This A pointer to the EFI_CPU_IO2_PROTOCOL instance. 151 @param[in] Width Signifies the width of the I/O or Memory operation. 152 @param[in] Address The base address of the I/O operation. 153 @param[in] Count The number of I/O operations to perform. The number of 130 The I/O operations are carried out exactly as requested. The caller is responsible 131 for satisfying any alignment and I/O width restrictions that a PI System on a 132 platform might require. For example on some platforms, width requests of 133 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 134 be handled by the driver. 135 136 If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32, 137 or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for 138 each of the Count operations that is performed. 139 140 If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16, 141 EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is 142 incremented for each of the Count operations that is performed. The read or 143 write operation is performed Count times on the same Address. 144 145 If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16, 146 EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is 147 incremented for each of the Count operations that is performed. The read or 148 write operation is performed Count times from the first element of Buffer. 149 150 @param[in] This A pointer to the EFI_CPU_IO2_PROTOCOL instance. 151 @param[in] Width Signifies the width of the I/O or Memory operation. 152 @param[in] Address The base address of the I/O operation. 153 @param[in] Count The number of I/O operations to perform. The number of 154 154 bytes moved is Width size * Count, starting at Address. 155 155 @param[out] Buffer For read operations, the destination buffer to store the results. … … 160 160 @retval EFI_INVALID_PARAMETER Buffer is NULL. 161 161 @retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width. 162 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 162 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 163 163 and Count is not valid for this PI system. 164 164 … … 177 177 Write I/O registers. 178 178 179 The I/O operations are carried out exactly as requested. The caller is responsible 180 for satisfying any alignment and I/O width restrictions that a PI System on a 181 platform might require. For example on some platforms, width requests of 182 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 183 be handled by the driver. 184 185 If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32, 186 or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for 187 each of the Count operations that is performed. 188 189 If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16, 190 EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is 191 incremented for each of the Count operations that is performed. The read or 192 write operation is performed Count times on the same Address. 193 194 If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16, 195 EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is 196 incremented for each of the Count operations that is performed. The read or 197 write operation is performed Count times from the first element of Buffer. 198 199 @param[in] This A pointer to the EFI_CPU_IO2_PROTOCOL instance. 200 @param[in] Width Signifies the width of the I/O or Memory operation. 201 @param[in] Address The base address of the I/O operation. 202 @param[in] Count The number of I/O operations to perform. The number of 179 The I/O operations are carried out exactly as requested. The caller is responsible 180 for satisfying any alignment and I/O width restrictions that a PI System on a 181 platform might require. For example on some platforms, width requests of 182 EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will 183 be handled by the driver. 184 185 If Width is EfiCpuIoWidthUint8, EfiCpuIoWidthUint16, EfiCpuIoWidthUint32, 186 or EfiCpuIoWidthUint64, then both Address and Buffer are incremented for 187 each of the Count operations that is performed. 188 189 If Width is EfiCpuIoWidthFifoUint8, EfiCpuIoWidthFifoUint16, 190 EfiCpuIoWidthFifoUint32, or EfiCpuIoWidthFifoUint64, then only Buffer is 191 incremented for each of the Count operations that is performed. The read or 192 write operation is performed Count times on the same Address. 193 194 If Width is EfiCpuIoWidthFillUint8, EfiCpuIoWidthFillUint16, 195 EfiCpuIoWidthFillUint32, or EfiCpuIoWidthFillUint64, then only Address is 196 incremented for each of the Count operations that is performed. The read or 197 write operation is performed Count times from the first element of Buffer. 198 199 @param[in] This A pointer to the EFI_CPU_IO2_PROTOCOL instance. 200 @param[in] Width Signifies the width of the I/O or Memory operation. 201 @param[in] Address The base address of the I/O operation. 202 @param[in] Count The number of I/O operations to perform. The number of 203 203 bytes moved is Width size * Count, starting at Address. 204 204 @param[in] Buffer For read operations, the destination buffer to store the results. … … 209 209 @retval EFI_INVALID_PARAMETER Buffer is NULL. 210 210 @retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width. 211 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 212 and Count is not valid for this PI system. 213 211 @retval EFI_UNSUPPORTED The address range specified by Address, Width, 212 and Count is not valid for this PI system. 213 214 214 **/ 215 215 EFI_STATUS -
trunk/src/VBox/Devices/EFI/Firmware/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
r58459 r58466 19 19 FILE_GUID = A19B1FE7-C1BC-49F8-875F-54A5D542443F 20 20 MODULE_TYPE = DXE_DRIVER 21 VERSION_STRING = 1.0 21 VERSION_STRING = 1.0 22 22 ENTRY_POINT = CpuIo2Initialize 23 23 … … 31 31 CpuIo2Dxe.c 32 32 CpuIo2Dxe.h 33 33 34 34 [Packages] 35 35 MdePkg/MdePkg.dec
Note:
See TracChangeset
for help on using the changeset viewer.