summaryrefslogtreecommitdiff
path: root/gcc/config/i386/uwin.asm
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1999-03-11 00:58:01 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1999-03-11 00:58:01 +0000
commitf1959ea2522397e29ed09d2dfa444c3ca3c7379d (patch)
tree10c7f94244c8391cf0a3ae25e323dac086ed2186 /gcc/config/i386/uwin.asm
parent5b464ce7c8319e2ff1e8f5bba179e17e976e2648 (diff)
downloadgcc-f1959ea2522397e29ed09d2dfa444c3ca3c7379d.tar.gz
* cppfiles.c (INO_T_EQ): Handle UWIN.
* c-common.c (decl_attributes): Flag unrecognized attribute functions as warnings instead of as errors. Support for i386-pc-uwin. * i386/uwin.h: New file. * i386/xm-uwin.h: New file. * i386/t-uwin: New file. * i386/uwin.asm: New file. * configure.in (i[3456]86-*-uwin*): Define. Add Workaround for vfork bug when hosted on uwin. * configure: Regenerate. * cccp.c (INO_T_EQ): Undefine. UWIN has inodes. (absolute_filename): UWIN uses POSIX pathnames only. * libgcc2.c (getpagesize): Do not define for UWIN. (mprotect): Likewise. * protoize.c (dirent.h): Conditionally include. (fputc): Prototype only if it's not a macro. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25696 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386/uwin.asm')
-rw-r--r--gcc/config/i386/uwin.asm32
1 files changed, 32 insertions, 0 deletions
diff --git a/gcc/config/i386/uwin.asm b/gcc/config/i386/uwin.asm
new file mode 100644
index 00000000000..6268343f4c0
--- /dev/null
+++ b/gcc/config/i386/uwin.asm
@@ -0,0 +1,32 @@
+/* stuff needed for libgcc1 on win32. */
+
+#ifdef L_chkstk
+
+ .global __chkstk
+ .global __alloca
+__chkstk:
+__alloca:
+ pushl %ecx /* save temp */
+ movl %esp,%ecx /* get sp */
+ addl $0x8,%ecx /* and point to return addr */
+
+probe: cmpl $0x1000,%eax /* > 4k ?*/
+ jb done
+
+ subl $0x1000,%ecx /* yes, move pointer down 4k*/
+ orl $0x0,(%ecx) /* probe there */
+ subl $0x1000,%eax /* decrement count */
+ jmp probe /* and do it again */
+
+done: subl %eax,%ecx
+ orl $0x0,(%ecx) /* less that 4k, just peek here */
+
+ movl %esp,%eax
+ movl %ecx,%esp /* decrement stack */
+
+ movl (%eax),%ecx /* recover saved temp */
+ movl 4(%eax),%eax /* get return address */
+ jmp *%eax
+
+
+#endif