1*ca987d46SWarner Losh /* $FreeBSD$ */ 2*ca987d46SWarner Losh #ifndef _EFI_PART_H 3*ca987d46SWarner Losh #define _EFI_PART_H 4*ca987d46SWarner Losh 5*ca987d46SWarner Losh /*++ 6*ca987d46SWarner Losh 7*ca987d46SWarner Losh Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved 8*ca987d46SWarner Losh This software and associated documentation (if any) is furnished 9*ca987d46SWarner Losh under a license and may only be used or copied in accordance 10*ca987d46SWarner Losh with the terms of the license. Except as permitted by such 11*ca987d46SWarner Losh license, no part of this software or documentation may be 12*ca987d46SWarner Losh reproduced, stored in a retrieval system, or transmitted in any 13*ca987d46SWarner Losh form or by any means without the express written consent of 14*ca987d46SWarner Losh Intel Corporation. 15*ca987d46SWarner Losh 16*ca987d46SWarner Losh Module Name: 17*ca987d46SWarner Losh 18*ca987d46SWarner Losh efipart.h 19*ca987d46SWarner Losh 20*ca987d46SWarner Losh Abstract: 21*ca987d46SWarner Losh Info about disk partitions and Master Boot Records 22*ca987d46SWarner Losh 23*ca987d46SWarner Losh 24*ca987d46SWarner Losh 25*ca987d46SWarner Losh 26*ca987d46SWarner Losh Revision History 27*ca987d46SWarner Losh 28*ca987d46SWarner Losh --*/ 29*ca987d46SWarner Losh 30*ca987d46SWarner Losh // 31*ca987d46SWarner Losh // 32*ca987d46SWarner Losh // 33*ca987d46SWarner Losh 34*ca987d46SWarner Losh #define EFI_PARTITION 0xef 35*ca987d46SWarner Losh #define MBR_SIZE 512 36*ca987d46SWarner Losh 37*ca987d46SWarner Losh #pragma pack(1) 38*ca987d46SWarner Losh 39*ca987d46SWarner Losh typedef struct { 40*ca987d46SWarner Losh UINT8 BootIndicator; 41*ca987d46SWarner Losh UINT8 StartHead; 42*ca987d46SWarner Losh UINT8 StartSector; 43*ca987d46SWarner Losh UINT8 StartTrack; 44*ca987d46SWarner Losh UINT8 OSIndicator; 45*ca987d46SWarner Losh UINT8 EndHead; 46*ca987d46SWarner Losh UINT8 EndSector; 47*ca987d46SWarner Losh UINT8 EndTrack; 48*ca987d46SWarner Losh UINT8 StartingLBA[4]; 49*ca987d46SWarner Losh UINT8 SizeInLBA[4]; 50*ca987d46SWarner Losh } MBR_PARTITION_RECORD; 51*ca987d46SWarner Losh 52*ca987d46SWarner Losh #define EXTRACT_UINT32(D) (UINT32)(D[0] | (D[1] << 8) | (D[2] << 16) | (D[3] << 24)) 53*ca987d46SWarner Losh 54*ca987d46SWarner Losh #define MBR_SIGNATURE 0xaa55 55*ca987d46SWarner Losh #define MIN_MBR_DEVICE_SIZE 0x80000 56*ca987d46SWarner Losh #define MBR_ERRATA_PAD 0x40000 // 128 MB 57*ca987d46SWarner Losh 58*ca987d46SWarner Losh #define MAX_MBR_PARTITIONS 4 59*ca987d46SWarner Losh typedef struct { 60*ca987d46SWarner Losh UINT8 BootStrapCode[440]; 61*ca987d46SWarner Losh UINT8 UniqueMbrSignature[4]; 62*ca987d46SWarner Losh UINT8 Unknown[2]; 63*ca987d46SWarner Losh MBR_PARTITION_RECORD Partition[MAX_MBR_PARTITIONS]; 64*ca987d46SWarner Losh UINT16 Signature; 65*ca987d46SWarner Losh } MASTER_BOOT_RECORD; 66*ca987d46SWarner Losh #pragma pack() 67*ca987d46SWarner Losh 68*ca987d46SWarner Losh 69*ca987d46SWarner Losh #endif 70