Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!seismo!sundc!pitstop!sun!decwrl!labrea!aurora!ames!lll-tis!ptsfa!ihnp4!homxb!mtuxo!mtune!codas!usfvax2!pdn!alan From: alan@pdn.UUCP (Alan Lovejoy) Newsgroups: comp.sys.atari.st Subject: Re: question of the day Message-ID: <1505@pdn.UUCP> Date: Sun, 11-Oct-87 12:32:48 EDT Article-I.D.: pdn.1505 Posted: Sun Oct 11 12:32:48 1987 Date-Received: Wed, 14-Oct-87 05:37:21 EDT References: <36500013@iuvax> <656@rocky.STANFORD.EDU> Reply-To: alan@pdn.UUCP (0000-Alan Lovejoy) Organization: Paradyne Corporation, Largo, Florida Lines: 38 In article <656@rocky.STANFORD.EDU> rokicki@rocky.UUCP (Tomas Rokicki) writes: / /> movea.l #go1,a0 /> movea.l #go2,a1 /> go1: move.w (a0)+,(a1)+ /> go2: / /If you turn to Appendix E of the Motorola MC68000 Programmer's /Manaul, it describes the prefetch which is breaking that program. /To quote: / / The MC68000 uses a two-word tightly coupled instruction / prefetch mechanism to enhance performance. ... When / execution of an instruction begins, the operation word / and the word following have already been fetched ... / /Thus, the instruction at go2: is fetched *before* the instruction /at go1: is executed, since move.w (a0)+,(a1)+ is a one-word instruction. If you inserted another move.w (a0)+,(a1)+ before /go1, it should work on a 68000, but will break on a 68020 for /several reasons . . . / /It works under RAID because RAID most likely has turned instruction /tracing on, which does a software interrupt on each instruction, /thus killing the prefetch with the implicit branch . . . / /> We are so interested in understanding the behavior of this program that /> I have been authorised to award a bust of Abraham Lincoln made from steel /> to the first person that clears up the mystery. / /Thanks! I don't know about that. I submitted similar advice Oct 10 (about 3pm EDT) by mail. Others may have also. I hope the prize is awarded based on GMT submission time, not on arrival time at the University. --alan@pdn