xbox-kernel/private/ntos/inc/init.h
2020-09-30 17:17:25 +02:00

153 lines
3.9 KiB
C

/*++ BUILD Version: 0002 // Increment this if a change has global effects
Copyright (c) 1989 Microsoft Corporation
Module Name:
init.h
Abstract:
Header file for the INIT subcomponent of NTOS
Author:
Steve Wood (stevewo) 31-Mar-1989
Revision History:
--*/
#ifndef _INIT_
#define _INIT_
//
// Define xbox kernel version structure.
//
typedef struct _XBOX_KRNL_VERSION {
USHORT Major;
USHORT Minor;
USHORT Build;
USHORT Qfe;
} XBOX_KRNL_VERSION, *PXBOX_KRNL_VERSION;
#if !defined(_NTSYSTEM_)
extern const PXBOX_KRNL_VERSION XboxKrnlVersion;
#else
extern const XBOX_KRNL_VERSION XboxKrnlVersion;
#endif
//
// Information about the current hardware that the system is running on
//
typedef struct _XBOX_HARDWARE_INFO {
ULONG Flags;
UCHAR GpuRevision;
UCHAR McpRevision;
UCHAR reserved[2];
} XBOX_HARDWARE_INFO;
#if !defined(_NTSYSTEM_)
extern const XBOX_HARDWARE_INFO* XboxHardwareInfo;
#else
extern XBOX_HARDWARE_INFO XboxHardwareInfo;
#endif
//
// Define XboxHardwareFlags - a list of
// flags indicating hardware differences
// the title libraries must know about.
//
#define XBOX_HW_FLAG_INTERNAL_USB_HUB 0x00000001
#define XBOX_HW_FLAG_DEVKIT_KERNEL 0x00000002
#define XBOX_480P_MACROVISION_ENABLED 0x00000004
#define XBOX_HW_FLAG_ARCADE 0x00000008
//
// Boot flags
//
extern ULONG XboxBootFlags;
#define XBOX_BOOTFLAG_SHADOW 0x00000001
#define XBOX_BOOTFLAG_HDBOOT 0x00000002
#define XBOX_BOOTFLAG_CDBOOT 0x00000004
#define XBOX_BOOTFLAG_NONSECUREMODE 0x00000008
#define XBOX_BOOTFLAG_SHORTANIMATION 0x00000010
#define XBOX_BOOTFLAG_DISPLAYFATALERROR 0x00000020
#define XBOX_BOOTFLAG_TRAYEJECT 0x00000040
#define XBOX_BOOTFLAG_DASHBOARDBOOT 0x00000080
//
// Define the fatal error codes. The bitmap of UEMs stored
// in EEPROM starts at HDD_NOT_LOCKED being at bit zero.
// CORE_DIGITAL and BAD_RAM are values used by the SMC.
//
#define FATAL_ERROR_NONE 0x00
#define FATAL_ERROR_CORE_DIGITAL 0x01
#define FATAL_ERROR_BAD_EEPROM 0x02
#define FATAL_ERROR_UNUSED1 0x03
#define FATAL_ERROR_BAD_RAM 0x04
#define FATAL_ERROR_HDD_NOT_LOCKED 0x05
#define FATAL_ERROR_HDD_CANNOT_UNLOCK 0x06
#define FATAL_ERROR_HDD_TIMEOUT 0x07
#define FATAL_ERROR_HDD_NOT_FOUND 0x08
#define FATAL_ERROR_HDD_BAD_CONFIG 0x09
#define FATAL_ERROR_DVD_TIMEOUT 0x0A
#define FATAL_ERROR_DVD_NOT_FOUND 0x0B
#define FATAL_ERROR_DVD_BAD_CONFIG 0x0C
#define FATAL_ERROR_XBE_DASH_GENERIC 0x0D
#define FATAL_ERROR_XBE_DASH_ERROR 0x0E
#define FATAL_ERROR_UNUSED2 0x0F
#define FATAL_ERROR_XBE_DASH_SETTINGS 0x10
#define FATAL_ERROR_UNUSED3 0x11
#define FATAL_ERROR_UNUSED4 0x12
#define FATAL_ERROR_UNUSED5 0x13
#define FATAL_ERROR_XBE_DASH_X2_PASS 0x14
#define FATAL_ERROR_REBOOT_ROUTINE 0x15
#define FATAL_ERROR_RESERVED 0xFF
VOID
KiSystemStartup(
VOID
);
VOID
Phase1Initialization(
IN PVOID Context
);
DECLSPEC_NORETURN
VOID
ExDisplayFatalError(
IN ULONG ErrorCode
);
//
// Various Xbox encryption keys and game region
//
#define XBOX_KEY_LENGTH 16
typedef UCHAR XBOX_KEY_DATA[XBOX_KEY_LENGTH];
extern XBOX_KEY_DATA XboxCERTKey;
extern ULONG XboxGameRegion;
#if !defined(_NTSYSTEM_)
extern const XBOX_KEY_DATA* XboxEEPROMKey;
extern const XBOX_KEY_DATA* XboxHDKey;
extern const XBOX_KEY_DATA* XboxLANKey;
extern const XBOX_KEY_DATA* XboxSignatureKey;
extern const XBOX_KEY_DATA* XboxAlternateSignatureKeys[];
#else
extern XBOX_KEY_DATA XboxEEPROMKey;
extern XBOX_KEY_DATA XboxHDKey;
extern XBOX_KEY_DATA XboxLANKey;
extern XBOX_KEY_DATA XboxSignatureKey;
extern XBOX_KEY_DATA XboxAlternateSignatureKeys[];
#endif
#endif // _INIT_