]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Sample/Tools/Source/GenBootsector/fat.h
Add in the 1st version of ECP.
[mirror_edk2.git] / EdkCompatibilityPkg / Sample / Tools / Source / GenBootsector / fat.h
CommitLineData
3eb9473e 1/*++\r
2\r
3Copyright 2006, Intel Corporation \r
4All rights reserved. This program and the accompanying materials \r
5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12Module Name:\r
13\r
14 fat.h\r
15 \r
16Abstract:\r
17\r
18Revision History\r
19\r
20--*/\r
21\r
22#ifndef _FAT_BPB_H_\r
23#define _FAT_BPB_H_\r
24\r
25#include "Tiano.h"\r
26\r
27#pragma pack(1)\r
28\r
29typedef struct {\r
30 //\r
31 // Fat common field\r
32 //\r
33 UINT8 BS_jmpBoot[3];\r
34 CHAR8 BS_OEMName[8];\r
35 UINT16 BPB_BytsPerSec;\r
36 UINT8 BPB_SecPerClus;\r
37 UINT16 BPB_RsvdSecCnt;\r
38 UINT8 BPB_NumFATs;\r
39 UINT16 BPB_RootEntCnt;\r
40 UINT16 BPB_TotSec16;\r
41 UINT8 BPB_Media;\r
42 UINT16 BPB_FATSz16;\r
43 UINT16 BPB_SecPerTrk;\r
44 UINT16 BPB_NumHeads;\r
45 UINT32 BPB_HiddSec;\r
46 UINT32 BPB_TotSec32;\r
47\r
48 //\r
49 // Fat12/16 specific field\r
50 //\r
51 UINT8 BS_DrvNum;\r
52 UINT8 BS_Reserved1;\r
53 UINT8 BS_BootSig;\r
54 UINT32 BS_VolID;\r
55 CHAR8 BS_VolLab[11];\r
56 CHAR8 BS_FilSysType[8];\r
57\r
58 //\r
59 // Boot Code and Data\r
60 //\r
61 UINT8 Reserved[448];\r
62\r
63 //\r
64 // Fat common signature - 0xAA55\r
65 //\r
66 UINT16 Signature;\r
67} FAT12_16_BPB_STRUCT;\r
68\r
69typedef struct {\r
70 //\r
71 // Fat common field\r
72 //\r
73 UINT8 BS_jmpBoot[3];\r
74 CHAR8 BS_OEMName[8];\r
75 UINT16 BPB_BytsPerSec;\r
76 UINT8 BPB_SecPerClus;\r
77 UINT16 BPB_RsvdSecCnt;\r
78 UINT8 BPB_NumFATs;\r
79 UINT16 BPB_RootEntCnt;\r
80 UINT16 BPB_TotSec16;\r
81 UINT8 BPB_Media;\r
82 UINT16 BPB_FATSz16;\r
83 UINT16 BPB_SecPerTrk;\r
84 UINT16 BPB_NumHeads;\r
85 UINT32 BPB_HiddSec;\r
86 UINT32 BPB_TotSec32;\r
87\r
88 //\r
89 // Fat32 specific field\r
90 //\r
91 UINT32 BPB_FATSz32;\r
92 UINT16 BPB_ExtFlags;\r
93 UINT16 BPB_FSVer;\r
94 UINT32 BPB_RootClus;\r
95 UINT16 BPB_FSInfo;\r
96 UINT16 BPB_BkBootSec;\r
97 UINT8 BPB_Reserved[12];\r
98 UINT8 BS_DrvNum;\r
99 UINT8 BS_Reserved1;\r
100 UINT8 BS_BootSig;\r
101 UINT32 BS_VolID;\r
102 CHAR8 BS_VolLab[11];\r
103 CHAR8 BS_FilSysType[8];\r
104\r
105 //\r
106 // Boot Code and Data\r
107 //\r
108 UINT8 Reserved[420];\r
109\r
110 //\r
111 // Fat common signature - 0xAA55\r
112 //\r
113 UINT16 Signature;\r
114} FAT32_BPB_STRUCT;\r
115\r
116typedef union {\r
117 FAT12_16_BPB_STRUCT Fat12_16;\r
118 FAT32_BPB_STRUCT Fat32;\r
119} FAT_BPB_STRUCT;\r
120\r
121typedef enum {\r
122 FatTypeUnknown,\r
123 FatTypeFat12,\r
124 FatTypeFat16,\r
125 FatTypeFat32,\r
126 FatTypeMax\r
127} FAT_TYPE;\r
128\r
129typedef struct {\r
130 CHAR8 DIR_Name[11];\r
131 UINT8 DIR_Attr;\r
132 UINT8 DIR_NTRes;\r
133 UINT8 DIR_CrtTimeTenth;\r
134 UINT16 DIR_CrtTime;\r
135 UINT16 DIR_CrtDate;\r
136 UINT16 DIR_LstAccDate;\r
137 UINT16 DIR_FstClusHI;\r
138 UINT16 DIR_WrtTime;\r
139 UINT16 DIR_WrtDate;\r
140 UINT16 DIR_FstClusLO;\r
141 UINT32 DIR_FileSize;\r
142} FAT_DIRECTORY_ENTRY;\r
143\r
144#pragma pack()\r
145\r
146#define FAT_MAX_FAT12_CLUSTER 0xFF5\r
147#define FAT_MAX_FAT16_CLUSTER 0xFFF5\r
148\r
149#define FAT_BS_SIGNATURE 0xAA55\r
150#define FAT_BS_BOOTSIG 0x29\r
151#define FAT_BS_JMP1 0xEB\r
152#define FAT_BS_JMP2 0xE9\r
153#define FAT_FILSYSTYPE "FAT "\r
154#define FAT12_FILSYSTYPE "FAT12 "\r
155#define FAT16_FILSYSTYPE "FAT16 "\r
156#define FAT32_FILSYSTYPE "FAT32 "\r
157\r
158#endif\r