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