Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1989 Microsoft Corporation
Module Name:
abios.h
Abstract:
This module contains the i386 kernel ABIOS specific header file.
Author:
Shie-Lin Tzong (shielint) 22-May-1991
Revision History:
--*/
//
// Define public portion of the ABIOS Device Block
//
typedef struct _KDEVICE_BLOCK { USHORT Length; UCHAR Revision; UCHAR SecondDeviceId; USHORT LogicalId; USHORT DeviceId; USHORT NumberExclusivePortPairs; USHORT NumberCommonPortPairs; } KDEVICE_BLOCK, *PKDEVICE_BLOCK;
typedef struct _KABIOS_POINTER { USHORT Offset; USHORT Selector; } KABIOS_POINTER, *PKABIOS_POINTER;
#pragma pack(1)
//
// ABIOS Function Transfer Table definition
//
typedef struct _KFUNCTION_TRANSFER_TABLE { KABIOS_POINTER CommonRoutine[3]; USHORT FunctionCount; USHORT Reserved; KABIOS_POINTER SpecificRoutine; } KFUNCTION_TRANSFER_TABLE, *PKFUNCTION_TRANSFER_TABLE;
//
// ABIOS Commom Data Area definitions
//
typedef struct _KDB_FTT_SECTION { KABIOS_POINTER DeviceBlock; KABIOS_POINTER FunctionTransferTable; } KDB_FTT_SECTION, *PKDB_FTT_SECTION;
typedef struct _KCOMMON_DATA_AREA { USHORT DataPointer0Offset; USHORT NumberLids; ULONG Reserved; PKDB_FTT_SECTION DbFttPointer; } KCOMMON_DATA_AREA, *PKCOMMON_DATA_AREA;
#pragma pack()
//
// Available GDT Entry
//
typedef struct _KFREE_GDT_ENTRY { struct _KFREE_GDT_ENTRY *Flink; ULONG BaseMid : 8; ULONG Type : 5; ULONG Dpl : 2; ULONG Present : 1; ULONG LimitHi : 4; ULONG Sys : 1; ULONG Reserved_0 : 1; ULONG Default_Big : 1; ULONG Granularity : 1; ULONG BaseHi : 8; } KFREE_GDT_ENTRY, *PKFREE_GDT_ENTRY;
//
// Logical Id table entry
//
typedef struct _KLID_TABLE_ENTRY { ULONG Owner; ULONG OwnerCount; } KLID_TABLE_ENTRY, *PKLID_TABLE_ENTRY;
#define LID_NO_SPECIFIC_OWNER 0xffffffff
#define NUMBER_LID_TABLE_ENTRIES 1024
//
// Macro to extract the high byte of a short offset
//
#define HIGHBYTE(l) ((UCHAR)(((USHORT)(l)>>8) & 0xff))
//
// Macro to extract the low byte of a short offset
//
#define LOWBYTE(l) ((UCHAR)(l))
//
// The following selectors are reserved for 16 bit stack, code and
// ABIOS Common Data Area.
//
#define KGDT_STACK16 0xf8
#define KGDT_CODE16 0xf0
#define KGDT_CDA16 0xe8
#define KGDT_GDT_ALIAS 0x70
//
// Misc. definitions
//
#define RESERVED_GDT_ENTRIES 28
//
// External references
//
extern PKFREE_GDT_ENTRY KiAbiosGdtStart; extern PKFREE_GDT_ENTRY KiAbiosGdtEnd; extern PUCHAR KiEndOfCode16; extern ULONG KiStack16GdtEntry;
extern VOID KiI386CallAbios( IN KABIOS_POINTER AbiosFunction, IN KABIOS_POINTER DeviceBlockPointer, IN KABIOS_POINTER FunctionTransferTable, IN KABIOS_POINTER RequestBlock );
VOID KiInitializeAbiosGdtEntry ( OUT PKGDTENTRY GdtEntry, IN ULONG Base, IN ULONG Limit, IN USHORT Type );
extern ULONG KiAbiosGetGdt ( VOID );
|