ntdll: Reimplemented _chkstk and _alloca_probe directly in assembly.
This commit is contained in:
parent
b48d9590a3
commit
50bbfb3c8c
|
@ -1233,7 +1233,7 @@
|
|||
@ stdcall -ret64 _alldiv(double double)
|
||||
# @ stub _alldvrm
|
||||
@ stdcall -ret64 _allmul(double double)
|
||||
@ stdcall -i386 _alloca_probe()
|
||||
@ stdcall -i386 -norelay _alloca_probe()
|
||||
@ stdcall -ret64 _allrem(double double)
|
||||
# @ stub _allshl
|
||||
# @ stub _allshr
|
||||
|
@ -1242,7 +1242,7 @@
|
|||
# @ stub _aulldvrm
|
||||
@ stdcall -ret64 _aullrem(double double)
|
||||
# @ stub _aullshr
|
||||
@ stdcall -i386 _chkstk()
|
||||
@ stdcall -i386 -norelay _chkstk()
|
||||
@ stub _fltused
|
||||
@ cdecl -ret64 _ftol() NTDLL__ftol
|
||||
@ cdecl _i64toa(double ptr long)
|
||||
|
|
|
@ -391,11 +391,13 @@ DWORD WINAPI RtlDeleteSecurityObject(DWORD x1) {
|
|||
* Glorified "enter xxxx".
|
||||
*/
|
||||
#ifdef __i386__
|
||||
void WINAPI __regs__chkstk( CONTEXT86 *context )
|
||||
{
|
||||
context->Esp -= context->Eax;
|
||||
}
|
||||
DEFINE_REGS_ENTRYPOINT( _chkstk, 0, 0 );
|
||||
__ASM_GLOBAL_FUNC( _chkstk,
|
||||
"negl %eax\n\t"
|
||||
"addl %esp,%eax\n\t"
|
||||
"xchgl %esp,%eax\n\t"
|
||||
"movl 0(%eax),%eax\n\t" /* copy return address from old location */
|
||||
"movl %eax,0(%esp)\n\t"
|
||||
"ret" );
|
||||
#endif
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -404,11 +406,13 @@ DEFINE_REGS_ENTRYPOINT( _chkstk, 0, 0 );
|
|||
* Glorified "enter xxxx".
|
||||
*/
|
||||
#ifdef __i386__
|
||||
void WINAPI __regs__alloca_probe( CONTEXT86 *context )
|
||||
{
|
||||
context->Esp -= context->Eax;
|
||||
}
|
||||
DEFINE_REGS_ENTRYPOINT( _alloca_probe, 0, 0 );
|
||||
__ASM_GLOBAL_FUNC( _alloca_probe,
|
||||
"negl %eax\n\t"
|
||||
"addl %esp,%eax\n\t"
|
||||
"xchgl %esp,%eax\n\t"
|
||||
"movl 0(%eax),%eax\n\t" /* copy return address from old location */
|
||||
"movl %eax,0(%esp)\n\t"
|
||||
"ret" );
|
||||
#endif
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue