pkgsrc-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
pkg/34538: TME sun3 emulator incorrectly calculates EA with immediate mode instructions with PC indirect 16-bit displacement addressing
>Number: 34538
>Category: pkg
>Synopsis: TME sun3 emulator incorrectly calculates EA with immediate
>mode instructions with PC indirect 16-bit displacement addressing
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: pkg-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Sep 15 19:30:00 +0000 2006
>Originator: Arthur Townsend
>Release: 3.0
>Organization:
>Environment:
3.0 for i386
>Description:
When calculating the effective address for program counter indirect 16 bit
displacement addressing, TME calculates incorrectly when the instruction
contains an immediate mode instruction.
>How-To-Repeat:
Using gcc-3.2.3 (and likely others) inside the emulator running SunOS 4.1.1,
the following test gcc-3.2.3 test cases fail due to the above bug, but work on
a real sun3:
20010325-1.c
991227-1.c
string-opt-8.c
widechar-2.c
lexstrng.c
>Fix:
The following differences to m68k-execute.c in ic/m68k directory fixes the bug,
allows the above test cases to work identically as on a real-sun3, and produces
no new failures in the remaining 18,000 test cases.
209d208
<
595,606d593
<
< /* if instruction has immediate, then we need to add either
< 2 bytes (for byte or word) or
< 4 bytes (for lword) to get the effective address
< */
< if (TME_M68K_OPCODE_HAS_IMM(params)) {
< if (TME_FIELD_EXTRACTU(TME_M68K_INSN_OPCODE,6,2) == 2)
< ea_address = ea_address + 4;
< else
< ea_address = ea_address + 2;
< }
<
Home |
Main Index |
Thread Index |
Old Index