Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEarnie Boyd <earnie@users.sf.net>2012-08-01 20:46:01 +0400
committerEarnie Boyd <earnie@users.sf.net>2012-08-01 20:46:01 +0400
commit15d7cca2369603f4b6874c88f4244f9c19c56b66 (patch)
tree3faebe49527d46e8918da53323205db149645ceb /winsup/mingw
parent764af9a4a5c0cba412e6b5c78d024b0e9b82bc33 (diff)
* include/excpt.h (__try1): Define based on _WIN64 definition.
(__except1): Ditto.
Diffstat (limited to 'winsup/mingw')
-rw-r--r--winsup/mingw/ChangeLog5
-rw-r--r--winsup/mingw/include/excpt.h23
2 files changed, 23 insertions, 5 deletions
diff --git a/winsup/mingw/ChangeLog b/winsup/mingw/ChangeLog
index edf023911..b0f749390 100644
--- a/winsup/mingw/ChangeLog
+++ b/winsup/mingw/ChangeLog
@@ -1,3 +1,8 @@
+2012-08-01 Earnie Boyd <earnie@users.sourceforge.net>
+
+ * include/excpt.h (__try1): Define based on _WIN64 definition.
+ (__except1): Ditto.
+
2012-07-30 Earnie Boyd <earnie@users.sourceforge.net>
* include/stdint.h: Include _mingw.h for the definition of __int64 when
diff --git a/winsup/mingw/include/excpt.h b/winsup/mingw/include/excpt.h
index e75ceb78f..3919cb791 100644
--- a/winsup/mingw/include/excpt.h
+++ b/winsup/mingw/include/excpt.h
@@ -75,8 +75,15 @@ typedef PEXCEPTION_REGISTRATION PEXCEPTION_REGISTRATION_RECORD;
* onto the stack, then put a pointer to the new registration
* structure (i.e. the current stack pointer) at fs:0.
*/
-#define __try1(pHandler) \
- __asm__ ("pushl %0;pushl %%fs:0;movl %%esp,%%fs:0;" : : "g" (pHandler));
+#ifdef _WIN64
+# define __try1(pHandler) \
+ __asm__ __volatile__ ("pushq %0;pushq %%gs:0;movq %%rsp,%%gs:0;" : : \
+ "g" (pHandler));
+#else
+# define __try1(pHandler) \
+ __asm__ __volatile__ ("pushl %0;pushl %%fs:0;movl %%esp,%%fs:0;" : : \
+ "g" (pHandler));
+#endif
/*
* A macro which (despite its name) *removes* an installed
@@ -89,9 +96,15 @@ typedef PEXCEPTION_REGISTRATION PEXCEPTION_REGISTRATION_RECORD;
* the stack must be in the exact state at this point that it was
* after we did __try1 or this will smash things.
*/
-#define __except1 \
- __asm__ ("movl (%%esp),%%eax;movl %%eax,%%fs:0;addl $8,%%esp;" \
- : : : "%eax");
+#ifdef _WIN64
+# define __except1 \
+ __asm__ __volatile__ ("movq (%%rsp),%%rax;movq %%rax,%%gs:0;addq \
+ $16,%%rsp;" : : : "%rax");
+#else
+# define __except1 \
+ __asm__ __volatile__ ("movl (%%esp),%%eax;movl %%eax,%%fs:0;addl \
+ $8,%%esp;" : : : "%eax");
+#endif
#ifdef __cplusplus
}