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.
 
 
 
 
 
 

144 lines
4.7 KiB

#ifndef _EXTS_PSR_H_
#define _EXTS_PSR_H_
/*++
Copyright (c) 1999 Microsoft Corporation
Module Name:
ia64.h
Abstract:
This file contains definitions which are specifice to ia64 platforms
Author:
Kshitiz K. Sharma (kksharma)
Environment:
User Mode.
Revision History:
--*/
#ifdef __cplusplus
extern "C" {
#endif
/////////////////////////////////////////////
//
// Generic EM Registers definitions
//
/////////////////////////////////////////////
typedef unsigned __int64 EM_REG;
typedef EM_REG *PEM_REG;
#define EM_REG_BITS (sizeof(EM_REG) * 8)
__inline EM_REG
ULong64ToEMREG(
IN ULONG64 Val
)
{
return (*((PEM_REG)&Val));
} // ULong64ToEMREG()
__inline ULONG64
EMREGToULong64(
IN EM_REG EmReg
)
{
return (*((PULONG64)&EmReg));
} // EMRegToULong64()
#define DEFINE_ULONG64_TO_EMREG(_EM_REG_TYPE) \
__inline _EM_REG_TYPE \
ULong64To##_EM_REG_TYPE( \
IN ULONG64 Val \
) \
{ \
return (*((P##_EM_REG_TYPE)&Val)); \
} // ULong64To##_EM_REG_TYPE()
#define DEFINE_EMREG_TO_ULONG64(_EM_REG_TYPE) \
__inline ULONG64 \
_EM_REG_TYPE##ToULong64( \
IN _EM_REG_TYPE EmReg \
) \
{ \
return (*((PULONG64)&EmReg)); \
} // _EM_REG_TYPE##ToULong64()
typedef struct _EM_PSR {
unsigned __int64 reserved0:1; // 0 : reserved
unsigned __int64 be:1; // 1 : Big-Endian
unsigned __int64 up:1; // 2 : User Performance monitor enable
unsigned __int64 ac:1; // 3 : Alignment Check
unsigned __int64 mfl:1; // 4 : Lower (f2 .. f31) floating-point registers written
unsigned __int64 mfh:1; // 5 : Upper (f32 .. f127) floating-point registers written
unsigned __int64 reserved1:7; // 6-12 : reserved
unsigned __int64 ic:1; // 13 : Interruption Collection
unsigned __int64 i:1; // 14 : Interrupt Bit
unsigned __int64 pk:1; // 15 : Protection Key enable
unsigned __int64 reserved2:1; // 16 : reserved
unsigned __int64 dt:1; // 17 : Data Address Translation
unsigned __int64 dfl:1; // 18 : Disabled Floating-point Low register set
unsigned __int64 dfh:1; // 19 : Disabled Floating-point High register set
unsigned __int64 sp:1; // 20 : Secure Performance monitors
unsigned __int64 pp:1; // 21 : Privileged Performance monitor enable
unsigned __int64 di:1; // 22 : Disable Instruction set transition
unsigned __int64 si:1; // 23 : Secure Interval timer
unsigned __int64 db:1; // 24 : Debug Breakpoint fault
unsigned __int64 lp:1; // 25 : Lower Privilege transfer trap
unsigned __int64 tb:1; // 26 : Taken Branch trap
unsigned __int64 rt:1; // 27 : Register stack translation
unsigned __int64 reserved3:4; // 28-31 : reserved
unsigned __int64 cpl:2; // 32;33 : Current Privilege Level
unsigned __int64 is:1; // 34 : Instruction Set
unsigned __int64 mc:1; // 35 : Machine Abort Mask
unsigned __int64 it:1; // 36 : Instruction address Translation
unsigned __int64 id:1; // 37 : Instruction Debug fault disable
unsigned __int64 da:1; // 38 : Disable Data Access and Dirty-bit faults
unsigned __int64 dd:1; // 39 : Data Debug fault disable
unsigned __int64 ss:1; // 40 : Single Step enable
unsigned __int64 ri:2; // 41;42 : Restart Instruction
unsigned __int64 ed:1; // 43 : Exception Deferral
unsigned __int64 bn:1; // 44 : register Bank
unsigned __int64 ia:1; // 45 : Disable Instruction Access-bit faults
unsigned __int64 reserved4:18; // 46-63 : reserved
} EM_PSR, *PEM_PSR;
typedef EM_PSR EM_IPSR;
typedef EM_IPSR *PEM_IPSR;
DEFINE_ULONG64_TO_EMREG(EM_PSR)
DEFINE_EMREG_TO_ULONG64(EM_PSR)
typedef enum _DISPLAY_MODE {
DISPLAY_MIN = 0,
DISPLAY_DEFAULT = DISPLAY_MIN,
DISPLAY_MED = 1,
DISPLAY_MAX = 2,
DISPLAY_FULL = DISPLAY_MAX
} DISPLAY_MODE;
typedef struct _EM_REG_FIELD {
const char *SubName;
const char *Name;
unsigned long Length;
unsigned long Shift;
} EM_REG_FIELD, *PEM_REG_FIELD;
#ifdef __cplusplus
}
#endif
#endif