/**\r
\r
Parse a comma-separated list of hexadecimal integers into the elements of an\r
- UINT32 array.\r
+ UINT64 array.\r
\r
Whitespace, "0x" prefixes, leading or trailing commas, sequences of commas,\r
or an empty string are not allowed; they are rejected.\r
RETURN_STATUS\r
ParseUnitAddressHexList (\r
IN SUBSTRING UnitAddress,\r
- OUT UINT32 *Result,\r
+ OUT UINT64 *Result,\r
IN OUT UINTN *NumResults\r
)\r
{\r
UINTN Entry; // number of entry currently being parsed\r
- UINT32 EntryVal; // value being constructed for current entry\r
+ UINT64 EntryVal; // value being constructed for current entry\r
CHAR8 PrevChr; // UnitAddress character previously checked\r
UINTN Pos; // current position within UnitAddress\r
RETURN_STATUS Status;\r
-1;\r
\r
if (Val >= 0) {\r
- if (EntryVal > 0xFFFFFFF) {\r
+ if (EntryVal > 0xFFFFFFFFFFFFFFFull) {\r
return RETURN_INVALID_PARAMETER;\r
}\r
- EntryVal = (EntryVal << 4) | Val;\r
+ EntryVal = LShiftU64 (EntryVal, 4) | Val;\r
} else if (Chr == ',') {\r
if (PrevChr == ',') {\r
return RETURN_INVALID_PARAMETER;\r
IN OUT UINTN *TranslatedSize\r
)\r
{\r
- UINT32 PciDevFun[2];\r
+ UINT64 PciDevFun[2];\r
UINTN NumEntries;\r
UINTN Written;\r
\r
// ^\r
// fixed LUN\r
//\r
- UINT32 Secondary;\r
- UINT32 Slave;\r
+ UINT64 Secondary;\r
+ UINT64 Slave;\r
\r
NumEntries = 1;\r
if (ParseUnitAddressHexList (\r
Written = UnicodeSPrintAsciiFormat (\r
Translated,\r
*TranslatedSize * sizeof (*Translated), // BufferSize in bytes\r
- "PciRoot(0x0)/Pci(0x%x,0x%x)/Ata(%a,%a,0x0)",\r
+ "PciRoot(0x0)/Pci(0x%Lx,0x%Lx)/Ata(%a,%a,0x0)",\r
PciDevFun[0],\r
PciDevFun[1],\r
Secondary ? "Secondary" : "Primary",\r
// ^\r
// ACPI UID\r
//\r
- UINT32 AcpiUid;\r
+ UINT64 AcpiUid;\r
\r
NumEntries = 1;\r
if (ParseUnitAddressHexList (\r
Written = UnicodeSPrintAsciiFormat (\r
Translated,\r
*TranslatedSize * sizeof (*Translated), // BufferSize in bytes\r
- "PciRoot(0x0)/Pci(0x%x,0x%x)/Floppy(0x%x)",\r
+ "PciRoot(0x0)/Pci(0x%Lx,0x%Lx)/Floppy(0x%Lx)",\r
PciDevFun[0],\r
PciDevFun[1],\r
AcpiUid\r
Written = UnicodeSPrintAsciiFormat (\r
Translated,\r
*TranslatedSize * sizeof (*Translated), // BufferSize in bytes\r
- "PciRoot(0x0)/Pci(0x%x,0x%x)/HD(",\r
+ "PciRoot(0x0)/Pci(0x%Lx,0x%Lx)/HD(",\r
PciDevFun[0],\r
PciDevFun[1]\r
);\r
// PciRoot(0x0)/Pci(0x7,0x3)/Scsi(0x2,0x3)\r
// -- if PCI function is present and nonzero\r
//\r
- UINT32 TargetLun[2];\r
+ UINT64 TargetLun[2];\r
\r
TargetLun[1] = 0;\r
NumEntries = sizeof (TargetLun) / sizeof (TargetLun[0]);\r
Written = UnicodeSPrintAsciiFormat (\r
Translated,\r
*TranslatedSize * sizeof (*Translated), // BufferSize in bytes\r
- "PciRoot(0x0)/Pci(0x%x,0x%x)/Scsi(0x%x,0x%x)",\r
+ "PciRoot(0x0)/Pci(0x%Lx,0x%Lx)/Scsi(0x%Lx,0x%Lx)",\r
PciDevFun[0],\r
PciDevFun[1],\r
TargetLun[0],\r
Written = UnicodeSPrintAsciiFormat (\r
Translated,\r
*TranslatedSize * sizeof (*Translated), // BufferSize in bytes\r
- "PciRoot(0x0)/Pci(0x%x,0x%x)",\r
+ "PciRoot(0x0)/Pci(0x%Lx,0x%Lx)",\r
PciDevFun[0],\r
PciDevFun[1]\r
);\r