mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-26 23:24:03 +02:00
Fix 2 BootScript thunk issue on MEM_POLL.
1) MEM_POLL stall time is incorrect. Framework version: Duration is used for Stall(), which is Microseconds. Total time is: Duration(Microseconds) * LoopTimes. PI version: Duration is always 100ns. Delay is LoopTimes. Total time is: 100ns * Delay. So Delay = Duration(Microseconds) * LoopTimes / 100ns = Duration * 1000ns * LoopTimes / 100ns = Duration * 10 * LoopTimes 2) MEM_POLL BitMask/BitValue order is incorrect. Framework version: First BitMask, then BitValue PI version: First Data, then DataMask So we revert their order in function call git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11595 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
452f020794
commit
54e4b37e36
@ -514,15 +514,29 @@ BootScriptMemPoll (
|
|||||||
BitValue = VA_ARG (Marker, UINT8 *);
|
BitValue = VA_ARG (Marker, UINT8 *);
|
||||||
Duration = (UINT64)VA_ARG (Marker, UINT64);
|
Duration = (UINT64)VA_ARG (Marker, UINT64);
|
||||||
LoopTimes = (UINT64)VA_ARG (Marker, UINT64);
|
LoopTimes = (UINT64)VA_ARG (Marker, UINT64);
|
||||||
Delay = MultU64x64 (DivU64x32(Duration, 100), LoopTimes);
|
//
|
||||||
|
// Framework version: Duration is used for Stall(), which is Microseconds.
|
||||||
|
// Total time is: Duration(Microseconds) * LoopTimes.
|
||||||
|
// PI version: Duration is always 100ns. Delay is LoopTimes.
|
||||||
|
// Total time is: 100ns * Delay.
|
||||||
|
// So Delay = Duration(Microseconds) * LoopTimes / 100ns
|
||||||
|
// = Duration * 1000ns * LoopTimes / 100ns
|
||||||
|
// = Duration * 10 * LoopTimes
|
||||||
|
//
|
||||||
|
Delay = MultU64x64 (MultU64x32 (Duration, 10), LoopTimes);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Framework version: First BitMask, then BitValue
|
||||||
|
// PI version: First Data, then DataMask
|
||||||
|
// So we revert their order in function call
|
||||||
|
//
|
||||||
return mS3SaveState->Write (
|
return mS3SaveState->Write (
|
||||||
mS3SaveState,
|
mS3SaveState,
|
||||||
EFI_BOOT_SCRIPT_MEM_POLL_OPCODE,
|
EFI_BOOT_SCRIPT_MEM_POLL_OPCODE,
|
||||||
Width,
|
Width,
|
||||||
Address,
|
Address,
|
||||||
BitMask,
|
|
||||||
BitValue,
|
BitValue,
|
||||||
|
BitMask,
|
||||||
Delay
|
Delay
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user