summaryrefslogtreecommitdiff
path: root/memdisk/setup.c
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@linux.intel.com>2010-06-21 17:29:11 -0700
committerH. Peter Anvin <hpa@linux.intel.com>2010-06-21 17:29:11 -0700
commit7556a891b2f28617f6c95aa271aeaf29883d0981 (patch)
tree703e50c4970c9e64f2e11f76e81001af8fb7d33e /memdisk/setup.c
parent3df42588472b07c54b9de11a7e118d6f3f4f6c41 (diff)
downloadsyslinux-7556a891b2f28617f6c95aa271aeaf29883d0981.tar.gz
memdisk: make mstructs.h includable from Linux
Make mstructs.h includable from a Linux utility. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'memdisk/setup.c')
-rw-r--r--memdisk/setup.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/memdisk/setup.c b/memdisk/setup.c
index ffaa2c66..20b48c47 100644
--- a/memdisk/setup.c
+++ b/memdisk/setup.c
@@ -718,6 +718,7 @@ void setup(const struct real_mode_args *rm_args_ptr)
char *memdisk_hook;
struct memdisk_header *hptr;
struct patch_area *pptr;
+ struct mBFT *mbft;
uint16_t driverseg;
uint32_t driverptr, driveraddr;
uint16_t dosmem_k;
@@ -1090,8 +1091,8 @@ void setup(const struct real_mode_args *rm_args_ptr)
hptr->safe_hook.old_hook.uint32 = pptr->mdi.oldint13.uint32;
/* Re-fill the "safe hook" mBFT field with the physical address */
- hptr->safe_hook.mBFT.ptr =
- (struct mBFT *)(((const char *)hptr) + hptr->safe_hook.mBFT.offset);
+ mbft = (struct mBFT *)(((const char *)hptr) + hptr->safe_hook.mbft);
+ hptr->safe_hook.mbft = (size_t)mbft;
/* Update various BIOS magic data areas (gotta love this shit) */
@@ -1128,14 +1129,12 @@ void setup(const struct real_mode_args *rm_args_ptr)
}
/* Complete the mBFT */
- hptr->safe_hook.mBFT.ptr->acpi.signature[0] = 'm'; /* "mBFT" */
- 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.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);
+ mbft->acpi.signature[0] = 'm'; /* "mBFT" */
+ mbft->acpi.signature[1] = 'B';
+ mbft->acpi.signature[2] = 'F';
+ mbft->acpi.signature[3] = 'T';
+ mbft->safe_hook = (size_t)&hptr->safe_hook;
+ mbft->acpi.checksum = -checksum_buf(mbft, mbft->acpi.length);
/* Install the interrupt handlers */
printf("old: int13 = %08x int15 = %08x int1e = %08x\n",