// KPCR Access for non-IA64 builds
//
#define K0IPCR ((ULONG_PTR)(KIP0PCRADDRESS))
-#define PCR ((volatile KPCR * const)K0IPCR)
+#define PCR ((KPCR * const)K0IPCR)
#if defined(CONFIG_SMP) || defined(NT_BUILD)
#undef KeGetPcr
-#define KeGetPcr() ((volatile KPCR * const)__readfsdword(0x1C))
+#define KeGetPcr() ((KPCR * const)__readfsdword(FIELD_OFFSET(KPCR, SelfPcr)))
#endif
//
#define EFLAG_SIGN 0x8000
#define EFLAG_ZERO 0x4000
+//
+// Legacy floating status word bit masks.
+//
+#define FSW_INVALID_OPERATION 0x1
+#define FSW_DENORMAL 0x2
+#define FSW_ZERO_DIVIDE 0x4
+#define FSW_OVERFLOW 0x8
+#define FSW_UNDERFLOW 0x10
+#define FSW_PRECISION 0x20
+#define FSW_STACK_FAULT 0x40
+
//
// IPI Types
//
(USHORT)(sizeof(KTSS)) : \
(USHORT)(FIELD_OFFSET(KTSS, IoMaps[MapNumber-1].IoMap))
+typedef UCHAR KIO_ACCESS_MAP[IOPM_SIZE];
+
+typedef KIO_ACCESS_MAP *PKIO_ACCESS_MAP;
+
//
// Size of the XMM register save area in the FXSAVE format
//
ULONG StallScaleFactor;
UCHAR SpareUnused;
UCHAR Number;
- UCHAR Reserved;
- UCHAR L2CacheAssociativity;
+ UCHAR Spare0;
+ UCHAR SecondLevelCacheAssociativity;
ULONG VdmAlert;
ULONG KernelReserved[14];
ULONG SecondLevelCacheSize;