diff options
author | jljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524> | 2012-10-14 21:17:20 +0000 |
---|---|---|
committer | jljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524> | 2012-10-14 21:17:20 +0000 |
commit | 2f03f796a40769d7390d0a9e5da70424e795afdc (patch) | |
tree | 197526e13650caae511b2f1032cbc896112ff044 /OvmfPkg/VirtioBlkDxe | |
parent | 9de0355b1ad7c8afaaf1dc0545438c9a6659d869 (diff) | |
download | edk2-2f03f796a40769d7390d0a9e5da70424e795afdc.tar.gz edk2-2f03f796a40769d7390d0a9e5da70424e795afdc.tar.bz2 edk2-2f03f796a40769d7390d0a9e5da70424e795afdc.zip |
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
Diffstat (limited to 'OvmfPkg/VirtioBlkDxe')
-rw-r--r-- | OvmfPkg/VirtioBlkDxe/VirtioBlk.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/OvmfPkg/VirtioBlkDxe/VirtioBlk.c b/OvmfPkg/VirtioBlkDxe/VirtioBlk.c index 86041f0caf..1ac36cd17b 100644 --- a/OvmfPkg/VirtioBlkDxe/VirtioBlk.c +++ b/OvmfPkg/VirtioBlkDxe/VirtioBlk.c @@ -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:
|