209 lines
9 KiB
C
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
|