ReactOS 0.4.15-dev-8236-g99f0937
inline_ntcurrentteb.h
Go to the documentation of this file.
1#ifndef _INLINE_NT_CURRENTTEB_H_
2#define _INLINE_NT_CURRENTTEB_H_
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
9{
10#if defined(_M_IX86)
11 return (struct _TEB *)__readfsdword(0x18);
12#elif defined(_M_AMD64)
13 return (struct _TEB *)__readgsqword(FIELD_OFFSET(NT_TIB, Self));
14#elif defined(_M_ARM)
15 // return (struct _TEB *)KeGetPcr()->Used_Self;
16 return (struct _TEB *)(ULONG_PTR)_MoveFromCoprocessor(CP15_TPIDRURW);
17#elif defined (_M_ARM64)
18 //UNIMPLEMENTED;
19 return 0;
20// #elif defined(_M_PPC)
21// return (struct _TEB *)_read_teb_dword(0x18);
22#else
23#error Unsupported architecture
24#endif
25}
26
27#ifdef __cplusplus
28}
29#endif
30
31#endif // _INLINE_NT_CURRENTTEB_H_
#define ULONG_PTR
Definition: config.h:101
PPC_QUAL unsigned long __readfsdword(const unsigned long Offset)
Definition: intrin_ppc.h:382
#define NtCurrentTeb
#define CP15_TPIDRURW
Definition: ketypes.h:131
Definition: compat.h:836
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
#define FORCEINLINE
Definition: wdftypes.h:67