fix to case of triple fault

This commit is contained in:
Tomohiro Yoshidomi 2017-09-12 23:56:19 +09:00
parent 8b01ece046
commit a7964f2be1
2 changed files with 15 additions and 2 deletions

View File

@ -236,7 +236,9 @@ cpu_stack_push_check(UINT16 s, descriptor_t *sdp, UINT32 sp, UINT len,
goto exc;
}
start = sp - len;
// start = sp - len;
sp = (sp - 1) & (SEG_IS_32BIT(sdp) ? 0xffffffff : 0x0000ffff);
start = (sp - len) & (SEG_IS_32BIT(sdp) ? 0xffffffff : 0x0000ffff);
limit = is32bit ? 0xffffffff : 0x0000ffff;
if (SEG_IS_EXPANDDOWN_DATA(sdp)) {
@ -320,7 +322,8 @@ cpu_stack_push_check(UINT16 s, descriptor_t *sdp, UINT32 sp, UINT len,
*/
if ((len > sdp->u.seg.limit) /* len check */
|| (start > sp) /* wrap check */
|| (sp > sdp->u.seg.limit + 1)) { /* [1] */
// || (sp > sdp->u.seg.limit + 1)) { /* [1] */
|| (sp > sdp->u.seg.limit)) { /* [1] */
goto exc;
}
}

View File

@ -18,4 +18,14 @@ NP2 kai開発ート by AZO
=> モードレジスタ0x77に、0x70->0x50 の順に書かれたら、
トキオ用の周期にするように突貫対応。
・LOADINTELWORDマクロが変な値を取得する
=> common.h にて、a を UINT8* にキャストするよう修正。
・ERCACHE.EXEの組み込み時にtriple fault発生
=> http://egg.2ch.net/test/read.cgi/software/1500009461/181-184
の修正。
・VEM486 + Turbo C++ 4JのTC.EXEでtriple fault発生