From 9d52e438f991e1d7667df6a5eead2e240b0164eb Mon Sep 17 00:00:00 2001 From: Shao Miller Date: Tue, 9 Mar 2010 18:24:41 -0500 Subject: [PATCH] memdisk: Force 32-bit mBFT "safe hook" pointer field When mstructs.h is used by MDISKCHK.COM, pointers have a 16-bit size and thus the mBFT structure sizeof() is smaller under OpenWatcom. We now union this pointer member with a uint32_t to force the field to at least 32 bits. There is another pointer in this header file which is already unioned with a uint32_t, due to that field's dual-purpose. That field is fine under OpenWatcom. Signed-off-by: Shao Miller --- memdisk/mstructs.h | 5 ++++- memdisk/setup.c | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/memdisk/mstructs.h b/memdisk/mstructs.h index 47dffe9..e060ace 100644 --- a/memdisk/mstructs.h +++ b/memdisk/mstructs.h @@ -106,7 +106,10 @@ struct mdi { MEMDISK_PACKED_PREFIX struct mBFT { struct acpi_description_header acpi; - struct safe_hook *safe_hook; /* "Safe hook" physical address */ + union { + struct safe_hook *ptr; + uint32_t phys_addr; + } safe_hook; /* "Safe hook" physical address */ struct mdi mdi; } MEMDISK_PACKED_POSTFIX; diff --git a/memdisk/setup.c b/memdisk/setup.c index a9ae63d..ffaa2c6 100644 --- a/memdisk/setup.c +++ b/memdisk/setup.c @@ -1132,7 +1132,7 @@ void setup(const struct real_mode_args *rm_args_ptr) hptr->safe_hook.mBFT.ptr->acpi.signature[1] = 'B'; hptr->safe_hook.mBFT.ptr->acpi.signature[2] = 'F'; hptr->safe_hook.mBFT.ptr->acpi.signature[3] = 'T'; - hptr->safe_hook.mBFT.ptr->safe_hook = &hptr->safe_hook; + hptr->safe_hook.mBFT.ptr->safe_hook.ptr = &hptr->safe_hook; hptr->safe_hook.mBFT.ptr->acpi.checksum = -checksum_buf(hptr->safe_hook.mBFT.ptr, hptr->safe_hook.mBFT.ptr->acpi.length); -- 2.7.4