Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wine-mirror
GitHub Repository: wine-mirror/wine
Path: blob/master/libs/compiler-rt/lib/builtins/x86_64/chkstk.S
12348 views
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
test %rcx,(%rcx)
28
sub $0x1000,%rax
29
cmp $0x1000,%rax
30
ja 2b
31
1:
32
sub %rax,%rcx
33
test %rcx,(%rcx)
34
pop %rax
35
pop %rcx
36
ret
37
END_COMPILERRT_FUNCTION(___chkstk_ms)
38
39
#endif // __x86_64__
40
41