diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-03-11 00:58:01 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-03-11 00:58:01 +0000 |
commit | f1959ea2522397e29ed09d2dfa444c3ca3c7379d (patch) | |
tree | 10c7f94244c8391cf0a3ae25e323dac086ed2186 /gcc/config/i386/uwin.asm | |
parent | 5b464ce7c8319e2ff1e8f5bba179e17e976e2648 (diff) | |
download | gcc-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.asm | 32 |
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 |