File tree Expand file tree Collapse file tree 2 files changed +73
-0
lines changed Expand file tree Collapse file tree 2 files changed +73
-0
lines changed Original file line number Diff line number Diff line change 1+ // This file is dual licensed under the MIT and the University of Illinois Open
2+ // Source Licenses. See LICENSE.TXT for details.
3+
4+ #include "../assembly.h"
5+
6+ // _chkstk routine
7+ // This routine is windows specific
8+ // http://msdn.microsoft.com/en - us/library/ms648426.aspx
9+
10+ #ifdef __i386__
11+
12+ .text
13+ .balign 4
14+ DEFINE_COMPILERRT_FUNCTION(__chkstk_ms)
15+ push % ecx
16+ push % eax
17+ cmp $ 0x1000 , % eax
18+ lea 12 (% esp ) , % ecx
19+ jb 1f
20+ 2 :
21+ sub $ 0x1000 , % ecx
22+ orl $ 0 , (% ecx )
23+ sub $ 0x1000 , % eax
24+ cmp $ 0x1000 , % eax
25+ ja 2b
26+ 1 :
27+ sub % eax , % ecx
28+ orl $ 0 , (% ecx )
29+ pop % eax
30+ pop % ecx
31+ ret
32+ END_COMPILERRT_FUNCTION(__chkstk_ms)
33+
34+ #endif // __i386__
Original file line number Diff line number Diff line change 1+ // This file is dual licensed under the MIT and the University of Illinois Open
2+ // Source Licenses. See LICENSE.TXT for details.
3+
4+ #include "../assembly.h"
5+
6+ // _chkstk routine
7+ // This routine is windows specific
8+ // http://msdn.microsoft.com/en - us/library/ms648426.aspx
9+
10+ // Notes from r227519
11+ // MSVC x64s __chkstk and cygmings ___chkstk_ms do not adjust % rsp
12+ // themselves. It also does not clobber % rax so we can reuse it when
13+ // adjusting % rsp .
14+
15+ #ifdef __x86_64__
16+
17+ .text
18+ .balign 4
19+ DEFINE_COMPILERRT_FUNCTION(___chkstk_ms)
20+ push % rcx
21+ push % rax
22+ cmp $ 0x1000 , % rax
23+ lea 24 (% rsp ) , % rcx
24+ jb 1f
25+ 2 :
26+ sub $ 0x1000 , % rcx
27+ orl $ 0 , (% rcx )
28+ sub $ 0x1000 , % rax
29+ cmp $ 0x1000 , % rax
30+ ja 2b
31+ 1 :
32+ sub % rax , % rcx
33+ orl $ 0 , (% rcx )
34+ pop % rax
35+ pop % rcx
36+ ret
37+ END_COMPILERRT_FUNCTION(___chkstk_ms)
38+
39+ #endif // __x86_64__
You can’t perform that action at this time.
0 commit comments