--- mstools/h/setjmp.h 2018/08/09 18:22:57 1.1.1.4 +++ mstools/h/setjmp.h 2018/08/09 18:25:19 1.1.1.5 @@ -122,18 +122,60 @@ typedef struct __JUMP_BUFFER { #endif + #if defined(_ALPHA_) /* - * All ALPHA implementations need _JBLEN of 2 + * The Alpha C8/GEM C compiler uses an intrinsic _setjmp. + * The Alpha acc compiler implements setjmp as a function. + */ + +#ifdef _MSC_VER +#ifndef _INC_SETJMPEX +#undef _setjmp +#define setjmp _setjmp +#endif +#endif + +/* + * Alpha implementations use a _JBLEN of 24 quadwords. + * A double is used only to obtain quadword size and alignment. */ -#define _JBLEN 2 +#define _JBLEN 24 #define _JBTYPE double -#endif +/* + * Define jump buffer layout for Alpha setjmp/longjmp. + * A double is used only to obtain quadword size and alignment. + */ +typedef struct __JUMP_BUFFER { + unsigned long Fp; + unsigned long Pc; + unsigned long Seb; + unsigned long Type; + double FltF2; + double FltF3; + double FltF4; + double FltF5; + double FltF6; + double FltF7; + double FltF8; + double FltF9; + double IntS0; + double IntS1; + double IntS2; + double IntS3; + double IntS4; + double IntS5; + double IntS6; + double IntSp; + double Fir; + double Fill[5]; +} _JUMP_BUFFER; +#endif /* define the buffer type for holding the state information */