pkgsrc-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
pkg/33969: TME sun3 emulator incorrectly emulates cmp2 and chk2 M68K instructions
>Number: 33969
>Category: pkg
>Synopsis: TME sun3 emulator incorrectly emulates cmp2 and chk2 M68K
>instructions
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: pkg-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Jul 11 00:55:01 +0000 2006
>Originator: arthur townsend
>Release: 3.0
>Organization:
>Environment:
NetBSD 3.0
>Description:
TME (The Machine Emulator tme-0.4nb1) doesn't correctly emulate the motorola
68020 cmp2 and chk2 instruction (and exits with segmentation violation under
certain conditions), so executables that use these instructions may not work
correctly. Specifically:
1) chk2 didn't cause an exception when value was out of bounds.
2) calling cmp2/chk2 with LWORD operand caused segmentation violation and TME
exited
3) calling cmp2/chk2 with BYTE or WORD with VALUE in data register didn't
extract correct VALUE
4) cmp2/chk2 didn't compare correctly when LOW bounds > HI bounds for
both signed and unsigned comparison.
ex: VALUE -> 4
LOW_BOUND -> 5
HIGH_BOUND-> 3
should set carry flag, indicating out_of_bounds.
This bug was not likely found previously, as the NetBSD for Sun 3 operating
system and the SunOS 4.1.1 operating system do not use this instruction. I
only found the instruction used by SunOS 4.1.1 executables created by Ada
compilers (and by my assembly test program).
>How-To-Repeat:
Easiest way is to generate an assembly file which tests a large variety of
ranges, values, operand sizes, and addressing modes. After I get an e-mail
back showing submission of this problem, I'll reply with an example test
program.
>Fix:
After I get an e-mail back showing submission of this problem, I'll reply with
a fix (corrections to m68k-insns.c).
Home |
Main Index |
Thread Index |
Old Index