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 <shao.miller@yrdsb.edu.on.ca>
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;
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);