reactos/sdk/lib/runtmchk/i386/_RTC_CheckEsp.S

50 lines
986 B
ArmAsm

/*
* PROJECT: MSVC runtime check support library
* LICENSE: BSD - See COPYING.ARM in the top level directory
* PURPOSE: Provides support functions for MSVC runtime checks
* PROGRAMMER: Timo Kreuzer (timo.kreuzer@reactos.org)
*/
#include <asm.inc>
.code
EXTERN __RTC_Failure:PROC
/*
This function is invoked like this:
mov esi, esp
// Do the actual function call
cmp esp, esi
call __RTC_CheckEsp
http://stackoverflow.com/questions/3914750/hows-rtc-checkesp-implemented
*/
PUBLIC __RTC_CheckEsp
__RTC_CheckEsp:
/* We check if the zero flag is set, and if it is, everything is fine
and we return to the caller */
je __RTC_CheckEsp_return
push ebp
mov ebp, esp
pusha
// void _RTC_Failure(void* retaddr, int errnum);
push 0 // errnum
push dword ptr [esp + 4] // retaddr
call __RTC_Failure
add esp, 8
popa
pop ebp
__RTC_CheckEsp_return:
ret
END