Add context control flags and thread frames for i686 architecture
All checks were successful
ci/woodpecker/push/build Pipeline was successful

This commit is contained in:
Rafal Kupiec 2023-03-14 22:47:32 +01:00
parent 5677719038
commit cec8a13e4c
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4

View File

@ -116,6 +116,15 @@
#define EFLAGS_ID_MASK 0x00200000L #define EFLAGS_ID_MASK 0x00200000L
#define EFLAGS_USER_SANITIZE 0x003F4DD7L #define EFLAGS_USER_SANITIZE 0x003F4DD7L
/* Context control flags */
#define CONTEXT_ARCHITECTURE 0x00010000
#define CONTEXT_CONTROL (CONTEXT_ARCHITECTURE | 0x01)
#define CONTEXT_INTEGER (CONTEXT_ARCHITECTURE | 0x02)
#define CONTEXT_SEGMENTS (CONTEXT_ARCHITECTURE | 0x04)
#define CONTEXT_FLOATING_POINT (CONTEXT_ARCHITECTURE | 0x08)
#define CONTEXT_DEBUG_REGISTERS (CONTEXT_ARCHITECTURE | 0x10)
#define CONTEXT_EXTENDED_REGISTERS (CONTEXT_ARCHITECTURE | 0x20)
/* Interrupt request levels definitions */ /* Interrupt request levels definitions */
#define PASSIVE_LEVEL 0 #define PASSIVE_LEVEL 0
#define LOW_LEVEL 0 #define LOW_LEVEL 0
@ -345,6 +354,15 @@ typedef struct _KEXCEPTION_FRAME
ULONG PlaceHolder; ULONG PlaceHolder;
} KEXCEPTION_FRAME, *PKEXCEPTION_FRAME; } KEXCEPTION_FRAME, *PKEXCEPTION_FRAME;
/* Thread start frame definition */
typedef struct _KSTART_FRAME
{
PKSYSTEM_ROUTINE SystemRoutine;
PKSTART_ROUTINE StartRoutine;
PVOID StartContext;
BOOLEAN UserMode;
} KSTART_FRAME, *PKSTART_FRAME;
/* Switch frame definition */ /* Switch frame definition */
typedef struct _KSWITCH_FRAME typedef struct _KSWITCH_FRAME
{ {
@ -393,6 +411,15 @@ typedef struct _KTRAP_FRAME
ULONG V86Gs; ULONG V86Gs;
} KTRAP_FRAME, *PKTRAP_FRAME; } KTRAP_FRAME, *PKTRAP_FRAME;
/* Thread initialization frame definition */
typedef struct _KTHREAD_INIT_FRAME
{
KSWITCH_FRAME SwitchFrame;
KSTART_FRAME StartFrame;
KTRAP_FRAME TrapFrame;
FX_SAVE_AREA NpxFrame;
} KTHREAD_INIT_FRAME, *PKTHREAD_INIT_FRAME;
/* Special kernel registers structure definition */ /* Special kernel registers structure definition */
typedef struct _KSPECIAL_REGISTERS typedef struct _KSPECIAL_REGISTERS
{ {