[INCLUDE]

- Add missing MI_HIGHEST_USER_ADDRESS for ARM
- Fix definition of ARM CONTEXT structure

svn path=/trunk/; revision=67160
This commit is contained in:
Timo Kreuzer 2015-04-11 12:24:34 +00:00
parent 4f80779e54
commit 9db44f101d
5 changed files with 117 additions and 35 deletions

View file

@ -90,7 +90,7 @@ OFFSET(CsR12, CONTEXT, R12),
OFFSET(CsSp, CONTEXT, Sp),
OFFSET(CsLr, CONTEXT, Lr),
OFFSET(CsPc, CONTEXT, Pc),
OFFSET(CsPsr, CONTEXT, Psr),
OFFSET(CsCpsr, CONTEXT, Cpsr),
CONSTANT(CONTEXT_FULL),

View file

@ -38,6 +38,11 @@ extern "C" {
#define MM_ALLOCATION_GRANULARITY_SHIFT 16L
#define MM_PAGE_FRAME_NUMBER_SIZE 20
//
// User space range limit
//
#define MI_HIGHEST_USER_ADDRESS (PVOID)0x7FFEFFFF
//
// Sanity checks for Paging Macros
//

View file

@ -3740,6 +3740,14 @@ typedef struct _CONTEXT {
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER)
typedef struct _NEON128 {
ULONGLONG Low;
LONGLONG High;
} NEON128, *PNEON128;
#define ARM_MAX_BREAKPOINTS 8
#define ARM_MAX_WATCHPOINTS 1
typedef struct _CONTEXT {
/* The flags values within this flag control the contents of
a CONTEXT record.
@ -3778,7 +3786,24 @@ typedef struct _CONTEXT {
DWORD Sp;
DWORD Lr;
DWORD Pc;
DWORD Psr;
DWORD Cpsr;
/* Floating Point/NEON Registers */
DWORD Fpscr;
DWORD Padding;
union {
NEON128 Q[16];
ULONGLONG D[32];
DWORD S[32];
} DUMMYUNIONNAME;
/* Debug registers */
DWORD Bvr[ARM_MAX_BREAKPOINTS];
DWORD Bcr[ARM_MAX_BREAKPOINTS];
DWORD Wvr[ARM_MAX_WATCHPOINTS];
DWORD Wcr[ARM_MAX_WATCHPOINTS];
DWORD Padding2[2];
} CONTEXT;
#else

View file

@ -79,46 +79,73 @@ typedef struct _KFLOATING_SAVE
#define CONTEXT_INTEGER (CONTEXT_ARM | 0x00000002L)
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER)
typedef struct _NEON128 {
ULONGLONG Low;
LONGLONG High;
} NEON128, *PNEON128;
#define ARM_MAX_BREAKPOINTS 8
#define ARM_MAX_WATCHPOINTS 1
typedef struct _CONTEXT {
/* The flags values within this flag control the contents of
a CONTEXT record.
/* The flags values within this flag control the contents of
a CONTEXT record.
If the context record is used as an input parameter, then
for each portion of the context record controlled by a flag
whose value is set, it is assumed that that portion of the
context record contains valid context. If the context record
is being used to modify a thread's context, then only that
portion of the threads context will be modified.
If the context record is used as an input parameter, then
for each portion of the context record controlled by a flag
whose value is set, it is assumed that that portion of the
context record contains valid context. If the context record
is being used to modify a thread's context, then only that
portion of the threads context will be modified.
If the context record is used as an IN OUT parameter to capture
the context of a thread, then only those portions of the thread's
context corresponding to set flags will be returned.
If the context record is used as an IN OUT parameter to capture
the context of a thread, then only those portions of the thread's
context corresponding to set flags will be returned.
The context record is never used as an OUT only parameter. */
The context record is never used as an OUT only parameter. */
ULONG ContextFlags;
ULONG ContextFlags;
/* This section is specified/returned if the ContextFlags word contains
the flag CONTEXT_INTEGER. */
ULONG R0;
ULONG R1;
ULONG R2;
ULONG R3;
ULONG R4;
ULONG R5;
ULONG R6;
ULONG R7;
ULONG R8;
ULONG R9;
ULONG R10;
ULONG R11;
ULONG R12;
/* This section is specified/returned if the ContextFlags word contains
the flag CONTEXT_INTEGER. */
ULONG R0;
ULONG R1;
ULONG R2;
ULONG R3;
ULONG R4;
ULONG R5;
ULONG R6;
ULONG R7;
ULONG R8;
ULONG R9;
ULONG R10;
ULONG R11;
ULONG R12;
ULONG Sp;
ULONG Lr;
ULONG Pc;
ULONG Psr;
ULONG Sp;
ULONG Lr;
ULONG Pc;
ULONG Cpsr;
/* Floating Point/NEON Registers */
ULONG Fpscr;
ULONG Padding;
union {
NEON128 Q[16];
ULONGLONG D[32];
ULONG S[32];
} DUMMYUNIONNAME;
/* Debug registers */
ULONG Bvr[ARM_MAX_BREAKPOINTS];
ULONG Bcr[ARM_MAX_BREAKPOINTS];
ULONG Wvr[ARM_MAX_WATCHPOINTS];
ULONG Wcr[ARM_MAX_WATCHPOINTS];
ULONG Padding2[2];
} CONTEXT;
#endif
//

View file

@ -2383,6 +2383,14 @@ typedef struct _CONTEXT {
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER)
typedef struct _NEON128 {
ULONGLONG Low;
LONGLONG High;
} NEON128, *PNEON128;
#define ARM_MAX_BREAKPOINTS 8
#define ARM_MAX_WATCHPOINTS 1
typedef struct _CONTEXT {
/* The flags values within this flag control the contents of
a CONTEXT record.
@ -2421,7 +2429,24 @@ typedef struct _CONTEXT {
DWORD Sp;
DWORD Lr;
DWORD Pc;
DWORD Psr;
DWORD Cpsr;
/* Floating Point/NEON Registers */
DWORD Fpscr;
DWORD Padding;
union {
NEON128 Q[16];
ULONGLONG D[32];
DWORD S[32];
} DUMMYUNIONNAME;
/* Debug registers */
DWORD Bvr[ARM_MAX_BREAKPOINTS];
DWORD Bcr[ARM_MAX_BREAKPOINTS];
DWORD Wvr[ARM_MAX_WATCHPOINTS];
DWORD Wcr[ARM_MAX_WATCHPOINTS];
DWORD Padding2[2];
} CONTEXT;
#else