ReactOS 0.4.17-dev-683-g0dafdc5
stubs.c
Go to the documentation of this file.
1/*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Run-Time Library
4 * PURPOSE: AMD64 stubs
5 * FILE: lib/rtl/amd64/stubs.c
6 * PROGRAMMERS: Stefan Ginsberg (stefan.ginsberg@reactos.org)
7 */
8
9/* INCLUDES *****************************************************************/
10
11#include <rtl.h>
12#define NDEBUG
13#include <debug.h>
14#include "amd64/ketypes.h"
15
16/* PUBLIC FUNCTIONS **********************************************************/
17
18/*
19 * @unimplemented
20 */
21VOID
25 _Out_ PCONTEXT ThreadContext,
26 _In_opt_ PVOID ThreadStartParam,
27 _In_ PTHREAD_START_ROUTINE ThreadStartAddress,
28 _In_ PVOID StackBase)
29{
30 /* Make sure the stack is aligned */
31 if (((ULONG_PTR)StackBase & 0xF) != 0)
32 {
34 }
35
36 /* Initialize StartAddress and Stack */
37 ThreadContext->Rip = (ULONG64)ThreadStartAddress;
38 ThreadContext->Rsp = (ULONG64)StackBase;
39
40 /* Enable Interrupts */
41 ThreadContext->EFlags = EFLAGS_INTERRUPT_MASK;
42
43 /* Set start parameter */
44 ThreadContext->Rcx = (ULONG64)ThreadStartParam;
45
46 /* Initialize floating point and SSE state */
47 RtlZeroMemory(&ThreadContext->FltSave, sizeof(ThreadContext->FltSave));
48 ThreadContext->MxCsr = INITIAL_MXCSR;
49 ThreadContext->FltSave.MxCsr = INITIAL_MXCSR;
50 ThreadContext->FltSave.ControlWord = INITIAL_FPCSR;
51
52 /* Initialize integer registers */
53 ThreadContext->Rbp = 0x0000000000000000ull;
54 ThreadContext->Rax = 0x0000000000000000ull;
55 ThreadContext->Rbx = 0x0000000000000001ull;
56 ThreadContext->Rsi = 0x0000000000000004ull;
57 ThreadContext->Rdi = 0x0000000000000005ull;
58 ThreadContext->R8 = 0x0000000000000008ull;
59 ThreadContext->R9 = 0xF0E0D0C0A0908070ull;
60 ThreadContext->R10 = 0x000000000000000Aull;
61 ThreadContext->R11 = 0x000000000000000Bull;
62 ThreadContext->R12 = 0x000000000000000Cull;
63 ThreadContext->R13 = 0x000000000000000Dull;
64 ThreadContext->R14 = 0x000000000000000Eull;
65 ThreadContext->R15 = 0x000000000000000Full;
66
67 /* Set the context flags */
68 ThreadContext->ContextFlags = CONTEXT_FULL;
69
70 return;
71}
72
76 _In_ HANDLE ThreadHandle,
78 _In_opt_ PVOID NormalContext,
81{
84}
85
#define EFLAGS_INTERRUPT_MASK
LONG NTSTATUS
Definition: precomp.h:26
#define UNIMPLEMENTED
Definition: ntoskrnl.c:15
#define STATUS_NOT_IMPLEMENTED
Definition: d3dkmdt.h:42
unsigned __int64 ULONG64
Definition: imports.h:198
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE ApcRoutine
Definition: iofuncs.h:726
VOID(NTAPI * PKNORMAL_ROUTINE)(IN PVOID NormalContext OPTIONAL, IN PVOID SystemArgument1 OPTIONAL, IN PVOID SystemArgument2 OPTIONAL)
Definition: ketypes.h:888
_In_ HANDLE ProcessHandle
Definition: mmfuncs.h:407
DECLSPEC_NORETURN NTSYSAPI VOID NTAPI RtlRaiseStatus(_In_ NTSTATUS Status)
ULONG(NTAPI * PTHREAD_START_ROUTINE)(PVOID Parameter)
Definition: rtltypes.h:568
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define _In_opt_
Definition: no_sal2.h:212
#define _Reserved_
Definition: no_sal2.h:504
#define CONTEXT_FULL
Definition: nt_native.h:1378
#define STATUS_BAD_INITIAL_STACK
Definition: ntstatus.h:339
#define INITIAL_FPCSR
#define INITIAL_MXCSR
VOID NTAPI RtlInitializeContext(_Reserved_ HANDLE ProcessHandle, _Out_ PCONTEXT ThreadContext, _In_opt_ PVOID ThreadStartParam, _In_ PTHREAD_START_ROUTINE ThreadStartAddress, _In_ PVOID StackBase)
Definition: stubs.c:23
NTSTATUS NTAPI RtlQueueApcWow64Thread(_In_ HANDLE ThreadHandle, _In_ PKNORMAL_ROUTINE ApcRoutine, _In_opt_ PVOID NormalContext, _In_opt_ PVOID SystemArgument1, _In_opt_ PVOID SystemArgument2)
Definition: stubs.c:75
#define NTAPI
Definition: typedefs.h:36
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
uint32_t ULONG_PTR
Definition: typedefs.h:65
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
Definition: ketypes.h:756
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
Definition: ketypes.h:757