ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

stubs.c
Go to the documentation of this file.
00001 /*
00002  * COPYRIGHT:         See COPYING in the top level directory
00003  * PROJECT:           ReactOS Run-Time Library
00004  * PURPOSE:           AMD64 stubs
00005  * FILE:              lib/rtl/amd64/stubs.c
00006  * PROGRAMMERS:        Stefan Ginsberg (stefan.ginsberg@reactos.org)
00007  */
00008 
00009 /* INCLUDES *****************************************************************/
00010 
00011 #include <rtl.h>
00012 #define NDEBUG
00013 #include <debug.h>
00014 #include "amd64/ketypes.h"
00015 
00016 /* PUBLIC FUNCTIONS **********************************************************/
00017 
00018 /*
00019  * @unimplemented
00020  */
00021 VOID
00022 NTAPI
00023 RtlInitializeContext(IN HANDLE ProcessHandle,
00024                      OUT PCONTEXT ThreadContext,
00025                      IN PVOID ThreadStartParam  OPTIONAL,
00026                      IN PTHREAD_START_ROUTINE ThreadStartAddress,
00027                      IN PINITIAL_TEB StackBase)
00028 {
00029 
00030     ThreadContext->Rax = 0;
00031     ThreadContext->Rbx = 0;
00032     ThreadContext->Rcx = (ULONG64)ThreadStartParam;
00033     ThreadContext->Rdx = 0;
00034     ThreadContext->Rsi = 0;
00035     ThreadContext->Rdi = 0;
00036     ThreadContext->Rbp = 0;
00037     ThreadContext->R8 = 0;
00038     ThreadContext->R9 = 0;
00039     ThreadContext->R10 = 0;
00040     ThreadContext->R11 = 0;
00041     ThreadContext->R12 = 0;
00042 
00043     /* Set the Selectors */
00044     if ((LONG64)ThreadStartAddress < 0)
00045     {
00046         /* Initialize kernel mode segments */
00047         ThreadContext->SegCs = KGDT64_R0_CODE;
00048         ThreadContext->SegDs = KGDT64_R3_DATA;
00049         ThreadContext->SegEs = KGDT64_R3_DATA;
00050         ThreadContext->SegFs = KGDT64_R3_CMTEB;
00051         ThreadContext->SegGs = KGDT64_R3_DATA;
00052         ThreadContext->SegSs = KGDT64_R0_DATA;
00053     }
00054     else
00055     {
00056         /* Initialize user mode segments */
00057         ThreadContext->SegCs = KGDT64_R3_CODE |  RPL_MASK;
00058         ThreadContext->SegDs = KGDT64_R3_DATA |  RPL_MASK;
00059         ThreadContext->SegEs = KGDT64_R3_DATA |  RPL_MASK;
00060         ThreadContext->SegFs = KGDT64_R3_CMTEB |  RPL_MASK;
00061         ThreadContext->SegGs = KGDT64_R3_DATA |  RPL_MASK;
00062         ThreadContext->SegSs = KGDT64_R3_DATA |  RPL_MASK;
00063     }
00064 
00065     /* Enable Interrupts */
00066     ThreadContext->EFlags = EFLAGS_INTERRUPT_MASK;
00067 
00068     /* Settings passed */
00069     ThreadContext->Rip = (ULONG64)ThreadStartAddress;
00070     ThreadContext->Rsp = (ULONG64)StackBase - 6 * sizeof(PVOID);
00071 
00072     /* Align stack by 16 and substract 8 (unaligned on function entry) */
00073     ThreadContext->Rsp &= ~15;
00074     ThreadContext->Rsp -= 8;
00075 
00076     /* Only the basic Context is initialized */
00077     ThreadContext->ContextFlags = CONTEXT_CONTROL |
00078                                   CONTEXT_INTEGER |
00079                                   CONTEXT_SEGMENTS;
00080 
00081     return;
00082 }
00083 
00084 /*
00085  * @unimplemented
00086  */
00087 PVOID
00088 NTAPI
00089 RtlpGetExceptionAddress(VOID)
00090 {
00091     UNIMPLEMENTED;
00092     return NULL;
00093 }
00094 
00095 /*
00096  * @unimplemented
00097  */
00098 BOOLEAN
00099 NTAPI
00100 RtlDispatchException(IN PEXCEPTION_RECORD ExceptionRecord,
00101                      IN PCONTEXT Context)
00102 {
00103     UNIMPLEMENTED;
00104     return FALSE;
00105 }
00106 
00107 NTSYSAPI
00108 VOID
00109 RtlRestoreContext(
00110     PCONTEXT ContextRecord,
00111     PEXCEPTION_RECORD ExceptionRecord)
00112 {
00113     UNIMPLEMENTED;
00114 }
00115 
00116 

Generated on Sat May 26 2012 04:20:19 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.