diff --git a/C/errors.c b/C/errors.c index aeb94bc23..074da4492 100644 --- a/C/errors.c +++ b/C/errors.c @@ -258,9 +258,15 @@ Abort (char *format,...) #if PUSH_REGS restore_absmi_regs(&standard_regs); #endif -#if defined(__GNUC__) && (defined(hppa) || defined(__alpha)) +#if defined(__GNUC__) +#if (defined(hppa) || defined(__alpha)) /* siglongjmp resets the TR hardware register */ save_TR(); +#endif +#if defined(__alpha) + /* siglongjmp resets the H hardware register */ + save_H(); +#endif #endif siglongjmp (RestartEnv, 1); } diff --git a/C/exec.c b/C/exec.c index 892bd6429..253292c68 100644 --- a/C/exec.c +++ b/C/exec.c @@ -870,9 +870,15 @@ exec_absmi(int top) #endif yap_flags[SPY_CREEP_FLAG] = 0; CreepFlag = CalculateStackGap(); -#if defined(__GNUC__) && (defined(hppa) || defined(__alpha)) +#if defined(__GNUC__) +#if defined(hppa) || defined(__alpha) /* siglongjmp resets the TR hardware register */ restore_TR(); +#endif +#if defined(__alpha) + /* siglongjmp resets the H hardware register */ + restore_H(); +#endif #endif P = (yamop *)FAILCODE; }