/*++ Copyright (c) 1989 Microsoft Corporation Module Name: genvdmtb.m4 Abstract: This module implements a source code which generates a source .obj for genxx.exe. This results in definitions for kernel structures that are accessed in x86 assembly. This version is preprocessed with M4, then compiled with the 386 compiler. To build, go to vdm\up and do "nmake UMAPPL=genvdmtb" to generate genvdmtb.obj. Then run "genxx -vdm" to create \nt\private\vdmtb.inc. Author: Bryan M. Willman (bryanwi) 16-Oct-90 Revision History: Dave Hastings (daveh) 27-Mar-93 Stolen from the ke directory to correct a maintinence problem Forrest Foltz (forrestf) 24-Jan-1998 Modified format to use new obj-based procedure. --*/ #include "crt\excpt.h" #include "crt\stdarg.h" #include "ntdef.h" #include "ntstatus.h" #include "ntkeapi.h" #include "nti386.h" #include "ntseapi.h" #include "ntobapi.h" #include "ntimage.h" #include "ntldr.h" #include "ntpsapi.h" #include "ntxcapi.h" #include "ntlpcapi.h" #include "ntioapi.h" #include "ntexapi.h" #include "ntmmapi.h" #include "ntnls.h" #include "ntrtl.h" #include "nturtl.h" #include "ntconfig.h" #include "ntcsrsrv.h" #include "ntdef.h" #include "vdm.h" #include "stdio.h" include(`..\..\ke\genxx.h') // // Element description array is here // STRUC_ELEMENT ElementList[] = { START_LIST genTxt("IFDEF NEC_98\n") genVal(FIXED_NTVDMSTATE_SEGMENT, 0x60) genTxt("else\n") genVal(FIXED_NTVDMSTATE_SEGMENT, 0x70) genTxt("endif\n") genNam(FIXED_NTVDMSTATE_OFFSET) genTxt("FIXED_NTVDMSTATE_LINEAR EQU ((FIXED_NTVDMSTATE_SEGMENT SHL 4 ) + FIXED_NTVDMSTATE_OFFSET)\n") genNam(FIXED_NTVDMSTATE_SIZE) genCom("VdmFlags") genNam(VDM_INT_HARDWARE) genNam(VDM_INT_TIMER) genNam(VDM_INTERRUPT_PENDING) genVal(VDM_INTS_HOOKED_IN_PM, 0x4) genNam(VDM_BREAK_EXCEPTIONS) genNam(VDM_BREAK_DEBUGGER) genNam(VDM_PROFILE) genNam(VDM_ANALYZE_PROFILE) genNam(VDM_TRACE_HISTORY) genNam(VDM_32BIT_APP) genVal(VDM_VIRTUAL_INTERRUPTS, EFLAGS_IF_MASK) genVal(VDM_VIRTUAL_AC, EFLAGS_AC_MASK) genVal(VDM_VIRTUAL_NT, EFLAGS_NT_MASK) genVal(MIPS_BIT_MASK, VDM_ON_MIPS) genNam(VDM_ON_MIPS) genNam(VDM_EXEC) genNam(VDM_RM) genNam(VDM_USE_DBG_VDMEVENT) genNam(VDM_WOWBLOCKED) genNam(VDM_IDLEACTIVITY) genNam(VDM_WOWHUNGAPP) genNam(VDM_PE_MASK) genCom("Interrupt handler flags") genNam(VDM_INT_INT_GATE) genNam(VDM_INT_TRAP_GATE) genNam(VDM_INT_32) genNam(VDM_INT_16) genNam(VDM_INT_HOOKED) genCom("EFlags values") genNam(EFLAGS_TF_MASK) genVal(EFLAGS_INTERRUPT_MASK, EFLAGS_IF_MASK) genVal(EFLAGS_IOPL_MASK, EFLAGS_PL_MASK) genNam(EFLAGS_NT_MASK) genCom("Selector Flags") genVal(SEL_TYPE_READ, 0x00000001) genVal(SEL_TYPE_WRITE, 0x00000002) genVal(SEL_TYPE_EXECUTE, 0x00000004) genVal(SEL_TYPE_BIG, 0x00000008) genVal(SEL_TYPE_ED, 0x00000010) genVal(SEL_TYPE_2GIG, 0x00000020) genCom("VdmEvent Enumerations") genNam(VdmIO) genNam(VdmStringIO) genNam(VdmMemAccess) genNam(VdmIntAck) genNam(VdmBop) genNam(VdmError) genNam(VdmIrq13) genNam(VdmMaxEvent) genCom("VdmTib offsets") genDef(Vt, VDM_TIB,MonitorContext) genDef(Vt, VDM_TIB,VdmContext) genAlt(VtInterruptTable, VDM_TIB, VdmInterruptTable) genAlt(VtFaultTable, VDM_TIB, VdmFaultTable) genDef(Vt, VDM_TIB,EventInfo) genVal(VtEIEvent, OFFSET(VDM_TIB,EventInfo) + OFFSET(VDMEVENTINFO,Event)) genVal(VtEIInstSize, OFFSET(VDM_TIB,EventInfo) + OFFSET(VDMEVENTINFO,InstructionSize)) genVal(VtEIBopNumber, OFFSET(VDM_TIB,EventInfo) + OFFSET(VDMEVENTINFO, BopNumber)) genVal(VtEIIntAckInfo, OFFSET(VDM_TIB,EventInfo) + OFFSET(VDMEVENTINFO, IntAckInfo)) genDef(Vt, VDM_TIB,DpmiInfo) genDef(Ei, VDMEVENTINFO,Event) genDef(Ei, VDMEVENTINFO,InstructionSize) genDef(Ei, VDMEVENTINFO,BopNumber) genDef(Ei, VDMEVENTINFO,IntAckInfo) genCom("WOW TD offsets") genVal(WtdFastWowEsp, 0x8) genCom("VdmInterrupHandler offsets") genDef(Vi, VDM_INTERRUPTHANDLER,CsSelector) genDef(Vi, VDM_INTERRUPTHANDLER,Eip) genDef(Vi, VDM_INTERRUPTHANDLER,Flags) genVal(VDM_INTERRUPT_HANDLER_SIZE, sizeof(VDM_INTERRUPTHANDLER)) genCom("VdmFaultHandler offsets") genDef(Vf, VDM_FAULTHANDLER,CsSelector) genDef(Vf, VDM_FAULTHANDLER,Eip) genDef(Vf, VDM_FAULTHANDLER,SsSelector) genDef(Vf, VDM_FAULTHANDLER,Esp) genDef(Vf, VDM_FAULTHANDLER,Flags) genVal(VDM_FAULT_HANDLER_SIZE, sizeof(VDM_FAULTHANDLER)) genCom("VdmDpmiInfo offsets") genDef(Vp, VDM_DPMIINFO,LockCount) genDef(Vp, VDM_DPMIINFO,Flags) genDef(Vp, VDM_DPMIINFO,SsSelector) genDef(Vp, VDM_DPMIINFO,SaveSsSelector) genDef(Vp, VDM_DPMIINFO,SaveEsp) genDef(Vp, VDM_DPMIINFO,SaveEip) genDef(Vp, VDM_DPMIINFO,DosxIntIret) genDef(Vp, VDM_DPMIINFO,DosxIntIretD) genDef(Vp, VDM_DPMIINFO,DosxFaultIret) genDef(Vp, VDM_DPMIINFO,DosxFaultIretD) genDef(Vp, VDM_DPMIINFO,DosxRmReflector) genCom("VdmTrace codes") genNam(VDMTR_KERNEL_OP_PM) genNam(VDMTR_KERNEL_OP_V86) genNam(VDMTR_KERNEL_HW_INT) genCom("Misc defines") genVal(DBG_SINGLESTEP, 0x5) genVal(DBG_BREAK, 0x6) genVal(DBG_GPFAULT, 0x7) genVal(DBG_STACKFAULT, 0x10) genVal(STATUS_VDM_EVENT, 0x40000005) END_LIST };