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.