mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-27 07:34:06 +02:00
MdeModulePkg: ConSplitterDxe: use U64 mult/div wrappers in AbsPtr scaling
This is an emergency fix for UINT64 multiplications and divisions not being done with the right BaseLib functions -- they break Ia32 builds. Fixes: 30ed3422ab2de03abf7c1433ebb482f6e5e16f45 Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
parent
2939c778a3
commit
25896aa391
@ -4156,13 +4156,34 @@ ConSplitterAbsolutePointerGetState (
|
|||||||
// Rescale to Con Splitter virtual Absolute Pointer's resolution.
|
// Rescale to Con Splitter virtual Absolute Pointer's resolution.
|
||||||
//
|
//
|
||||||
if (!(MinX == 0 && MaxX == 0)) {
|
if (!(MinX == 0 && MaxX == 0)) {
|
||||||
State->CurrentX = VirtualMinX + (CurrentState.CurrentX * (VirtualMaxX - VirtualMinX)) / (MaxX - MinX);
|
State->CurrentX = VirtualMinX + DivU64x64Remainder (
|
||||||
|
MultU64x64 (
|
||||||
|
CurrentState.CurrentX,
|
||||||
|
VirtualMaxX - VirtualMinX
|
||||||
|
),
|
||||||
|
MaxX - MinX,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if (!(MinY == 0 && MaxY == 0)) {
|
if (!(MinY == 0 && MaxY == 0)) {
|
||||||
State->CurrentY = VirtualMinY + (CurrentState.CurrentY * (VirtualMaxY - VirtualMinY)) / (MaxY - MinY);
|
State->CurrentY = VirtualMinY + DivU64x64Remainder (
|
||||||
|
MultU64x64 (
|
||||||
|
CurrentState.CurrentY,
|
||||||
|
VirtualMaxY - VirtualMinY
|
||||||
|
),
|
||||||
|
MaxY - MinY,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if (!(MinZ == 0 && MaxZ == 0)) {
|
if (!(MinZ == 0 && MaxZ == 0)) {
|
||||||
State->CurrentZ = VirtualMinZ + (CurrentState.CurrentZ * (VirtualMaxZ - VirtualMinZ)) / (MaxZ - MinZ);
|
State->CurrentZ = VirtualMinZ + DivU64x64Remainder (
|
||||||
|
MultU64x64 (
|
||||||
|
CurrentState.CurrentZ,
|
||||||
|
VirtualMaxZ - VirtualMinZ
|
||||||
|
),
|
||||||
|
MaxZ - MinZ,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (Status == EFI_DEVICE_ERROR) {
|
} else if (Status == EFI_DEVICE_ERROR) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user