Files
openbios/packages/mac-parts.h
cdrom - deblocker - disk-label - (misc-files | sun-parts | pc-parts | mac-parts) 7fc4e304c3 As documented on the mailing lists, change the interposition order of the disk packages from:
cdrom -> deblocker -> disk-label -> (misc-files | sun-parts | pc-parts | mac-parts) 

to:

cdrom -> deblocker -> disk-label -> (sun-parts | pc-parts | mac-parts) -> misc-files 

This makes the overall code much simpler, since instead of passing get-info structures between the different layers to work out 
the current device offset, each package can simply maintain its own offsets and bubble them back up to the parent.

There are also many, many bugfixes present is patch, some of which are given below:

- Add debugging in /packages/misc-files, augment debugging in all other disk packages
- Fix alignment issue in /packages/pc-parts so it works correctly on strictly align archs, e.g. SPARC64
- Fix parsing of [<id>,][filename] arguments to load (in preparation for next patch set)
- Fix byte-swapping issues in /packages/mac-parts (in theory it should now work regardless of endian)




git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@791 f158a5a8-5612-0410-a976-696ce0be7e32
2010-06-08 20:59:08 +00:00

89 lines
2.4 KiB
C

/*
* Creation Date: <1999/07/06 15:45:12 samuel>
* Time-stamp: <2002/10/20 16:31:48 samuel>
*
* <partition_table.h>
*
* Headers describing the partition table
*
* Copyright (C) 1999, 2002 Samuel Rydh (samuel@ibrium.se)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation
*
*/
#ifndef _H_PARTITION_TABLE
#define _H_PARTITION_TABLE
/* This information is based upon IM vol V. */
#define DESC_MAP_SIGNATURE 0x4552
#define DESC_PART_SIGNATURE 0x504d
enum {
kPartitionAUXIsValid = 0x00000001,
kPartitionAUXIsAllocated = 0x00000002,
kPartitionAUXIsInUse = 0x00000004,
kPartitionAUXIsBootValid = 0x00000008,
kPartitionAUXIsReadable = 0x00000010,
kPartitionAUXIsWriteable = 0x00000020,
kPartitionAUXIsBootCodePositionIndependent = 0x00000040,
kPartitionISMountedAtStartup = 0x40000000,
kPartitionIsStartup = 0x80000000,
kPartitionIsChainCompatible = 0x00000100,
kPartitionIsRealDeviceDriver = 0x00000200,
kPartitionCanChainToNext = 0x00000400,
};
typedef struct {
u32 ddBlock; /* first block of driver */
u16 ddSize; /* driver size in blocks */
s16 ddType; /* 1 & -1 for SCSI */
} driver_entry_t;
typedef struct { /* Block 0 of a device */
u16 sbSig; /* always 0x4552 */
u16 sbBlockSize; /* 512 */
s32 sbBlkCount; /* #blocks on device */
u16 sbDevType; /* 0 */
u16 sbDevID; /* 0 */
u32 sbData; /* 0 */
s16 sbDrvrCount; /* #driver descriptors */
/* driver entries goes here */
driver_entry_t drivers[61] __attribute__ ((packed));
u16 filler1;
u32 filler2;
} desc_map_t;
typedef struct { /* Partition descriptor */
u16 pmSig; /* always 0x504d 'PM' */
u16 pmSigPad; /* 0 */
u32 pmMapBlkCnt; /* #blocks in partition map */
u32 pmPyPartStart; /* first physical block of part. */
u32 pmPartBlkCnt; /* #blocks in partition */
char pmPartName[32]; /* partition name */
char pmPartType[32]; /* partition type */
/* these fields may or may not be used */
u32 pmLgDataStart;
u32 pmDataCnt;
u32 pmPartStatus;
u32 pmLgBootStart;
u32 pmBootSize;
u32 pmBootLoad;
u32 pmBootLoad2;
u32 pmBootEntry;
u32 pmBootEntry2;
u32 pmBootCksum;
char pmProcessor[16];
char filler[376]; /* might contain extra information */
} part_entry_t;
#endif /* _H_PARTITION_TABLE */