1*ef84fd3bSjoerg// This file is dual licensed under the MIT and the University of Illinois Open 2*ef84fd3bSjoerg// Source Licenses. See LICENSE.TXT for details. 3*ef84fd3bSjoerg 4*ef84fd3bSjoerg#include "../assembly.h" 5*ef84fd3bSjoerg 6*ef84fd3bSjoerg// _chkstk routine 7*ef84fd3bSjoerg// This routine is windows specific 8*ef84fd3bSjoerg// http://msdn.microsoft.com/en-us/library/ms648426.aspx 9*ef84fd3bSjoerg 10*ef84fd3bSjoerg#ifdef __i386__ 11*ef84fd3bSjoerg 12*ef84fd3bSjoerg.text 13*ef84fd3bSjoerg.balign 4 14*ef84fd3bSjoergDEFINE_COMPILERRT_FUNCTION(__chkstk_ms) 15*ef84fd3bSjoerg push %ecx 16*ef84fd3bSjoerg push %eax 17*ef84fd3bSjoerg cmp $0x1000,%eax 18*ef84fd3bSjoerg lea 12(%esp),%ecx 19*ef84fd3bSjoerg jb 1f 20*ef84fd3bSjoerg2: 21*ef84fd3bSjoerg sub $0x1000,%ecx 22*ef84fd3bSjoerg test %ecx,(%ecx) 23*ef84fd3bSjoerg sub $0x1000,%eax 24*ef84fd3bSjoerg cmp $0x1000,%eax 25*ef84fd3bSjoerg ja 2b 26*ef84fd3bSjoerg1: 27*ef84fd3bSjoerg sub %eax,%ecx 28*ef84fd3bSjoerg test %ecx,(%ecx) 29*ef84fd3bSjoerg pop %eax 30*ef84fd3bSjoerg pop %ecx 31*ef84fd3bSjoerg ret 32*ef84fd3bSjoergEND_COMPILERRT_FUNCTION(__chkstk_ms) 33*ef84fd3bSjoerg 34*ef84fd3bSjoerg#endif // __i386__ 35