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