From 4a30637d38117f2a7b55226f939189c198d6f7f4 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Wed, 22 Sep 2010 21:39:01 +0100 Subject: [PATCH] [int13] Include disk signature in debugging output The disk signature is used by some OSes (notably Windows) to identify the boot disk, so it's useful debugging information to have. Signed-off-by: Michael Brown --- src/arch/i386/include/int13.h | 9 +++++++-- src/arch/i386/interface/pcbios/int13.c | 2 ++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/arch/i386/include/int13.h b/src/arch/i386/include/int13.h index 06755724..a14ebb2e 100644 --- a/src/arch/i386/include/int13.h +++ b/src/arch/i386/include/int13.h @@ -249,11 +249,16 @@ struct partition_table_entry { /** A Master Boot Record */ struct master_boot_record { - uint8_t pad[446]; + /** Code area */ + uint8_t code[440]; + /** Disk signature */ + uint32_t signature; + /** Padding */ + uint8_t pad[2]; /** Partition table */ struct partition_table_entry partitions[4]; /** 0x55aa MBR signature */ - uint16_t signature; + uint16_t magic; } __attribute__ (( packed )); /** Use natural BIOS drive number */ diff --git a/src/arch/i386/interface/pcbios/int13.c b/src/arch/i386/interface/pcbios/int13.c index e0acc07c..e13a4223 100644 --- a/src/arch/i386/interface/pcbios/int13.c +++ b/src/arch/i386/interface/pcbios/int13.c @@ -368,6 +368,8 @@ static int int13_guess_geometry ( struct int13_drive *int13 ) { int13->drive, strerror ( rc ) ); return rc; } + DBGC ( int13, "INT13 drive %02x has signature %08x\n", + int13->drive, mbr.signature ); /* Scan through partition table and modify guesses for heads * and sectors_per_track if we find any used partitions.