* include/excpt.h (__try1): Define based on _WIN64 definition.
(__except1): Ditto.
This commit is contained in:
		| @@ -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 | ||||
|   | ||||
| @@ -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 | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user