Author: tkreuzer
Date: Sat Jul 23 17:16:51 2011
New Revision: 52810

URL: http://svn.reactos.org/svn/reactos?rev=52810&view=rev
Log:
{KERNEL32]
- move BaseFiberStartup to fiber.S
- add FPO debug info for MSVC builds
- remove excessive END directives (fixes msvc build)
- add a stub for amd64

Modified:
    trunk/reactos/dll/win32/kernel32/client/amd64/fiber.S
    trunk/reactos/dll/win32/kernel32/client/i386/fiber.S
    trunk/reactos/dll/win32/kernel32/client/i386/thread.S

Modified: trunk/reactos/dll/win32/kernel32/client/amd64/fiber.S
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/amd64/fiber.S?rev=52810&r1=52809&r2=52810&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/client/amd64/fiber.S [iso-8859-1] 
(original)
+++ trunk/reactos/dll/win32/kernel32/client/amd64/fiber.S [iso-8859-1] Sat Jul 
23 17:16:51 2011
@@ -1,19 +1,27 @@
 /*
  * COPYRIGHT:   See COPYING in the top level directory
  * PROJECT:     ReactOS system libraries
- * FILE:        lib/kernel32/thread/i386/fiber.S
- * PURPOSE:     Fiber context switch code for the x86 architecture
- * PROGRAMMERS: Alex Ionescu ([email protected])
- *              KJK::Hyperion <[email protected]>
+ * FILE:        dll/win32//kernel32/client/amd64/fiber.S
+ * PURPOSE:     Fiber context switch code for the amd64 architecture
+ * PROGRAMMER:
  */
 
 #include <asm.inc>
+
+PUBLIC BaseFiberStartup
+.PROC BaseFiberStartup
+    UNIMPLEMENTED BaseFiberStartup
+    /* FIXME: TODO */
+    ret
+
+.ENDP BaseFiberStartup
 
 
 PUBLIC SwitchToFiber
 
 SwitchToFiber:
+    UNIMPLEMENTED BaseFiberStartup
     /* FIXME: TODO */
-    ret 4
+    ret
 
 END

Modified: trunk/reactos/dll/win32/kernel32/client/i386/fiber.S
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/i386/fiber.S?rev=52810&r1=52809&r2=52810&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/client/i386/fiber.S [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/kernel32/client/i386/fiber.S [iso-8859-1] Sat Jul 
23 17:16:51 2011
@@ -10,16 +10,32 @@
 #include <asm.inc>
 #include <ks386.inc>
 
+EXTERN _BaseThreadStartup@8:PROC
+
 .code
+
+PUBLIC _BaseFiberStartup@0
+.PROC BaseFiberStartup@0
+    /* Frame pointer is zeroed */
+    FPO 0, 0, 0, 0, 0, FRAME_FPO
+
+    /* Get the fiber data */
+    mov eax, fs:[TEB_FIBER_DATA]
+
+    push dword ptr [eax+FIBER_CONTEXT_EBX] /* Parameter */
+    push dword ptr [eax+FIBER_CONTEXT_EAX] /* Start Address */
+    call _BaseThreadStartup@8
+.ENDP BaseFiberStartup@0
+
 
 PUBLIC _SwitchToFiber@4
 _SwitchToFiber@4:
     /* Get the TEB */
     mov edx, fs:[TEB_SELF]
-    
+
     /* 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
@@ -29,27 +45,27 @@
     /* Check if we're to save FPU State */
     cmp dword ptr [eax+FIBER_CONTEXT_FLAGS], CONTEXT_FULL OR 
CONTEXT_FLOATING_POINT
     jnz NoFpuStateSave
-    
+
     /* Save the FPU State (Status and Control)*/
     fstsw [eax+FIBER_CONTEXT_FLOAT_SAVE_STATUS_WORD]
     fnstcw [eax+FIBER_CONTEXT_FLOAT_SAVE_CONTROL_WORD]
-    
+
     /* Check if the CPU supports SIMD MXCSR State Save */
     cmp byte ptr ds:[PF_XMMI_INSTRUCTIONS_AVAILABLE], 1
     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
@@ -57,11 +73,11 @@
     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
@@ -75,34 +91,34 @@
     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 OR 
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], HEX(0FFFF)
     fldenv [ecx+FIBER_CONTEXT_FLOAT_SAVE_CONTROL_WORD]
-    
+
 ControlWordEqual:
 
     /* Load the new one */
     cmp byte ptr ds:[PF_XMMI_INSTRUCTIONS_AVAILABLE], 1
     jnz NoFpuStateRestore
     ldmxcsr [ecx+FIBER_CONTEXT_DR6]
-    
+
 NoFpuStateRestore:
 
     /* Restore non-volatile registers */
@@ -111,7 +127,7 @@
     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

Modified: trunk/reactos/dll/win32/kernel32/client/i386/thread.S
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/i386/thread.S?rev=52810&r1=52809&r2=52810&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/client/i386/thread.S [iso-8859-1] 
(original)
+++ trunk/reactos/dll/win32/kernel32/client/i386/thread.S [iso-8859-1] Sat Jul 
23 17:16:51 2011
@@ -24,7 +24,7 @@
     push eax                  /* lpStartAddress */
     push 0                    /* Return EIP */
     jmp _BaseThreadStartup@8
-END
+
 
 PUBLIC _BaseProcessStartThunk@0
 _BaseProcessStartThunk@0:
@@ -35,16 +35,7 @@
     push 0                    /* Return EIP */
     jmp _BaseProcessStartup@4
 
-END
 
-PUBLIC _BaseFiberStartup@0
-_BaseFiberStartup@0:
-    /* Get the fiber data */
-    mov eax, fs:[TEB_FIBER_DATA]
-
-    push dword ptr [eax+FIBER_CONTEXT_EBX] /* Parameter */
-    push dword ptr [eax+FIBER_CONTEXT_EAX] /* Start Address */
-    call _BaseThreadStartup@8
 END
 
 /* EOF */


Reply via email to