1799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// This file is dual licensed under the MIT and the University of Illinois Open 2799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// Source Licenses. See LICENSE.TXT for details. 3799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar 4799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#include "../assembly.h" 5799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar 6799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// _chkstk routine 7799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// This routine is windows specific 8799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// http://msdn.microsoft.com/en-us/library/ms648426.aspx 9799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar 10799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#ifdef __i386__ 11799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar 12799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar.text 13799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar.balign 4 14799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga NainarDEFINE_COMPILERRT_FUNCTION(__chkstk_ms) 15799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar push %ecx 16799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar push %eax 17799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar cmp $0x1000,%eax 18799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar lea 12(%esp),%ecx 19799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar jb 1f 20799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar2: 21799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar sub $0x1000,%ecx 22799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar test %ecx,(%ecx) 23799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar sub $0x1000,%eax 24799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar cmp $0x1000,%eax 25799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar ja 2b 26799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar1: 27799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar sub %eax,%ecx 28799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar test %ecx,(%ecx) 29799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar pop %eax 30799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar pop %ecx 31799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar ret 32799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga NainarEND_COMPILERRT_FUNCTION(__chkstk_ms) 33799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar 34799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#endif // __i386__ 35