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