xref: /freebsd/stand/efi/include/efipart.h (revision ca987d4641cdcd7f27e153db17c5bf064934faf5)
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