Neither the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL nor the EFI_CPU_IO2_PROTOCOL
impose any restrictions when it comes to the range of valid I/O
addresses. Even so, the 'mm' command in -IO mode refuses to perform
accesses to addresses >= 0xffff.
It is not up to 'mm' to impose this restriction, so remove it.
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
- if ((AccessType == ShellMmIo) && (Address + Size > MAX_UINT16 + 1)) {\r
- ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_MM_IO_ADDRESS_RANGE), gShellDebug1HiiHandle, L"mm");\r
- ShellStatus = SHELL_INVALID_PARAMETER;\r
- goto Done;\r
- }\r
-\r
//\r
// locate IO protocol interface\r
//\r
//\r
// locate IO protocol interface\r
//\r
//\r
Complete = FALSE;\r
do {\r
//\r
Complete = FALSE;\r
do {\r
- if ((AccessType == ShellMmIo) && (Address + Size > MAX_UINT16 + 1)) {\r
- ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_MM_ADDRESS_RANGE2), gShellDebug1HiiHandle, L"mm");\r
- break;\r
- }\r
-\r
ShellMmAccess (AccessType, PciRootBridgeIo, CpuIo, TRUE, Address, Size, &Buffer);\r
ShellPrintHiiEx (-1, -1, NULL, mShellMmAccessTypeStr[AccessType], gShellDebug1HiiHandle);\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_MM_ADDRESS), gShellDebug1HiiHandle, Address);\r
ShellMmAccess (AccessType, PciRootBridgeIo, CpuIo, TRUE, Address, Size, &Buffer);\r
ShellPrintHiiEx (-1, -1, NULL, mShellMmAccessTypeStr[AccessType], gShellDebug1HiiHandle);\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_MM_ADDRESS), gShellDebug1HiiHandle, Address);\r
\r
#string STR_MM_NOT_ALIGNED #language en-US "%H%s%N: Address parameter %016LX is not aligned.\r\n"\r
#string STR_MM_PCIE_ADDRESS_RANGE #language en-US "%H%s%N: Address parameter %016LX is not a valid PCI/PCIE address.\r\n"\r
\r
#string STR_MM_NOT_ALIGNED #language en-US "%H%s%N: Address parameter %016LX is not aligned.\r\n"\r
#string STR_MM_PCIE_ADDRESS_RANGE #language en-US "%H%s%N: Address parameter %016LX is not a valid PCI/PCIE address.\r\n"\r
-#string STR_MM_IO_ADDRESS_RANGE #language en-US "%H%s%N: IO address out of range 0 - 0xFFFF\r\n"\r
#string STR_MM_MMIO #language en-US "%HMMIO%N"\r
#string STR_MM_IO #language en-US "%HIO%N"\r
#string STR_MM_PCI #language en-US "%HPCI%N"\r
#string STR_MM_MMIO #language en-US "%HMMIO%N"\r
#string STR_MM_IO #language en-US "%HIO%N"\r
#string STR_MM_PCI #language en-US "%HPCI%N"\r
#string STR_MM_PCIE #language en-US "%HPCIE%N"\r
#string STR_MM_ADDRESS #language en-US " 0x%016lx : "\r
#string STR_MM_BUF #language en-US "0x%0*lx"\r
#string STR_MM_PCIE #language en-US "%HPCIE%N"\r
#string STR_MM_ADDRESS #language en-US " 0x%016lx : "\r
#string STR_MM_BUF #language en-US "0x%0*lx"\r
-#string STR_MM_ADDRESS_RANGE2 #language en-US "%H%s%N: IO address out of range\r\n"\r
#string STR_MM_ERROR #language en-US "%H%s%N: Input had incorrect format\r\n"\r
\r
#string STR_SETVAR_PRINT #language en-US "%g - %s - %04x Bytes\r\n"\r
#string STR_MM_ERROR #language en-US "%H%s%N: Input had incorrect format\r\n"\r
\r
#string STR_SETVAR_PRINT #language en-US "%g - %s - %04x Bytes\r\n"\r