windows-nt/Source/XPSP1/NT/sdktools/debuggers/ntsd64/ia64_reg.h
2020-09-26 16:20:57 +08:00

209 lines
9 KiB
C

/****************************************************************************
* *
* The following enumeration is ordered to match the _CONTEXT record. *
* Enumerations after STIFS is ordered to match the _KSPECIAL_REGISTERS *
* record. The ORDERING IS NECESSARY for GetRegValue() to index into the *
* Context record correctly. *
* *
* SRxxx may be moved as a group only. *
* *
* Each floating point register occupies two numbers to address the *
* Float128 as two high and low 64-bit parts *
* *
****************************************************************************/
enum {
/* Begin of _CONTEXT */
// Debug breakpoint registers
REGDBI0, REGDBI1, REGDBI2, REGDBI3, REGDBI4, REGDBI5, REGDBI6, REGDBI7,
REGDBD0, REGDBD1, REGDBD2, REGDBD3, REGDBD4, REGDBD5, REGDBD6, REGDBD7,
/* all floating point high's are inserted for space */
// Lower floating
// FLTZERO, FLTONE,
FLTS0, FLTS0H, FLTS1, FLTS1H, FLTS2, FLTS2H, FLTS3, FLTS3H, FLTT0, FLTT0H,
FLTT1, FLTT1H, FLTT2, FLTT2H, FLTT3, FLTT3H, FLTT4, FLTT4H, FLTT5, FLTT5H,
FLTT6, FLTT6H, FLTT7, FLTT7H, FLTT8, FLTT8H, FLTT9, FLTT9H,
// high floating saved
FLTS4, FLTS4H,
FLTS5, FLTS5H, FLTS6, FLTS6H, FLTS7, FLTS7H, FLTS8, FLTS8H, FLTS9, FLTS9H,
FLTS10, FLTS10H, FLTS11, FLTS11H, FLTS12, FLTS12H, FLTS13, FLTS13H, FLTS14, FLTS14H,
FLTS15, FLTS15H, FLTS16, FLTS16H, FLTS17, FLTS17H, FLTS18, FLTS18H, FLTS19, FLTS19H,
// high floating temp
FLTF32, FLTF32H, FLTF33, FLTF33H, FLTF34, FLTF34H, FLTF35, FLTF35H, FLTF36, FLTF36H,
FLTF37, FLTF37H, FLTF38, FLTF38H, FLTF39, FLTF39H, FLTF40, FLTF40H, FLTF41, FLTF41H,
FLTF42, FLTF42H, FLTF43, FLTF43H, FLTF44, FLTF44H, FLTF45, FLTF45H, FLTF46, FLTF46H,
FLTF47, FLTF47H, FLTF48, FLTF48H, FLTF49, FLTF49H, FLTF50, FLTF50H, FLTF51, FLTF51H,
FLTF52, FLTF52H, FLTF53, FLTF53H, FLTF54, FLTF54H, FLTF55, FLTF55H, FLTF56, FLTF56H,
FLTF57, FLTF57H, FLTF58, FLTF58H, FLTF59, FLTF59H, FLTF60, FLTF60H, FLTF61, FLTF61H,
FLTF62, FLTF62H, FLTF63, FLTF63H, FLTF64, FLTF64H, FLTF65, FLTF65H, FLTF66, FLTF66H,
FLTF67, FLTF67H, FLTF68, FLTF68H, FLTF69, FLTF69H, FLTF70, FLTF70H, FLTF71, FLTF71H,
FLTF72, FLTF72H, FLTF73, FLTF73H, FLTF74, FLTF74H, FLTF75, FLTF75H, FLTF76, FLTF76H,
FLTF77, FLTF77H, FLTF78, FLTF78H, FLTF79, FLTF79H, FLTF80, FLTF80H, FLTF81, FLTF81H,
FLTF82, FLTF82H, FLTF83, FLTF83H, FLTF84, FLTF84H, FLTF85, FLTF85H, FLTF86, FLTF86H,
FLTF87, FLTF87H, FLTF88, FLTF88H, FLTF89, FLTF89H, FLTF90, FLTF90H, FLTF91, FLTF91H,
FLTF92, FLTF92H, FLTF93, FLTF93H, FLTF94, FLTF94H, FLTF95, FLTF95H, FLTF96, FLTF96H,
FLTF97, FLTF97H, FLTF98, FLTF98H, FLTF99, FLTF99H, FLTF100, FLTF100H, FLTF101, FLTF101H,
FLTF102, FLTF102H, FLTF103, FLTF103H, FLTF104, FLTF104H, FLTF105, FLTF105H, FLTF106, FLTF106H,
FLTF107, FLTF107H, FLTF108, FLTF108H, FLTF109, FLTF109H, FLTF110, FLTF110H, FLTF111, FLTF111H,
FLTF112, FLTF112H, FLTF113, FLTF113H, FLTF114, FLTF114H, FLTF115, FLTF115H, FLTF116, FLTF116H,
FLTF117, FLTF117H, FLTF118, FLTF118H, FLTF119, FLTF119H, FLTF120, FLTF120H, FLTF121, FLTF121H,
FLTF122, FLTF122H, FLTF123, FLTF123H, FLTF124, FLTF124H, FLTF125, FLTF125H, FLTF126, FLTF126H,
FLTF127, FLTF127H,
STFPSR, // FP Status saved
// Integer registers
// INTZERO,
INTGP, INTT0, INTT1, INTS0, INTS1,
INTS2, INTS3, INTV0, INTT2, INTT3, INTT4,
INTSP, INTTEB, INTT5, INTT6, INTT7, INTT8,
INTT9, INTT10, INTT11, INTT12, INTT13, INTT14,
INTT15, INTT16, INTT17, INTT18, INTT19, INTT20,
INTT21, INTT22,
INTNATS, // Nat bits for r1-r31
PREDS, // predicates saved
// Branch registers
BRRP, BRS0, BRS1, BRS2, BRS3, BRS4, BRT0, BRT1,
// System registers - from _CONTEXT record
APUNAT, APLC, APEC, APCCV, APDCR, // other application reg's
RSPFS, RSBSP, RSBSPSTORE, RSRSC, RSRNAT, // register stack info
STIPSR, STIIP, STIFS, // trap status info
StFCR, // iA32 copy of Ar21
Eflag, // iA32 (Ar24)
SegCSD, // iA32 Descriptor(Ar25)
SegSSD, // iA32 Descriptor(Ar26)
Cflag, // iA32 (Ar27)
STFSR, // x86 FP status
STFIR,
STFDR,
/* End of _CONTEXT */
INTR32, INTR33, INTR34, INTR35, INTR36, INTR37, INTR38, INTR39,
INTR40, INTR41, INTR42, INTR43, INTR44,
INTR45, INTR46, INTR47, INTR48, INTR49,
INTR50, INTR51, INTR52, INTR53, INTR54,
INTR55, INTR56, INTR57, INTR58, INTR59,
INTR60, INTR61, INTR62, INTR63, INTR64,
INTR65, INTR66, INTR67, INTR68, INTR69,
INTR70, INTR71, INTR72, INTR73, INTR74,
INTR75, INTR76, INTR77, INTR78, INTR79,
INTR80, INTR81, INTR82, INTR83, INTR84,
INTR85, INTR86, INTR87, INTR88, INTR89,
INTR90, INTR91, INTR92, INTR93, INTR94,
INTR95, INTR96, INTR97, INTR98, INTR99,
INTR100, INTR101, INTR102, INTR103, INTR104,
INTR105, INTR106, INTR107, INTR108, INTR109,
INTR110, INTR111, INTR112, INTR113, INTR114,
INTR115, INTR116, INTR117, INTR118, INTR119,
INTR120, INTR121, INTR122, INTR123, INTR124,
INTR125, INTR126, INTR127,
/* Begin of _KSPECIAL_REGISTER */
// Kernel debug breakpoint registers
KRDBI0, KRDBI1, KRDBI2, KRDBI3, KRDBI4, KRDBI5, KRDBI6, KRDBI7,
KRDBD0, KRDBD1, KRDBD2, KRDBD3, KRDBD4, KRDBD5, KRDBD6, KRDBD7,
// Kernel performance monitor registers
KRPFC0, KRPFC1, KRPFC2, KRPFC3, KRPFC4, KRPFC5, KRPFC6, KRPFC7,
KRPFD0, KRPFD1, KRPFD2, KRPFD3, KRPFD4, KRPFD5, KRPFD6, KRPFD7,
// Kernel bank shadow registers
INTH16, INTH17, INTH18, INTH19, INTH20, INTH21, INTH22, INTH23,
INTH24, INTH25, INTH26, INTH27, INTH28, INTH29, INTH30, INTH31,
// System registers - from _KSPECIAL_REGISTERS record
// application registers
// CPUID registers
ACPUID0, ACPUID1, ACPUID2, ACPUID3, ACPUID4, ACPUID5, ACPUID6, ACPUID7,
// kernel registers
APKR0, APKR1, APKR2, APKR3, APKR4, APKR5, APKR6, APKR7,
APITC, APITM, APIVA, APPTA, APGPTA,
STISR, STIDA, STIITR, STIIPA, STIIM, STIHA,
// SAPIC registers
SALID, SAIVR, SATPR, SAEOI, SAIRR0, SAIRR1, SAIRR2, SAIRR3,
SAITV, SAPMV, SACMCV, SALRR0, SALRR1,
// region registers
SRRR0, SRRR1, SRRR2, SRRR3, SRRR4, SRRR5, SRRR6, SRRR7,
// protection key regs
SRPKR0, SRPKR1, SRPKR2, SRPKR3, SRPKR4, SRPKR5, SRPKR6, SRPKR7,
SRPKR8, SRPKR9, SRPKR10, SRPKR11, SRPKR12, SRPKR13, SRPKR14, SRPKR15,
// translation lookaside registers
SRTRI0, SRTRI1, SRTRI2, SRTRI3, SRTRI4, SRTRI5, SRTRI6, SRTRI7,
SRTRD0, SRTRD1, SRTRD2, SRTRD3, SRTRD4, SRTRD5, SRTRD6, SRTRD7,
// machine specific registers
SMSR0, SMSR1, SMSR2, SMSR3, SMSR4, SMSR5, SMSR6, SMSR7,
/* End of _KSPECIAL_REGISTERS */
// IPSR flags
IPSRBN, IPSRED, IPSRRI, IPSRSS, IPSRDD, IPSRDA, IPSRID, IPSRIT,
IPSRME, IPSRIS, IPSRCPL, IPSRRT, IPSRTB, IPSRLP, IPSRDB,
IPSRSI, IPSRDI, IPSRPP, IPSRSP, IPSRDFH, IPSRDFL, IPSRDT,
IPSRPK, IPSRI, IPSRIC, IPSRAC, IPSRUP, IPSRBE, IPSROR,
// FPSR flags
FPSRMDH, FPSRMDL, FPSRSF3, FPSRSF2, FPSRSF1, FPSRSF0,
FPSRTRAPID, FPSRTRAPUD, FPSRTRAPOD, FPSRTRAPZD, FPSRTRAPDD, FPSRTRAPVD,
// Predicate registers
// PR0,
PR1, PR2, PR3,
PR4, PR5, PR6, PR7,
PR8, PR9, PR10, PR11,
PR12, PR13, PR14, PR15,
PR16, PR17, PR18, PR19,
PR20, PR21, PR22, PR23,
PR24, PR25, PR26, PR27,
PR28, PR29, PR30, PR31,
PR32, PR33, PR34, PR35,
PR36, PR37, PR38, PR39,
PR40, PR41, PR42, PR43,
PR44, PR45, PR46, PR47,
PR48, PR49, PR50, PR51,
PR52, PR53, PR54, PR55,
PR56, PR57, PR58, PR59,
PR60, PR61, PR62, PR63,
};
#define IA64_DBBASE REGDBI0
#define IA64_DBLAST REGDBD7
#define IA64_FLTBASE FLTS0
#define IA64_FLTLAST FLTF127
#define IA64_REGBASE INTGP
#define IA64_ARBASE APUNAT
#define IA64_SRBASE KRDBI0
#define IA64_SREND SMSR7
#define IA64_FLAGBASE IPSRBN
#define IA64_DB_COUNT (IA64_DBLAST - IA64_DBBASE + 1)
// Debug register flags.
#define IA64_DBR_RDWR 0xC000000000000000UI64
#define IA64_DBR_RD 0x8000000000000000UI64
#define IA64_DBR_WR 0x4000000000000000UI64
#define IA64_DBR_EXEC 0x8000000000000000UI64
#define IA64_DBG_MASK_MASK 0x00FFFFFFFFFFFFFFUI64
#define IA64_DBG_REG_PLM_USER 0x0800000000000000UI64
#define IA64_DBG_REG_PLM_ALL 0x0F00000000000000UI64