mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +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.
|
||||
//
|
||||
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)) {
|
||||
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)) {
|
||||
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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user