]> xenbits.xensource.com Git - seabios.git/commitdiff
shadow: Rework bios copy code to prevent gcc array-bounds warning
authorKevin O'Connor <kevin@koconnor.net>
Sat, 10 Nov 2018 18:47:56 +0000 (13:47 -0500)
committerKevin O'Connor <kevin@koconnor.net>
Sat, 10 Nov 2018 18:47:56 +0000 (13:47 -0500)
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
src/fw/shadow.c

index 987eaf4ab205c36a82774fc3851d8d0f9af3e5d0..4c627a8f635c9d2566cb5eb84b5fca55c0d3d6aa 100644 (file)
@@ -173,9 +173,9 @@ qemu_reboot(void)
         return;
     // QEMU doesn't map 0xc0000-0xfffff back to the original rom on a
     // reset, so do that manually before invoking a hard reset.
-    void *cstart = VSYMBOL(code32flat_start), *cend = VSYMBOL(code32flat_end);
-    void *hrp = &HaveRunPost;
-    if (readl(hrp + BIOS_SRC_OFFSET)) {
+    void *flash = (void*)BIOS_SRC_OFFSET;
+    u32 hrp = (u32)&HaveRunPost;
+    if (readl(flash + hrp)) {
         // There isn't a pristine copy of the BIOS at 0xffff0000 to copy
         if (HaveRunPost == 3) {
             // In a reboot loop.  Try to shutdown the machine instead.
@@ -187,8 +187,9 @@ qemu_reboot(void)
     } else {
         // Copy the BIOS making sure to only reset HaveRunPost at end
         make_bios_writable();
-        memcpy(cstart, cstart + BIOS_SRC_OFFSET, hrp - cstart);
-        memcpy(hrp + 4, hrp + 4 + BIOS_SRC_OFFSET, cend - (hrp + 4));
+        u32 cstart = SYMBOL(code32flat_start), cend = SYMBOL(code32flat_end);
+        memcpy((void*)cstart, flash + cstart, hrp - cstart);
+        memcpy((void*)hrp + 4, flash + hrp + 4, cend - (hrp + 4));
         barrier();
         HaveRunPost = 0;
         barrier();