summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2010-04-01 11:14:56 -0700
committerH. Peter Anvin <hpa@zytor.com>2010-04-01 11:14:56 -0700
commit4f7bd0d7a7b885e5bb6e964151ce663446715044 (patch)
tree8a091726938eca607e66ab81539b50fd60ae155e
parent234f4a30ac426b535946325fa4125425e152e473 (diff)
parent01fc061d9851463296347d3834185ea5c5618a68 (diff)
downloadsyslinux-4f7bd0d7a7b885e5bb6e964151ce663446715044.tar.gz
Merge commit 'syslinux-3.86' into pathbasedsyslinux-4.00-pre38
Resolved Conflicts: core/cpuinit.inc Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r--NEWS1
-rw-r--r--com32/modules/cpuid.c6
-rw-r--r--memdisk/setup.c29
3 files changed, 19 insertions, 17 deletions
diff --git a/NEWS b/NEWS
index 1bf7480d..83761e22 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,7 @@ Changes in 3.86:
cause the core to believe the system was idle.
* MEMDISK: fix MBR detection when used with a DOSEMU header or
an offset.
+ * MEMDISK: generate the mBFT checksum correctly.
Changes in 3.85:
* gPXELINUX: updated to gPXE 1.0.0. gPXELINUX can now do NBP
diff --git a/com32/modules/cpuid.c b/com32/modules/cpuid.c
index 4758fbad..62a756e5 100644
--- a/com32/modules/cpuid.c
+++ b/com32/modules/cpuid.c
@@ -52,9 +52,9 @@ int main(int argc, char *argv[])
cpuid_count(leaf, counter, &eax, &ebx, &ecx, &edx);
dump_reg("eax", eax);
- dump_reg("eax", ebx);
- dump_reg("eax", ecx);
- dump_reg("eax", edx);
+ dump_reg("ebx", ebx);
+ dump_reg("ecx", ecx);
+ dump_reg("edx", edx);
return 0;
}
diff --git a/memdisk/setup.c b/memdisk/setup.c
index cec25ad3..db1c4bcf 100644
--- a/memdisk/setup.c
+++ b/memdisk/setup.c
@@ -1,8 +1,9 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2001-2009 H. Peter Anvin - All Rights Reserved
- * Copyright 2009 Intel Corporation; author: H. Peter Anvin
- * Portions copyright 2009 Shao Miller [El Torito code, mBFT, safe hook]
+ * Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
+ * Portions copyright 2009-2010 Shao Miller
+ * [El Torito code, mBFT, "safe hook"]
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -1212,18 +1213,6 @@ void setup(const struct real_mode_args *rm_args_ptr)
/* Re-fill the "safe hook" mBFT field with the physical address */
safe_hook->mBFT += (uint32_t)hptr;
- /* Complete the mBFT */
- {
- struct mBFT *mBFT = (struct mBFT *)safe_hook->mBFT;
-
- mBFT->acpi.signature[0] = 'm'; /* "mBFT" */
- mBFT->acpi.signature[1] = 'B';
- mBFT->acpi.signature[2] = 'F';
- mBFT->acpi.signature[3] = 'T';
- mBFT->safe_hook = (uint32_t)safe_hook;
- mBFT->acpi.checksum = -checksum_buf(mBFT, mBFT->acpi.length);
- }
-
/* Update various BIOS magic data areas (gotta love this shit) */
if (geometry->driveno & 0x80) {
@@ -1257,6 +1246,18 @@ void setup(const struct real_mode_args *rm_args_ptr)
}
}
+ /* Complete the mBFT */
+ {
+ struct mBFT *mBFT = (struct mBFT *)safe_hook->mBFT;
+
+ mBFT->acpi.signature[0] = 'm'; /* "mBFT" */
+ mBFT->acpi.signature[1] = 'B';
+ mBFT->acpi.signature[2] = 'F';
+ mBFT->acpi.signature[3] = 'T';
+ mBFT->safe_hook = (uint32_t)safe_hook;
+ mBFT->acpi.checksum = -checksum_buf(mBFT, mBFT->acpi.length);
+ }
+
/* Install the interrupt handlers */
printf("old: int13 = %08x int15 = %08x int1e = %08x\n",
rdz_32(BIOS_INT13), rdz_32(BIOS_INT15), rdz_32(BIOS_INT1E));