summaryrefslogtreecommitdiffstats
path: root/private/ntos/fw/duobase/mips/bldr.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--private/ntos/fw/duobase/mips/bldr.h258
1 files changed, 258 insertions, 0 deletions
diff --git a/private/ntos/fw/duobase/mips/bldr.h b/private/ntos/fw/duobase/mips/bldr.h
new file mode 100644
index 000000000..4af349b29
--- /dev/null
+++ b/private/ntos/fw/duobase/mips/bldr.h
@@ -0,0 +1,258 @@
+/*++
+
+Copyright (c) 1991 Microsoft Corporation
+
+Module Name:
+
+ bldr.h
+
+Abstract:
+
+ This module is the header file for the NT boot loader.
+
+Author:
+
+ David N. Cutler (davec) 10-May-1991
+
+Revision History:
+
+--*/
+
+#ifndef _BLDR_
+#define _BLDR_
+
+#include "ntos.h"
+#include "arccodes.h"
+#include "fatboot.h"
+
+
+//
+// Define boot file id.
+//
+
+#define BOOT_FILEID 2 // boot partition file id
+
+//
+// Define image types.
+//
+
+#define MIPS_IMAGE 0x162
+
+
+#define TARGET_IMAGE MIPS_IMAGE
+
+//
+// Define size of sector.
+//
+
+#define SECTOR_SIZE 512 // size of disk sector
+#define SECTOR_SHIFT 9 // sector shift value
+
+//
+// Define number of entries in file table.
+//
+
+#define BL_FILE_TABLE_SIZE 8
+
+//
+// Define size of memory allocation table.
+//
+
+#define BL_MEMORY_TABLE_SIZE 16
+
+//
+// Define buffer alignment macro.
+//
+
+#define ALIGN_BUFFER(Buffer) (PVOID) \
+ ((((ULONG)(Buffer) + KeGetDcacheFillSize() - 1)) & (~(KeGetDcacheFillSize() - 1)))
+
+
+typedef
+ARC_STATUS
+(*PRENAME_ROUTINE)(
+ IN ULONG FileId,
+ IN PCHAR NewName
+ );
+
+//
+// Device entry table structure.
+//
+
+typedef struct _BL_DEVICE_ENTRY_TABLE {
+ PARC_CLOSE_ROUTINE Close;
+ PARC_MOUNT_ROUTINE Mount;
+ PARC_OPEN_ROUTINE Open;
+ PARC_READ_ROUTINE Read;
+ PARC_READ_STATUS_ROUTINE GetReadStatus;
+ PARC_SEEK_ROUTINE Seek;
+ PARC_WRITE_ROUTINE Write;
+ PARC_GET_FILE_INFO_ROUTINE GetFileInformation;
+ PARC_SET_FILE_INFO_ROUTINE SetFileInformation;
+ PRENAME_ROUTINE Rename;
+ PARC_GET_DIRECTORY_ENTRY_ROUTINE GetDirectoryEntry;
+} BL_DEVICE_ENTRY_TABLE, *PBL_DEVICE_ENTRY_TABLE;
+
+//
+// Define partition context structure.
+//
+
+typedef struct _PARTITION_CONTEXT {
+ LARGE_INTEGER PartitionLength;
+ ULONG StartingSector;
+ ULONG EndingSector;
+ UCHAR DiskId;
+ UCHAR DeviceUnit;
+ UCHAR TargetId;
+ UCHAR PathId;
+ ULONG SectorShift;
+ ULONG Size;
+ struct _DEVICE_OBJECT *PortDeviceObject;
+} PARTITION_CONTEXT, *PPARTITION_CONTEXT;
+
+//
+// Define serial port context structure
+//
+typedef struct _SERIAL_CONTEXT {
+ ULONG PortBase;
+ ULONG PortNumber;
+} SERIAL_CONTEXT, *PSERIAL_CONTEXT;
+
+//
+// Define drive context structure (for x86 BIOS)
+//
+typedef struct _DRIVE_CONTEXT {
+ ULONG Drive;
+ ULONG Cylinders;
+ ULONG Heads;
+ ULONG Sectors;
+} DRIVE_CONTEXT, *PDRIVE_CONTEXT;
+
+//
+// Define Floppy context structure
+//
+typedef struct _FLOPPY_CONTEXT {
+ ULONG DriveType;
+ ULONG SectorsPerTrack;
+ UCHAR DiskId;
+} FLOPPY_CONTEXT, *PFLOPPY_CONTEXT;
+
+//
+// Define keyboard context structure
+//
+typedef struct _KEYBOARD_CONTEXT {
+ BOOLEAN ScanCodes;
+} KEYBOARD_CONTEXT, *PKEYBOARD_CONTEXT;
+
+//
+// Define Console context
+//
+typedef struct _CONSOLE_CONTEXT
+ {
+ ULONG ConsoleNumber;
+ } CONSOLE_CONTEXT, *PCONSOLE_CONTEXT;
+
+//
+// Define OMF header structure
+//
+typedef struct _OMF_HDR
+ {
+ UCHAR ID[4];
+ USHORT FwSize;
+ UCHAR ReservedZ1[2];
+ UCHAR ProductId[7];
+ UCHAR ReservedZ2;
+ ULONG FolderCount;
+ UCHAR EisaVersion;
+ UCHAR EisaRevision;
+ UCHAR FwVersion;
+ UCHAR FwRevision;
+ UCHAR ChecksumByte;
+ UCHAR ReservedA[3];
+ ULONG FolderDirectoryLink;
+ } OMF_HDR, *POMF_HDR;
+
+//
+// Define OMF directory entry structure
+//
+
+#define OMF_FILE_NAME_LEN 12 // 12 chars
+typedef struct _OMF_DIR_ENT
+ {
+ UCHAR FolderName[ OMF_FILE_NAME_LEN ];
+ UCHAR Reserved[2];
+ UCHAR FolderType;
+ UCHAR FolderChecksumByte;
+ ULONG FolderSize;
+ ULONG FolderLink;
+ } OMF_DIR_ENT, *POMF_DIR_ENT;
+
+//
+// Define OMF header file system context
+//
+typedef struct _OMF_HEADER_CONTEXT
+ {
+ ULONG FileId;
+ PULONG RomIndex;
+ PULONG RomRead;
+ OMF_HDR OmfHeader;
+ } OMF_HEADER_CONTEXT, *POMF_HEADER_CONTEXT;
+
+//
+// Define "OMF file" file system context
+//
+typedef struct _OMF_FILE_CONTEXT
+ {
+ OMF_DIR_ENT OmfDirEnt;
+ } OMF_FILE_CONTEXT, *POMF_FILE_CONTEXT;
+
+
+//
+// Define file table structure.
+//
+
+typedef struct _BL_FILE_FLAGS {
+ ULONG Open : 1;
+ ULONG Read : 1;
+ ULONG Write : 1;
+} BL_FILE_FLAGS, *PBL_FILE_FLAGS;
+
+#define MAXIMUM_FILE_NAME_LENGTH 32
+
+typedef struct _BL_FILE_TABLE {
+ BL_FILE_FLAGS Flags;
+ ULONG DeviceId;
+ LARGE_INTEGER Position;
+ PVOID StructureContext;
+ PBL_DEVICE_ENTRY_TABLE DeviceEntryTable;
+ UCHAR FileNameLength;
+ CHAR FileName[MAXIMUM_FILE_NAME_LENGTH];
+ union {
+ FAT_FILE_CONTEXT FatFileContext;
+ PARTITION_CONTEXT PartitionContext;
+ SERIAL_CONTEXT SerialContext;
+ DRIVE_CONTEXT DriveContext;
+ FLOPPY_CONTEXT FloppyContext;
+ KEYBOARD_CONTEXT KeyboardContext;
+ CONSOLE_CONTEXT ConsoleContext;
+ OMF_FILE_CONTEXT OmfFileContext;
+ OMF_HEADER_CONTEXT OmfHeaderContext;
+ } u;
+} BL_FILE_TABLE, *PBL_FILE_TABLE;
+
+// Define file structure recognition prototypes.
+//
+
+PBL_DEVICE_ENTRY_TABLE
+IsFatFileStructure (
+ IN ULONG DeviceId,
+ IN PVOID StructureContext
+ );
+
+//
+// Define external references.
+//
+
+extern BL_FILE_TABLE BlFileTable[BL_FILE_TABLE_SIZE];
+
+#endif // _BLDR_