721 lines
13 KiB
C
721 lines
13 KiB
C
|
/*++
|
|||
|
|
|||
|
Copyright (c) 1991 Microsoft Corporation
|
|||
|
Copyright (c) 1993 Digital Equipment Corporation
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
fwp.h
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
This module contains extensions to the firmware.h and alpharefs.h files.
|
|||
|
|
|||
|
N.B. This is *not* a private file. Although "p" versions of
|
|||
|
.h files are normally private in the source pool, fwp.h is included
|
|||
|
by other builds.
|
|||
|
|
|||
|
This version is for use at Microsoft, to enable bldr files to
|
|||
|
build correctly. (scsiboot.c, scsidisk.c)
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
David M. Robinson (davidro) 29-Aug-1991
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
15-April-1992 John DeRosa [DEC]
|
|||
|
|
|||
|
Modified for Alpha.
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
#ifndef _FWP_
|
|||
|
#define _FWP_
|
|||
|
|
|||
|
|
|||
|
#include "bldr.h"
|
|||
|
#include "firmware.h"
|
|||
|
#include "iodevice.h"
|
|||
|
#include "vendor.h"
|
|||
|
#include "debug.h"
|
|||
|
#include "fwcallbk.h"
|
|||
|
|
|||
|
//
|
|||
|
// Current version and revision numbers.
|
|||
|
//
|
|||
|
|
|||
|
#define ARC_VERSION 1
|
|||
|
#define ARC_REVISION 2
|
|||
|
|
|||
|
//
|
|||
|
// In the running system, this is held in the PCR. We hardcode it
|
|||
|
// for Alpha/Jensen Firmware.
|
|||
|
//
|
|||
|
|
|||
|
#undef KeGetDcacheFillSize
|
|||
|
#define KeGetDcacheFillSize() 32L
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
// Needed by conftest.c, jxboot,c jnsetcfg.c
|
|||
|
//
|
|||
|
|
|||
|
#define MAXIMUM_DEVICE_SPECIFIC_DATA 32
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
// Define the ROM types supported by this code package.
|
|||
|
//
|
|||
|
|
|||
|
typedef enum _ROM_TYPE {
|
|||
|
I28F008SA,
|
|||
|
Am29F010,
|
|||
|
InvalidROM
|
|||
|
} ROM_TYPE, *PROM_TYPE;
|
|||
|
|
|||
|
//
|
|||
|
// Masks used by FwSystemConsistencyCheck for returning machine state.
|
|||
|
//
|
|||
|
// These are divided into "red" and "yellow" problems. Red problems
|
|||
|
// will prevent the system from booting properly. Yellow problems may
|
|||
|
// or may not prevent the system from booting properly.
|
|||
|
//
|
|||
|
// The order of the red and yellow problem bits must match the
|
|||
|
// order of SetupMenuChoices[] and MachineProblemAreas[]. This
|
|||
|
// makes the bit-shifting and bit-peeling easier in jnsetset.c
|
|||
|
// and jxboot.c.
|
|||
|
//
|
|||
|
// Firmware code assumes that the right 16 bits are red problems, and the
|
|||
|
// left 16 bits are yellow problems.
|
|||
|
//
|
|||
|
|
|||
|
#define FWP_MACHINE_PROBLEMS_NOPROBLEMS 0 // No problems
|
|||
|
|
|||
|
//
|
|||
|
// Red problems.
|
|||
|
//
|
|||
|
// These will, in all likelyhood, prevent a good boot.
|
|||
|
// If these are set, we will not allow an NT installation.
|
|||
|
// If any of these besides the ECU bit are set, we will not auto-run the ECU.
|
|||
|
//
|
|||
|
|
|||
|
#define FWP_MACHINE_PROBLEMS_TIME 0x01 // System time
|
|||
|
#define FWP_MACHINE_PROBLEMS_EV 0x02 // Environment variables
|
|||
|
#define FWP_MACHINE_PROBLEMS_CDS 0x04 // CDS tree
|
|||
|
#define FWP_MACHINE_PROBLEMS_MPRESERVEDBOOT 0x08 // Reserved
|
|||
|
#define FWP_MACHINE_PROBLEMS_MPRESERVEDR1 0x10 // Unused
|
|||
|
#define FWP_MACHINE_PROBLEMS_MPRESERVEDR2 0x20 // Unused
|
|||
|
#define FWP_MACHINE_PROBLEMS_ECU 0x40 // EISA config. data
|
|||
|
|
|||
|
#define FWP_MACHINE_PROBLEMS_RED 0xffff // Some Red bit is set
|
|||
|
|
|||
|
//
|
|||
|
// Yellow problems.
|
|||
|
//
|
|||
|
// These may not cause any difficulty in booting.
|
|||
|
// We will allow NT to be installed even if these are set.
|
|||
|
// We will auto-run the ECU even if any of these are set.
|
|||
|
//
|
|||
|
|
|||
|
#define FWP_MACHINE_PROBLEMS_MPRESERVEDTIME 0x010000 // Reserved
|
|||
|
#define FWP_MACHINE_PROBLEMS_MPRESERVEDEV 0x020000 // Reserved
|
|||
|
#define FWP_MACHINE_PROBLEMS_MPRESERVEDCDS 0x040000 // Reserved
|
|||
|
#define FWP_MACHINE_PROBLEMS_BOOT 0x080000 // Boot selections
|
|||
|
#define FWP_MACHINE_PROBLEMS_MPRESERVEDY1 0x100000 // Unused
|
|||
|
#define FWP_MACHINE_PROBLEMS_MPRESERVEDY2 0x200000 // Unused
|
|||
|
#define FWP_MACHINE_PROBLEMS_MPRESERVEDECU 0x400000 // Reserved
|
|||
|
|
|||
|
#define FWP_MACHINE_PROBLEMS_YELLOW 0xffff0000 // Some Yellow bit is set
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
// These control FwSystemConsistencyCheck.
|
|||
|
//
|
|||
|
|
|||
|
#define FWSCC_STALL_RETURN 0
|
|||
|
#define FWSCC_KEY_INPUT_THEN_RETURN 1
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
// Define the Lookup table. At initialization, the driver must fill this table
|
|||
|
// with the device pathnames it can handle.
|
|||
|
//
|
|||
|
|
|||
|
typedef struct _DRIVER_LOOKUP_ENTRY {
|
|||
|
PCHAR DevicePath;
|
|||
|
PBL_DEVICE_ENTRY_TABLE DispatchTable;
|
|||
|
} DRIVER_LOOKUP_ENTRY, *PDRIVER_LOOKUP_ENTRY;
|
|||
|
|
|||
|
#define SIZE_OF_LOOKUP_TABLE BL_FILE_TABLE_SIZE
|
|||
|
|
|||
|
extern DRIVER_LOOKUP_ENTRY DeviceLookupTable[SIZE_OF_LOOKUP_TABLE];
|
|||
|
|
|||
|
//
|
|||
|
// Define the Device Pathname. This table is indexed with the FileId.
|
|||
|
// FwOpen tries to match the OpenPath with the entries in this table, and
|
|||
|
// if it finds a match it increments the reference counter. If it doesn't
|
|||
|
// find a match it tries to match an entry in the DRIVER_LOOKUP_TABLE
|
|||
|
// and then calls the Open routine of that driver.
|
|||
|
//
|
|||
|
|
|||
|
#define SIZE_OF_ARC_DEVICENAME 64
|
|||
|
|
|||
|
typedef struct _OPENED_PATHNAME_ENTRY {
|
|||
|
ULONG ReferenceCounter;
|
|||
|
CHAR DeviceName[SIZE_OF_ARC_DEVICENAME];
|
|||
|
} OPENED_PATHNAME_ENTRY, *POPENED_PATHNAME_ENTRY;
|
|||
|
|
|||
|
#define SIZE_OF_OPENED_PATHNAME_TABLE BL_FILE_TABLE_SIZE
|
|||
|
|
|||
|
extern OPENED_PATHNAME_ENTRY OpenedPathTable[SIZE_OF_OPENED_PATHNAME_TABLE];
|
|||
|
|
|||
|
//
|
|||
|
// Driver initialization routines.
|
|||
|
//
|
|||
|
|
|||
|
VOID
|
|||
|
FwOpenConsole(
|
|||
|
IN VOID
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FwInitializeMemory(
|
|||
|
IN VOID
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FwResetMemory(
|
|||
|
IN VOID
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
DisplayInitialize(
|
|||
|
IN OUT PDRIVER_LOOKUP_ENTRY LookupTableEntry,
|
|||
|
IN ULONG Entries
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
KeyboardInitialize(
|
|||
|
IN OUT PDRIVER_LOOKUP_ENTRY LookupTableEntry,
|
|||
|
IN ULONG Entries
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
SerialInitialize(
|
|||
|
IN OUT PDRIVER_LOOKUP_ENTRY LookupTableEntry,
|
|||
|
IN ULONG Entries
|
|||
|
);
|
|||
|
|
|||
|
typedef
|
|||
|
VOID
|
|||
|
(*PSCSI_INFO_CALLBACK_ROUTINE) (
|
|||
|
IN ULONG AdapterNumber,
|
|||
|
IN ULONG ScsiId,
|
|||
|
IN ULONG Lun,
|
|||
|
IN BOOLEAN Cdrom
|
|||
|
);
|
|||
|
|
|||
|
#define SCSI_INFO_CALLBACK_DEFINED 1
|
|||
|
|
|||
|
VOID
|
|||
|
HardDiskInitialize(
|
|||
|
IN OUT PDRIVER_LOOKUP_ENTRY LookupTable,
|
|||
|
IN ULONG Entries,
|
|||
|
IN PSCSI_INFO_CALLBACK_ROUTINE DeviceFound
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FloppyInitialize(
|
|||
|
IN OUT PDRIVER_LOOKUP_ENTRY LookupTableEntry,
|
|||
|
IN ULONG Entries
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
// Platforms with true NVRAM for the ARC data area uses different code
|
|||
|
// than the platforms that store the data in a Flash ROM.
|
|||
|
//
|
|||
|
// Platforms using NVRAM:
|
|||
|
//
|
|||
|
// Morgan
|
|||
|
// eb66
|
|||
|
// e64p
|
|||
|
// Mustang
|
|||
|
//
|
|||
|
// Platforms using Flash ROM:
|
|||
|
//
|
|||
|
// Jensen
|
|||
|
// Culzean
|
|||
|
//
|
|||
|
|
|||
|
#if defined(NV_RAM_PLATFORM)
|
|||
|
|
|||
|
#define FwROMSetARCDataToReadMode()
|
|||
|
#define FwROMResetStatus(x)
|
|||
|
|
|||
|
#elif defined(FLASH_ROM_PLATFORM)
|
|||
|
|
|||
|
//
|
|||
|
// Flash ROM machines
|
|||
|
//
|
|||
|
|
|||
|
ARC_STATUS
|
|||
|
FwROMByteWrite(
|
|||
|
IN PUCHAR WriteAddress,
|
|||
|
IN UCHAR WriteData
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FwROMSetARCDataToReadMode (
|
|||
|
VOID
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FwROMResetStatus(
|
|||
|
IN PUCHAR Address
|
|||
|
);
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
extern ULONG IdentifierIndex;
|
|||
|
extern ULONG DataIndex;
|
|||
|
extern ULONG EisaDataIndex;
|
|||
|
//extern PCONFIGURATION Configuration;
|
|||
|
|
|||
|
extern PUCHAR VolatileEnvironment;
|
|||
|
|
|||
|
extern ULONG MemorySize;
|
|||
|
|
|||
|
//
|
|||
|
// Define special character values. TEMPTEMP These should go somewhere else.
|
|||
|
//
|
|||
|
|
|||
|
#define ASCII_NUL 0x00
|
|||
|
#define ASCII_BEL 0x07
|
|||
|
#define ASCII_BS 0x08
|
|||
|
#define ASCII_HT 0x09
|
|||
|
#define ASCII_LF 0x0A
|
|||
|
#define ASCII_VT 0x0B
|
|||
|
#define ASCII_FF 0x0C
|
|||
|
#define ASCII_CR 0x0D
|
|||
|
#define ASCII_CSI 0x9B
|
|||
|
#define ASCII_ESC 0x1B
|
|||
|
#define ASCII_SYSRQ 0x80
|
|||
|
|
|||
|
//
|
|||
|
// Define screen colors.
|
|||
|
//
|
|||
|
|
|||
|
typedef enum _ARC_SCREEN_COLOR {
|
|||
|
ArcColorBlack,
|
|||
|
ArcColorRed,
|
|||
|
ArcColorGreen,
|
|||
|
ArcColorYellow,
|
|||
|
ArcColorBlue,
|
|||
|
ArcColorMagenta,
|
|||
|
ArcColorCyan,
|
|||
|
ArcColorWhite,
|
|||
|
MaximumArcColor
|
|||
|
} ARC_SCREEN_COLOR;
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
// Define firmware routine prototypes.
|
|||
|
//
|
|||
|
|
|||
|
PVOID
|
|||
|
FwAllocatePool (
|
|||
|
IN ULONG NumberOfBytes
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FwStallExecution (
|
|||
|
IN ULONG Microseconds
|
|||
|
);
|
|||
|
|
|||
|
ULONG
|
|||
|
FwPrint (
|
|||
|
IN PCHAR Format,
|
|||
|
...
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FwReturnExtendedSystemInformation (
|
|||
|
OUT PEXTENDED_SYSTEM_INFORMATION SystemInfo
|
|||
|
);
|
|||
|
|
|||
|
ARC_STATUS
|
|||
|
DisplayBootInitialize (
|
|||
|
OUT PVOID UnusedParameter
|
|||
|
);
|
|||
|
|
|||
|
ULONG
|
|||
|
EISAReadRegisterBufferUCHAR (
|
|||
|
IN ULONG BusNumber,
|
|||
|
IN ULONG Offset,
|
|||
|
OUT PVOID Buffer,
|
|||
|
IN ULONG Length
|
|||
|
);
|
|||
|
|
|||
|
ULONG
|
|||
|
EISAWriteRegisterBufferUCHAR (
|
|||
|
IN ULONG BusNumber,
|
|||
|
IN ULONG Offset,
|
|||
|
OUT PVOID Buffer,
|
|||
|
IN ULONG Length
|
|||
|
);
|
|||
|
|
|||
|
UCHAR
|
|||
|
EISAReadPortUCHAR (
|
|||
|
IN ULONG BusNumber,
|
|||
|
IN ULONG Offset
|
|||
|
);
|
|||
|
|
|||
|
USHORT
|
|||
|
EISAReadPortUSHORT (
|
|||
|
IN ULONG BusNumber,
|
|||
|
IN ULONG Offset
|
|||
|
);
|
|||
|
|
|||
|
ULONG
|
|||
|
EISAReadPortULONG (
|
|||
|
IN ULONG BusNumber,
|
|||
|
IN ULONG Offset
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
EISAWritePortUCHAR (
|
|||
|
IN ULONG BusNumber,
|
|||
|
IN ULONG Offset,
|
|||
|
IN UCHAR Datum
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
EISAWritePortUSHORT (
|
|||
|
IN ULONG BusNumber,
|
|||
|
IN ULONG Offset,
|
|||
|
IN USHORT Datum
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
EISAWritePortULONG (
|
|||
|
IN ULONG BusNumber,
|
|||
|
IN ULONG Offset,
|
|||
|
IN ULONG Datum
|
|||
|
);
|
|||
|
|
|||
|
USHORT
|
|||
|
EISAReadPortUSHORT (
|
|||
|
IN ULONG BusNumber,
|
|||
|
IN ULONG Offset
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FwDriverEntry (
|
|||
|
IN PVOID DriverObject,
|
|||
|
IN PVOID Argument2
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FwIoInitialize1 (
|
|||
|
VOID
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FwIoInitialize2 (
|
|||
|
VOID
|
|||
|
);
|
|||
|
|
|||
|
BOOLEAN
|
|||
|
JzGetPathMnemonicKey(
|
|||
|
IN PCHAR OpenPath,
|
|||
|
IN PCHAR Mnemonic,
|
|||
|
OUT PULONG Key
|
|||
|
);
|
|||
|
#define FwGetPathMnemonicKey JzGetPathMnemonicKey // For bldr\scsidisk.c
|
|||
|
|
|||
|
PCHAR
|
|||
|
FwEnvironmentLoad(
|
|||
|
VOID
|
|||
|
);
|
|||
|
|
|||
|
PCHAR
|
|||
|
FwGetVolatileEnvironmentVariable (
|
|||
|
IN PCHAR Variable
|
|||
|
);
|
|||
|
|
|||
|
ARC_STATUS
|
|||
|
FwROMDetermineMachineROMType (
|
|||
|
VOID
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FwROMSetReadMode(
|
|||
|
IN PUCHAR Address
|
|||
|
);
|
|||
|
|
|||
|
ARC_STATUS
|
|||
|
FwROMErase64KB(
|
|||
|
IN PUCHAR EraseAddress
|
|||
|
);
|
|||
|
|
|||
|
ARC_STATUS
|
|||
|
FwCoreSetEnvironmentVariable (
|
|||
|
IN PCHAR Variable,
|
|||
|
IN PCHAR Value,
|
|||
|
IN BOOLEAN UpdateTheRom
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
ParseARCErrorStatus(
|
|||
|
IN ARC_STATUS Status
|
|||
|
);
|
|||
|
|
|||
|
BOOLEAN
|
|||
|
JzMakeDefaultConfiguration (
|
|||
|
IN BOOLEAN DoFactoryDefaults
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FwSystemConsistencyCheck (
|
|||
|
IN BOOLEAN Silent,
|
|||
|
IN PCHAR BottomMessage,
|
|||
|
IN ULONG BottomMethod,
|
|||
|
OUT PULONG Problems
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
JzCheckBootSelections (
|
|||
|
IN BOOLEAN Silent,
|
|||
|
OUT PBOOLEAN FoundProblems
|
|||
|
);
|
|||
|
|
|||
|
BOOLEAN
|
|||
|
JzMakeDefaultEnvironment (
|
|||
|
IN BOOLEAN DoFactoryDefaults
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
JzDisplayOtherEnvironmentVariables (
|
|||
|
VOID
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
HalpWriteVti(
|
|||
|
IN ULONG RTCIndex,
|
|||
|
IN UCHAR Data
|
|||
|
);
|
|||
|
|
|||
|
UCHAR
|
|||
|
HalpReadVti(
|
|||
|
IN ULONG RTCIndex
|
|||
|
);
|
|||
|
|
|||
|
ARC_STATUS
|
|||
|
DisplayBootInitialize(
|
|||
|
PVOID UnusedParameter
|
|||
|
);
|
|||
|
|
|||
|
ARC_STATUS
|
|||
|
FwGetVideoData (
|
|||
|
OUT PMONITOR_CONFIGURATION_DATA MonitorData
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FwTerminationInitialize(
|
|||
|
IN VOID
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FwHalt(
|
|||
|
IN VOID
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FwMonitor(
|
|||
|
IN ULONG
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FwExceptionInitialize(
|
|||
|
IN VOID
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
ResetSystem (
|
|||
|
IN VOID
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
VOID
|
|||
|
FwpFreeStub(
|
|||
|
IN PVOID Buffer
|
|||
|
);
|
|||
|
|
|||
|
typedef enum _GETSTRING_ACTION {
|
|||
|
GetStringSuccess,
|
|||
|
GetStringEscape,
|
|||
|
GetStringUpArrow,
|
|||
|
GetStringDownArrow,
|
|||
|
GetStringMaximum
|
|||
|
} GETSTRING_ACTION, *PGETSTRING_ACTION;
|
|||
|
|
|||
|
GETSTRING_ACTION
|
|||
|
JzGetString(
|
|||
|
OUT PCHAR String,
|
|||
|
IN ULONG StringLength,
|
|||
|
IN PCHAR InitialString OPTIONAL,
|
|||
|
IN ULONG CurrentRow,
|
|||
|
IN ULONG CurrentColumn,
|
|||
|
IN BOOLEAN ShowTheTime
|
|||
|
);
|
|||
|
|
|||
|
ULONG
|
|||
|
JzDisplayMenu (
|
|||
|
IN PCHAR Choices[],
|
|||
|
IN ULONG NumberOfChoices,
|
|||
|
IN LONG DefaultChoice,
|
|||
|
IN ULONG CurrentLine,
|
|||
|
IN LONG AutobootValue,
|
|||
|
IN BOOLEAN ShowTheTime
|
|||
|
);
|
|||
|
|
|||
|
ARC_STATUS
|
|||
|
FwConfigurationCheckChecksum (
|
|||
|
VOID
|
|||
|
);
|
|||
|
|
|||
|
ARC_STATUS
|
|||
|
JzEnvironmentCheckChecksum (
|
|||
|
VOID
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FwpReservedRoutine(
|
|||
|
VOID
|
|||
|
);
|
|||
|
|
|||
|
ARC_STATUS
|
|||
|
SerialBootWrite(
|
|||
|
CHAR Char,
|
|||
|
ULONG SP
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
FirmwareSetupProgram(
|
|||
|
OUT PBOOLEAN RunProgram,
|
|||
|
OUT PCHAR PathName
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
// This macro should be used when adding a descriptor to the memory
|
|||
|
// descriptor list.
|
|||
|
//
|
|||
|
|
|||
|
#define INCREMENT_FWMEMORYFREE \
|
|||
|
if (FwMemoryFree == (FW_MEMORY_TABLE_SIZE - 1)) { \
|
|||
|
KeBugCheck(ENOMEM); \
|
|||
|
} else { \
|
|||
|
FwMemoryFree++; \
|
|||
|
}
|
|||
|
|
|||
|
//
|
|||
|
// Print macros.
|
|||
|
//
|
|||
|
|
|||
|
extern BOOLEAN DisplayOutput;
|
|||
|
extern BOOLEAN SerialOutput;
|
|||
|
extern BOOLEAN FwConsoleInitialized;
|
|||
|
extern ULONG DisplayWidth;
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
// Fw____ screen manipulation macros.
|
|||
|
//
|
|||
|
|
|||
|
#define FwClearScreen() \
|
|||
|
FwPrint("%c2J", ASCII_CSI)
|
|||
|
|
|||
|
#define FwMoveCursorToColumn(Spaces) \
|
|||
|
FwPrint("\r\x9B"#Spaces"C")
|
|||
|
|
|||
|
#define FwSetScreenColor(FgColor, BgColor) \
|
|||
|
FwPrint("%c3%dm", ASCII_CSI, (UCHAR)FgColor); \
|
|||
|
FwPrint("%c4%dm", ASCII_CSI, (UCHAR)BgColor)
|
|||
|
|
|||
|
#define FwSetScreenAttributes( HighIntensity, Underscored, ReverseVideo ) \
|
|||
|
FwPrint("%c0m", ASCII_CSI); \
|
|||
|
if (HighIntensity) { \
|
|||
|
FwPrint("%c1m", ASCII_CSI); \
|
|||
|
} \
|
|||
|
if (Underscored) { \
|
|||
|
FwPrint("%c4m", ASCII_CSI); \
|
|||
|
} \
|
|||
|
if (ReverseVideo) { \
|
|||
|
FwPrint("%c7m", ASCII_CSI); \
|
|||
|
}
|
|||
|
|
|||
|
#define FwSetPosition( Row, Column ) \
|
|||
|
FwPrint("%c%d;", ASCII_CSI, Row); \
|
|||
|
FwPrint("%dH", Column)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
// Error printing macro for the EISA configuration code. The global
|
|||
|
// that is set to TRUE will cause execution to stall so that the user
|
|||
|
// can see the error messages.
|
|||
|
//
|
|||
|
|
|||
|
extern BOOLEAN ErrorsDuringEISABusConfiguration;
|
|||
|
|
|||
|
#define EISAErrorFwPrint(x) FwPrint(x); \
|
|||
|
ErrorsDuringEISABusConfiguration = TRUE;
|
|||
|
#define EISAErrorFwPrint1(x,y) FwPrint(x,y); \
|
|||
|
ErrorsDuringEISABusConfiguration = TRUE;
|
|||
|
#define EISAErrorFwPrint2(x,y,z) FwPrint(x,y,z); \
|
|||
|
ErrorsDuringEISABusConfiguration = TRUE;
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
// Definitions for the setup program
|
|||
|
//
|
|||
|
|
|||
|
extern PCHAR BootString[];
|
|||
|
|
|||
|
extern BOOLEAN SetupROMPendingModified;
|
|||
|
|
|||
|
typedef enum _BOOT_VARIABLES {
|
|||
|
LoadIdentifierVariable,
|
|||
|
SystemPartitionVariable,
|
|||
|
OsLoaderVariable,
|
|||
|
OsLoadPartitionVariable,
|
|||
|
OsLoadFilenameVariable,
|
|||
|
OsLoadOptionsVariable,
|
|||
|
MaximumBootVariable
|
|||
|
} BOOT_VARIABLE;
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
// Convenient numbers.
|
|||
|
//
|
|||
|
|
|||
|
#define SIXTY_FOUR_KB 0x010000
|
|||
|
#define _512_KB 0x080000
|
|||
|
#define ONE_MB 0x100000
|
|||
|
#define FOUR_MB 0x400000
|
|||
|
#define FOUR_MB_PAGECOUNT ( FOUR_MB >> PAGE_SHIFT )
|
|||
|
#define SEVEN_MB 0x700000
|
|||
|
#define EIGHT_MB 0x800000
|
|||
|
#define NINE_MB 0x900000
|
|||
|
#define SIXTEEN_MB 0x1000000
|
|||
|
#define THIRTY_ONE_MB 0x1f00000
|
|||
|
#define THIRTY_TWO_MB 0x2000000
|
|||
|
|
|||
|
|
|||
|
#endif // _FWP_
|