make sure I restore H and TR before I do SetDBForThrow
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@110 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
1d5e4c4956
commit
a18e3790d0
20
C/exec.c
20
C/exec.c
@ -857,6 +857,16 @@ exec_absmi(int top)
|
|||||||
/* otherwise, SetDBForThrow will fail entering critical mode */
|
/* otherwise, SetDBForThrow will fail entering critical mode */
|
||||||
PrologMode = UserMode;
|
PrologMode = UserMode;
|
||||||
/* find out where to cut to */
|
/* find out where to cut to */
|
||||||
|
#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
|
||||||
depth = SetDBForThrow(MkAtomTerm(LookupAtom("abort")));
|
depth = SetDBForThrow(MkAtomTerm(LookupAtom("abort")));
|
||||||
if (depth == 0) {
|
if (depth == 0) {
|
||||||
Error(SYSTEM_ERROR, TermNil, "database entry for throw corrupted");
|
Error(SYSTEM_ERROR, TermNil, "database entry for throw corrupted");
|
||||||
@ -870,16 +880,6 @@ exec_absmi(int top)
|
|||||||
#endif
|
#endif
|
||||||
yap_flags[SPY_CREEP_FLAG] = 0;
|
yap_flags[SPY_CREEP_FLAG] = 0;
|
||||||
CreepFlag = CalculateStackGap();
|
CreepFlag = CalculateStackGap();
|
||||||
#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;
|
P = (yamop *)FAILCODE;
|
||||||
}
|
}
|
||||||
if (lval == 2) { /* arithmetic exception */
|
if (lval == 2) { /* arithmetic exception */
|
||||||
|
Reference in New Issue
Block a user