[comp.sys.amiga] GVP 68030 board hardware bug

inb300campbe@qut.edu.au (07/26/90)

Hardware bug report:

Hardware:  Amiga 2000 with GVP 25Mhz 68030 board and 4 Megs
of 32-bit memory.

Problem:  When writing a word to memory located in 32-bit
wide memory and with an address ending in 3,7,B or F, the
first byte is always written correctly, but the second byte
of the word (LSB) is NOT written to the correct location.
It is unknown if the byte is written to somewhere else
instead, but we have determined that it is not written to
anywhere within 32K.

Assuming 32-bit memory is imaged at $200000 - $3FFFFF, the
following code should demonstrate the problem:

(memory before code executed)

$280000    00000000 00000000
$280008    00000000 00000000
$280010    00000000 00000000

	lea	$280003,A0
	move.w	#$1234,(A0)+
	move.w	#$1234,(A0)+
	move.w	#$1234,(A0)+
	move.w	#$1234,(A0)+
	move.w	#$1234,(A0)+
	move.w	#$1234,(A0)+
	move.w	#$1234,(A0)+
	move.w	#$1234,(A0)+

Under normal circumstances, memory should be changed at
that location to:

$280000    00000012 34123412
$280008    34123412 34123412
$280010    34123400 00000000

Instead, the memory is actually changed to:

$280000    00000012 00123412
$280008    00123412 00123412
$280010    00123400 00000000

When reading from memory, there seems to be no problem.
Disabling the cache and/or burst mode makes no difference
to the test results.

When the same tests are run using either 16-bit wide fast
memory, or chip memory, no problem exists.

The fault exists whether running code at full speed, or
single-stepping (using Metascope).  We found that the
fault was easily duplicated by loading a small program
into Metascope, entering the above code, setting the A0
register to an address inside the first hunk, and ending
in 3/7/B/F, and pressing rAmiga-S to single step.

Because no memory transfers or word data is transferred
to odd addresses using a 68000 CPU, all programs written
for the 68000 will run okay even with this problem.
However programs written for the 68020/030 CPU's which
don't use word alligned data will not work properly on
these machines.

Tests on the Amiga 3000 and Commodore 2630 board did not
exibit this problem.  I would like to hear from owners
of other brands of 68020/030 boards to establish the
extent of the problem. (eg. Hurricane board, GVP, etc.)

=================================================================
David Campbell                     inb300campbe@redgum.qut.edu.au
Undergrad Ba.App.Sc - Comp
Queensland University of Technology
=================================================================

rbabel@babylon.UUCP (Ralph Babel) (08/11/90)

In article <12896.26af1d23@qut.edu.au>
inb300campbe@qut.edu.au (David Campbell) writes:

> Problem: When writing a word to memory located in 32-bit
> wide memory and with an address ending in 3,7,B or F, the
> first byte is always written correctly, but the second
> byte of the word (LSB) is NOT written to the correct
> location.

Known bug, has already been fixed.

> Because no memory transfers or word data is transferred to
> odd addresses using a 68000 CPU, all programs written for
> the 68000 will run okay even with this problem. However
> programs written for the 68020/030 CPU's which don't use
> word alligned data will not work properly on these
> machines.

Even though the '020 and '030 _can_ read word data from odd
addresses, it is in fact unlikely that a properly written
Amiga program makes actually use of this feature. I admit
that it _might_ be useful in a few cases, but it's unlikely.
If your GVP '030 board exhibits this behaviour and this
seems to cause any problems, you might want to call GVP and
request a new PAL (U50, I think) that fixes this problem.

Ralph