re PR libgcj/22084 (Divide_1 test case hangs)
2005-09-08 Andrew Haley <aph@redhat.com> PR java/22084 * include/i386-signal.h (HANDLE_DIVIDE_OVERFLOW): Bump IP by 1 if R/M field in instruction is 100. From-SVN: r104094
This commit is contained in:
parent
7ce7896c39
commit
ddef717308
@ -1,3 +1,9 @@
|
||||
2005-09-08 Andrew Haley <aph@redhat.com>
|
||||
|
||||
PR java/22084
|
||||
* include/i386-signal.h (HANDLE_DIVIDE_OVERFLOW): Bump IP by 1 if
|
||||
R/M field in instruction is 100.
|
||||
|
||||
2005-09-08 Thomas Fitzsimmons <fitzsim@redhat.com>
|
||||
|
||||
PR libgcj/23761
|
||||
|
@ -64,18 +64,25 @@ do \
|
||||
if (_regs->eax == 0x80000000 \
|
||||
&& ((_modrm >> 3) & 7) == 7) /* Signed divide */ \
|
||||
{ \
|
||||
unsigned char _rm = _modrm & 7; \
|
||||
_regs->edx = 0; /* the remainder is zero */ \
|
||||
switch (_modrm >> 6) \
|
||||
{ \
|
||||
case 0: \
|
||||
if ((_modrm & 7) == 5) \
|
||||
_eip += 4; \
|
||||
case 0: /* register indirect */ \
|
||||
if (_rm == 5) /* 32-bit displacement */ \
|
||||
_eip += 4; \
|
||||
if (_rm == 4) /* A SIB byte follows the ModR/M byte */ \
|
||||
_eip += 1; \
|
||||
break; \
|
||||
case 1: \
|
||||
case 1: /* register indirect + 8-bit displacement */ \
|
||||
_eip += 1; \
|
||||
if (_rm == 4) /* A SIB byte follows the ModR/M byte */ \
|
||||
_eip += 1; \
|
||||
break; \
|
||||
case 2: \
|
||||
case 2: /* register indirect + 32-bit displacement */ \
|
||||
_eip += 4; \
|
||||
if (_rm == 4) /* A SIB byte follows the ModR/M byte */ \
|
||||
_eip += 1; \
|
||||
break; \
|
||||
case 3: \
|
||||
break; \
|
||||
|
Loading…
Reference in New Issue
Block a user