[compiler-rt] r242540 - Add missing chkstk.S files from r242539
Reid Kleckner
reid at kleckner.net
Fri Jul 17 09:31:59 PDT 2015
Author: rnk
Date: Fri Jul 17 11:31:59 2015
New Revision: 242540
URL: http://llvm.org/viewvc/llvm-project?rev=242540&view=rev
Log:
Add missing chkstk.S files from r242539
Added:
compiler-rt/trunk/lib/builtins/i386/chkstk.S
compiler-rt/trunk/lib/builtins/x86_64/chkstk.S
Added: compiler-rt/trunk/lib/builtins/i386/chkstk.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/i386/chkstk.S?rev=242540&view=auto
==============================================================================
--- compiler-rt/trunk/lib/builtins/i386/chkstk.S (added)
+++ compiler-rt/trunk/lib/builtins/i386/chkstk.S Fri Jul 17 11:31:59 2015
@@ -0,0 +1,34 @@
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+
+#include "../assembly.h"
+
+// _chkstk routine
+// This routine is windows specific
+// http://msdn.microsoft.com/en-us/library/ms648426.aspx
+
+#ifdef __i386__
+
+.text
+.balign 4
+DEFINE_COMPILERRT_FUNCTION(__chkstk_ms)
+ push %ecx
+ push %eax
+ cmp $0x1000,%eax
+ lea 12(%esp),%ecx
+ jb 1f
+2:
+ sub $0x1000,%ecx
+ orl $0,(%ecx)
+ sub $0x1000,%eax
+ cmp $0x1000,%eax
+ ja 2b
+1:
+ sub %eax,%ecx
+ orl $0,(%ecx)
+ pop %eax
+ pop %ecx
+ ret
+END_COMPILERRT_FUNCTION(__chkstk_ms)
+
+#endif // __i386__
Added: compiler-rt/trunk/lib/builtins/x86_64/chkstk.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/x86_64/chkstk.S?rev=242540&view=auto
==============================================================================
--- compiler-rt/trunk/lib/builtins/x86_64/chkstk.S (added)
+++ compiler-rt/trunk/lib/builtins/x86_64/chkstk.S Fri Jul 17 11:31:59 2015
@@ -0,0 +1,39 @@
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+
+#include "../assembly.h"
+
+// _chkstk routine
+// This routine is windows specific
+// http://msdn.microsoft.com/en-us/library/ms648426.aspx
+
+// Notes from r227519
+// MSVC x64s __chkstk and cygmings ___chkstk_ms do not adjust %rsp
+// themselves. It also does not clobber %rax so we can reuse it when
+// adjusting %rsp.
+
+#ifdef __x86_64__
+
+.text
+.balign 4
+DEFINE_COMPILERRT_FUNCTION(___chkstk_ms)
+ push %rcx
+ push %rax
+ cmp $0x1000,%rax
+ lea 24(%rsp),%rcx
+ jb 1f
+2:
+ sub $0x1000,%rcx
+ orl $0,(%rcx)
+ sub $0x1000,%rax
+ cmp $0x1000,%rax
+ ja 2b
+1:
+ sub %rax,%rcx
+ orl $0,(%rcx)
+ pop %rax
+ pop %rcx
+ ret
+END_COMPILERRT_FUNCTION(___chkstk_ms)
+
+#endif // __x86_64__
More information about the llvm-commits
mailing list