]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg VirtioScsiDxe: Fix build with VS2010
authorjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 23 Oct 2012 22:16:14 +0000 (22:16 +0000)
committerjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 23 Oct 2012 22:16:14 +0000 (22:16 +0000)
Structures should not be directly assigned in EDK II
code, since this leads to different behaviours on various
compilers.

Instead, use ZeroMem to zero out the structures.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13878 6f19259b-4bc3-4df7-8a09-765794883524

OvmfPkg/VirtioScsiDxe/VirtioScsi.c

index 66f6d31d74b3be684d06c6cc843941d80d0b25b8..e58dd80df27e6406fd8ddbc8d2917e323e8f5e83 100644 (file)
@@ -413,19 +413,8 @@ VirtioScsiPassThru (
   volatile VIRTIO_SCSI_RESP Response;\r
   DESC_INDICES              Indices;\r
 \r
-  //\r
-  // Zero-initialization of Request & Response with "= { 0 };" doesn't build\r
-  // with gcc-4.4: "undefined reference to `memset'". Direct SetMem() is not\r
-  // allowed as it would cast away the volatile qualifier. Work it around.\r
-  //\r
-  union {\r
-    VIRTIO_SCSI_REQ  Request;\r
-    VIRTIO_SCSI_RESP Response;\r
-  } Zero;\r
-\r
-  SetMem (&Zero, sizeof Zero, 0x00);\r
-  Request  = Zero.Request;\r
-  Response = Zero.Response;\r
+  ZeroMem ((VOID*) &Request, sizeof (Request));\r
+  ZeroMem ((VOID*) &Response, sizeof (Response));\r
 \r
   Dev = VIRTIO_SCSI_FROM_PASS_THRU (This);\r
   CopyMem (&TargetValue, Target, sizeof TargetValue);\r