Re: [hatari-devel] 68000: Wrong order of bus accesses for move.l xx,-(Ay)

[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]


Toni Wilen schrieb:

> There is even more unknowns, I did some quick tests with address error
> (bus error does not exist in Amigas) and different instruction variants
> modify address register differently:
> 
> An = odd address, log An content and fault address in exception routine:
> 
> movem.l d0,-(an) ; An not modified, fault address - 2
> move.l d0,-(an) ; An not modified, fault address - 2
> move.l -(an),d0 ; An - 4, fault address - 4
> not.l -(an) ; An - 4, fault address - 4
> 
> In above cases it would be interesting to see what An contains in bus
> error exception when second word access causes bus error.

OK, here are the results for bus errors -- use monospaced font to view
the table:

			FA	An	FA	An	
Bus cycle		  First		  Second
MOVEM.L D0,-(An)	-2	 0	-4	 0 (sic!)
MOVE.L D0,-(An)		-2	 0	-4	-4
MOVE.L -(An),D0		-4	-4	-2	-4
NOT.L -(An)		-4	-4	-2	-4
Bus cycle		  Third		  Fourth
NOT.L -(An)		-2	-4	-4	-4

With some trickery, I managed to provoke bus errors on all four bus
cycles (2*read, 2*write) of NOT.L -(An) separately. "FA" in the table
above refers to the fault address in the stack frame, "An" is the value
of the address register in question.

> Same for (an)+ addressing mode, some instructions probably have already
> added An by 2 before second word access.

Can you propose some instructions to test? Same as above? As this is
quite a time-consuming process, it'll probably take a while until you
get results from me, though.

Regards
Christian
-- 
Christian Zietz  -  CHZ-Soft  -  czietz@xxxxxxx
WWW: http://www.chzsoft.de/
PGP/GnuPG-Key-ID: 0x52CB97F66DA025CA / 0x6DA025CA



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/