143 lines
2.7 KiB
C
143 lines
2.7 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 2000-2001 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
bldr32.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This module contains the private data structures and procedure prototypes
|
||
|
for the boot loader.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#ifndef _BOOT32_
|
||
|
#define _BOOT32_
|
||
|
|
||
|
#include <ntos.h>
|
||
|
|
||
|
//
|
||
|
// To enable spew, define BLDRSPEW below
|
||
|
//
|
||
|
|
||
|
#undef BLDRSPEW
|
||
|
|
||
|
//
|
||
|
// To enable a memory test before and after calibration, define BLDRMEMTEST below
|
||
|
// This should only be used for debug purposes
|
||
|
//
|
||
|
|
||
|
#undef BLDRMEMTEST
|
||
|
|
||
|
//
|
||
|
// PCI space access
|
||
|
//
|
||
|
|
||
|
#define PCI_TYPE1_ADDR_PORT ((PULONG) 0xCF8)
|
||
|
#define PCI_TYPE1_DATA_PORT 0xCFC
|
||
|
|
||
|
#pragma intrinsic(_inp,_inpw,_inpd,_outp,_outpw,_outpd)
|
||
|
|
||
|
|
||
|
typedef unsigned long DWORD;
|
||
|
|
||
|
VOID
|
||
|
BldrEncDec(
|
||
|
IN PUCHAR MsgData,
|
||
|
IN ULONG MsgDataLen,
|
||
|
IN const UCHAR * Key,
|
||
|
IN ULONG KeyBytes
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
BldrCopyROMToRAM(
|
||
|
IN const UCHAR * DecryptionKey
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
BldrShutdownSystem(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
__fastcall
|
||
|
BldrLoadMediaROM(
|
||
|
ULONG_PTR MediaROMBaseAddress
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
BldrInitTimer(
|
||
|
PVOID RegisterBase
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
BldrSetDrvSlwFromROMData(
|
||
|
PVOID RegisterBase
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
BldrSetupLDTBus(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Smbus access routines
|
||
|
//
|
||
|
|
||
|
NTSTATUS
|
||
|
BldrReadSMBusValue(
|
||
|
IN UCHAR SlaveAddress,
|
||
|
IN UCHAR CommandCode,
|
||
|
IN BOOLEAN ReadWordValue,
|
||
|
OUT ULONG *DataValue
|
||
|
);
|
||
|
|
||
|
#define BldrReadSMBusByte(SlaveAddress, CommandCode, DataValue) \
|
||
|
BldrReadSMBusValue(SlaveAddress, CommandCode, FALSE, DataValue)
|
||
|
|
||
|
#define BldrReadSMBusWord(SlaveAddress, CommandCode, DataValue) \
|
||
|
BldrReadSMBusValue(SlaveAddress, CommandCode, TRUE, DataValue)
|
||
|
|
||
|
NTSTATUS
|
||
|
BldrWriteSMBusValue(
|
||
|
IN UCHAR SlaveAddress,
|
||
|
IN UCHAR CommandCode,
|
||
|
IN BOOLEAN WriteWordValue,
|
||
|
IN ULONG DataValue
|
||
|
);
|
||
|
|
||
|
#define BldrWriteSMBusByte(SlaveAddress, CommandCode, DataValue) \
|
||
|
BldrWriteSMBusValue(SlaveAddress, CommandCode, FALSE, DataValue)
|
||
|
|
||
|
#define BldrWriteSMBusWord(SlaveAddress, CommandCode, DataValue) \
|
||
|
BldrWriteSMBusValue(SlaveAddress, CommandCode, TRUE, DataValue)
|
||
|
|
||
|
#define SMC_SLAVE_ADDRESS 0x20
|
||
|
|
||
|
VOID
|
||
|
DbgPrintHex(
|
||
|
PUCHAR Buffer,
|
||
|
ULONG BufferSize
|
||
|
);
|
||
|
|
||
|
|
||
|
#ifdef BLDRSPEW
|
||
|
#define BldrPrint(x) DbgPrint x
|
||
|
#else
|
||
|
#define BldrPrint(x)
|
||
|
#endif
|
||
|
|
||
|
//
|
||
|
// Following structure exists at BLDR_CODE location. BLDRBLD reserves spaces
|
||
|
// for it and fills in the Bldr32EntryPoint. The rest of the fields are filled by
|
||
|
// DOSBOOT when booting from DOS. When booting from ROM, these fields contain 0
|
||
|
//
|
||
|
typedef struct _BOOTLDRPARAM {
|
||
|
ULONG Bldr32EntryPoint;
|
||
|
CHAR CommandLine[64];
|
||
|
} BOOTLDRPARAM, *PBOOTLDRPARAM;
|
||
|
|
||
|
#endif // BOOT32
|