mirror of
https://github.com/reactos/reactos.git
synced 2024-10-01 06:57:08 +00:00
[KERNEL32]: Implement BaseFiberStartup in ASM, just like the thread/process thunks, so we get a "naked" thunk without any compiler-generated crap.
svn path=/trunk/; revision=52806
This commit is contained in:
parent
84a32acb78
commit
8a06cf76c6
|
@ -36,32 +36,6 @@ BaseRundownFls(IN PVOID FlsData)
|
|||
|
||||
}
|
||||
|
||||
__declspec(noreturn)
|
||||
VOID
|
||||
WINAPI
|
||||
BaseFiberStartup(VOID)
|
||||
{
|
||||
#ifdef _M_IX86
|
||||
PFIBER Fiber = GetCurrentFiber();
|
||||
|
||||
/* Call the Thread Startup Routine */
|
||||
DPRINT("Starting Fiber\n");
|
||||
BaseThreadStartup((LPTHREAD_START_ROUTINE)Fiber->Context.Eax,
|
||||
(LPVOID)Fiber->Context.Ebx);
|
||||
#elif defined(_M_AMD64)
|
||||
PFIBER Fiber = GetFiberData();
|
||||
|
||||
/* Call the Thread Startup Routine */
|
||||
DPRINT1("Starting Fiber\n");
|
||||
BaseThreadStartup((LPTHREAD_START_ROUTINE)Fiber->Context.Rax,
|
||||
(LPVOID)Fiber->Context.Rbx);
|
||||
#else
|
||||
#warning Unknown architecture
|
||||
UNIMPLEMENTED;
|
||||
DbgBreakPoint();
|
||||
#endif
|
||||
}
|
||||
|
||||
/* PUBLIC FUNCTIONS ***********************************************************/
|
||||
|
||||
/*
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
*/
|
||||
|
||||
#include <asm.inc>
|
||||
#include <ks386.inc>
|
||||
|
||||
.code
|
||||
|
||||
|
@ -14,8 +15,6 @@ EXTERN _BaseThreadStartup@8:PROC
|
|||
EXTERN _BaseProcessStartup@4:PROC
|
||||
|
||||
PUBLIC _BaseThreadStartupThunk@0
|
||||
PUBLIC _BaseProcessStartThunk@0
|
||||
|
||||
_BaseThreadStartupThunk@0:
|
||||
|
||||
/* Start out fresh */
|
||||
|
@ -25,9 +24,10 @@ _BaseThreadStartupThunk@0:
|
|||
push eax /* lpStartAddress */
|
||||
push 0 /* Return EIP */
|
||||
jmp _BaseThreadStartup@8
|
||||
END
|
||||
|
||||
PUBLIC _BaseProcessStartThunk@0
|
||||
_BaseProcessStartThunk@0:
|
||||
|
||||
/* Start out fresh */
|
||||
xor ebp, ebp
|
||||
|
||||
|
@ -36,4 +36,15 @@ _BaseProcessStartThunk@0:
|
|||
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 */
|
||||
|
|
Loading…
Reference in a new issue