mirror of https://github.com/acidanthera/audk.git
OvmfPkg: VirtioBlkDxe: fix div & mod of 64-bit dividends on IA32/gcc-4.4
OvmfPkg/VirtioBlkDxe/VirtioBlk.c:667: undefined reference to `__umoddi3' OvmfPkg/VirtioBlkDxe/VirtioBlk.c:750: undefined reference to `__udivdi3' These operations would come from libgcc in the IA32 build, but OVMF does not link against libgcc. Regression-tested the X64 build with Fedora 18 Alpha XFCE and Windows 8 Consumer Preview guests. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13846 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
9de0355b1a
commit
2f03f796a4
|
@ -664,7 +664,7 @@ VirtioBlkInit (
|
|||
goto Failed;
|
||||
}
|
||||
if (BlockSize == 0 || BlockSize % 512 != 0 ||
|
||||
NumSectors % (BlockSize / 512) != 0) {
|
||||
ModU64x32 (NumSectors, BlockSize / 512) != 0) {
|
||||
//
|
||||
// We can only handle a logical block consisting of whole sectors,
|
||||
// and only a disk composed of whole logical blocks.
|
||||
|
@ -747,7 +747,8 @@ VirtioBlkInit (
|
|||
Dev->BlockIoMedia.WriteCaching = !!(Features & VIRTIO_BLK_F_FLUSH);
|
||||
Dev->BlockIoMedia.BlockSize = BlockSize;
|
||||
Dev->BlockIoMedia.IoAlign = 0;
|
||||
Dev->BlockIoMedia.LastBlock = NumSectors / (BlockSize / 512) - 1;
|
||||
Dev->BlockIoMedia.LastBlock = DivU64x32 (NumSectors,
|
||||
BlockSize / 512) - 1;
|
||||
return EFI_SUCCESS;
|
||||
|
||||
ReleaseQueue:
|
||||
|
|
Loading…
Reference in New Issue