Author: sginsberg
Date: Sun Oct 26 09:45:13 2008
New Revision: 36990
URL:
http://svn.reactos.org/svn/reactos?rev=36990&view=rev
Log:
- Fix function definitions to match header changes
- Don't use x86 fiber assembly for amd64, just stub it out completely
- Use AMD64 definitions in BasepInitializeContext, and add a broken KGDT_64_R3_TEB
Modified:
branches/ros-amd64-bringup/reactos/dll/win32/kernel32/misc/utils.c
branches/ros-amd64-bringup/reactos/dll/win32/kernel32/process/proc.c
branches/ros-amd64-bringup/reactos/dll/win32/kernel32/thread/amd64/fiber.S
branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h
Modified: branches/ros-amd64-bringup/reactos/dll/win32/kernel32/misc/utils.c
URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/dll/w…
==============================================================================
--- branches/ros-amd64-bringup/reactos/dll/win32/kernel32/misc/utils.c [iso-8859-1]
(original)
+++ branches/ros-amd64-bringup/reactos/dll/win32/kernel32/misc/utils.c [iso-8859-1] Sun
Oct 26 09:45:13 2008
@@ -386,11 +386,11 @@
/* The other registers are undefined */
/* Setup the Segments */
- Context->SegFs = KGDT_R3_TEB | RPL_MASK;
- Context->SegEs = KGDT_R3_DATA | RPL_MASK;
- Context->SegDs = KGDT_R3_DATA | RPL_MASK;
- Context->SegCs = KGDT_R3_CODE | RPL_MASK;
- Context->SegSs = KGDT_R3_DATA | RPL_MASK;
+ Context->SegFs = KGDT_64_R3_TEB | RPL_MASK;
+ Context->SegEs = KGDT_64_DATA | RPL_MASK;
+ Context->SegDs = KGDT_64_DATA | RPL_MASK;
+ Context->SegCs = KGDT_64_R3_CODE | RPL_MASK;
+ Context->SegSs = KGDT_64_DATA | RPL_MASK;
Context->SegGs = 0;
/* Set the EFLAGS */
Modified: branches/ros-amd64-bringup/reactos/dll/win32/kernel32/process/proc.c
URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/dll/w…
==============================================================================
--- branches/ros-amd64-bringup/reactos/dll/win32/kernel32/process/proc.c [iso-8859-1]
(original)
+++ branches/ros-amd64-bringup/reactos/dll/win32/kernel32/process/proc.c [iso-8859-1] Sun
Oct 26 09:45:13 2008
@@ -33,8 +33,8 @@
*/
BOOL STDCALL
GetProcessAffinityMask (HANDLE hProcess,
- LPDWORD lpProcessAffinityMask,
- LPDWORD lpSystemAffinityMask)
+ PDWORD_PTR lpProcessAffinityMask,
+ PDWORD_PTR lpSystemAffinityMask)
{
PROCESS_BASIC_INFORMATION ProcessInfo;
SYSTEM_BASIC_INFORMATION SystemInfo;
@@ -73,7 +73,7 @@
*/
BOOL STDCALL
SetProcessAffinityMask (HANDLE hProcess,
- DWORD dwProcessAffinityMask)
+ DWORD_PTR dwProcessAffinityMask)
{
NTSTATUS Status;
Modified: branches/ros-amd64-bringup/reactos/dll/win32/kernel32/thread/amd64/fiber.S
URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/dll/w…
==============================================================================
--- branches/ros-amd64-bringup/reactos/dll/win32/kernel32/thread/amd64/fiber.S
[iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/dll/win32/kernel32/thread/amd64/fiber.S
[iso-8859-1] Sun Oct 26 09:45:13 2008
@@ -9,116 +9,9 @@
#include <ndk/asm.h>
-#define CONTEXT_FULL 0x10007
-#define CONTEXT_FLOATING_POINT 0xF
-
.globl _SwitchToFiber
.intel_syntax noprefix
_SwitchToFiber:
- /* Get the TEB */
- mov edx, fs:[KGDT_R3_TEB]
-
- /* Get the Fiber */
- mov eax, [edx+TEB_FIBER_DATA]
-
- /* Save the non-volatile registers */
- mov [eax+FIBER_CONTEXT_EBX], ebx
- mov [eax+FIBER_CONTEXT_ESI], esi
- mov [eax+FIBER_CONTEXT_EDI], edi
- mov [eax+FIBER_CONTEXT_EBP], ebp
-
- /* Check if we're to save FPU State */
- cmp dword ptr [eax+FIBER_CONTEXT_FLAGS], CONTEXT_FULL + CONTEXT_FLOATING_POINT
- jnz NoFpuStateSave
-
- /* Save the FPU State (Status and Control)*/
- fstsw [eax+FIBER_CONTEXT_FLOAT_SAVE_STATUS_WORD]
- fstcw [eax+FIBER_CONTEXT_FLOAT_SAVE_CONTROL_WORD]
-
- /* Check if the CPU supports SIMD MXCSR State Save */
- cmp byte ptr ds:[PROCESSOR_FEATURE_FXSR], 0
- jnz NoFpuStateSave
- stmxcsr [eax+FIBER_CONTEXT_DR6]
-
-NoFpuStateSave:
-
- /* Save stack since we're not touching it anymore */
- mov [eax+FIBER_CONTEXT_ESP], esp
-
- /* Transfer some data from the TEB */
- mov ecx, [edx+TEB_FLS_DATA]
- mov [eax+FIBER_FLS_DATA], ecx
- mov ecx, [edx+TEB_ACTIVATION_CONTEXT_STACK_POINTER]
- mov [eax+FIBER_ACTIVATION_CONTEXT_STACK], ecx
-
- /* Transfer some data related to the Stack */
- mov ecx, [edx+TEB_EXCEPTION_LIST]
- mov [eax+FIBER_EXCEPTION_LIST], ecx
- mov ecx, [edx+TEB_STACK_LIMIT]
- mov [eax+FIBER_STACK_LIMIT], ecx
- mov ecx, [edx+TEB_GUARANTEED_STACK_BYTES]
- mov [eax+FIBER_GUARANTEED_STACK_BYTES], ecx
-
- /* Switch to the new fiber */
- mov ecx, [esp+4]
- mov [edx+TEB_FIBER_DATA], ecx
-
- /* Switch Fiber Data */
- mov esi, [ecx+FIBER_EXCEPTION_LIST]
- mov [edx+TEB_EXCEPTION_LIST], esi
- mov esi, [ecx+FIBER_STACK_BASE]
- mov [edx+TEB_STACK_BASE], esi
- mov esi, [ecx+FIBER_STACK_LIMIT]
- mov [edx+TEB_STACK_LIMIT], esi
- mov esi, [ecx+FIBER_DEALLOCATION_STACK]
- mov [edx+TEB_DEALLOCATION_STACK], esi
- mov esi, [ecx+FIBER_GUARANTEED_STACK_BYTES]
- mov [edx+TEB_GUARANTEED_STACK_BYTES], esi
- mov esi, [ecx+FIBER_ACTIVATION_CONTEXT_STACK]
- mov [edx+TEB_ACTIVATION_CONTEXT_STACK_POINTER], esi
-
- /* Restore FPU State */
- cmp dword ptr [eax+FIBER_CONTEXT_FLAGS], CONTEXT_FULL + CONTEXT_FLOATING_POINT
- jnz NoFpuStateRestore
-
- /* Check if the Status Word Changed */
- mov esi, [eax+FIBER_CONTEXT_FLOAT_SAVE_STATUS_WORD]
- cmp si, word ptr [ecx+FIBER_CONTEXT_FLOAT_SAVE_STATUS_WORD]
- jnz StatusWordChanged
-
- /* Check if the Control Word Changed */
- mov esi, [eax+FIBER_CONTEXT_FLOAT_SAVE_CONTROL_WORD]
- cmp si, word ptr [ecx+FIBER_CONTEXT_FLOAT_SAVE_CONTROL_WORD]
- jz ControlWordEqual
-
-StatusWordChanged:
-
- /* Load the new one */
- mov word ptr [ecx+FIBER_CONTEXT_FLOAT_SAVE_TAG_WORD], 0xFFFF
- fldenv [ecx+FIBER_CONTEXT_FLOAT_SAVE_CONTROL_WORD]
-
-ControlWordEqual:
-
- /* Load the new one */
- cmp byte ptr ds:[PROCESSOR_FEATURE_FXSR], 0
- jnz NoFpuStateRestore
- ldmxcsr [ecx+FIBER_CONTEXT_DR6]
-
-NoFpuStateRestore:
-
- /* Restore non-volatile registers */
- mov esi, [ecx+FIBER_CONTEXT_ESI]
- mov edi, [ecx+FIBER_CONTEXT_EDI]
- mov ebx, [ecx+FIBER_CONTEXT_EBX]
- mov ebp, [ecx+FIBER_CONTEXT_EBP]
- mov esp, [ecx+FIBER_CONTEXT_ESP]
-
- /* Restore FLS Data */
- mov eax, [ecx+FIBER_FLS_DATA]
- mov [edx+TEB_FLS_DATA], eax
-
- /* Return */
+ /* FIXME: TODO */
ret 4
-
-/* EOF */
Modified: branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h
URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/inclu…
==============================================================================
--- branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h [iso-8859-1]
(original)
+++ branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h [iso-8859-1] Sun Oct 26
09:45:13 2008
@@ -64,6 +64,7 @@
#define KGDT_64_R3_CODE 0x0030 // 33
#define KGDT_TSS 0x0040
#define KGDT_32_R3_TEB 0x0050 // 53
+#define KGDT_64_R3_TEB 0x0000 // FIXME
//