From 9db44f101d2186b8ebb7eaf8188c316c6a28d67b Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 11 Apr 2015 12:24:34 +0000 Subject: [PATCH] [INCLUDE] - Add missing MI_HIGHEST_USER_ADDRESS for ARM - Fix definition of ARM CONTEXT structure svn path=/trunk/; revision=67160 --- reactos/include/asm/ksarm.template.h | 2 +- reactos/include/ndk/arm/mmtypes.h | 5 ++ reactos/include/psdk/winnt.h | 27 ++++++++- reactos/include/reactos/arm/armddk.h | 91 ++++++++++++++++++---------- reactos/include/xdk/winnt_old.h | 27 ++++++++- 5 files changed, 117 insertions(+), 35 deletions(-) diff --git a/reactos/include/asm/ksarm.template.h b/reactos/include/asm/ksarm.template.h index 28533f6e1c7..15c1e657a54 100644 --- a/reactos/include/asm/ksarm.template.h +++ b/reactos/include/asm/ksarm.template.h @@ -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), diff --git a/reactos/include/ndk/arm/mmtypes.h b/reactos/include/ndk/arm/mmtypes.h index 56fac23c556..75cae06501c 100644 --- a/reactos/include/ndk/arm/mmtypes.h +++ b/reactos/include/ndk/arm/mmtypes.h @@ -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 // diff --git a/reactos/include/psdk/winnt.h b/reactos/include/psdk/winnt.h index 051ccdb505b..acfdeb5e323 100644 --- a/reactos/include/psdk/winnt.h +++ b/reactos/include/psdk/winnt.h @@ -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 diff --git a/reactos/include/reactos/arm/armddk.h b/reactos/include/reactos/arm/armddk.h index 814f64b82af..716213113c3 100644 --- a/reactos/include/reactos/arm/armddk.h +++ b/reactos/include/reactos/arm/armddk.h @@ -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 // diff --git a/reactos/include/xdk/winnt_old.h b/reactos/include/xdk/winnt_old.h index 048757c210d..7ac7c94b371 100644 --- a/reactos/include/xdk/winnt_old.h +++ b/reactos/include/xdk/winnt_old.h @@ -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