[Freemint-list] Broken udelay() for m68000

Miro Kropáček miro.kropacek at gmail.com
Mon Oct 16 05:57:20 MSD 2017

After some study, it seems it isn't that bad (I think most of you were
aware of it): the delay functions *are* calibrated, quite precisely
actually. That loops_per_sec variable is actually a result of such

So the problem is that m68000 code ignores it. I think David is right,
the magic
formula used in the linux kernel
supposed to work on all m68ks, not only ColdFire (see the comment, "simpler

On m68000, the code is quite chatty:

     3a4:       206a 001c       moveal %a2@(28),%a0
     3a8:       4878 00c8       pea c8 <oldSR-0x1c>
     3ac:       2f10            movel %a0@,%sp at -
     3ae:       4e93            jsr %a3@
     3b0:       508f            addql #8,%sp
     3b2:       720b            moveq #11,%d1
     3b4:       e2a8            lsrl %d1,%d0
     3b6:       2200            movel %d0,%d1
     3b8:       d280            addl %d0,%d1
     3ba:       d280            addl %d0,%d1
     3bc:       2801            movel %d1,%d4
     3be:       e98c            lsll #4,%d4
     3c0:       d284            addl %d4,%d1
     3c2:       2801            movel %d1,%d4
     3c4:       e18c            lsll #8,%d4
     3c6:       d284            addl %d4,%d1
     3c8:       e789            lsll #3,%d1
     3ca:       d081            addl %d1,%d0
     3cc:       ec88            lsrl #6,%d0

(a3 points to ___udivsi3)

However we should use this code also for 68060 and not only for CF as mul
ea,dr:dq is not implemented on 060 (leading to a huge performance
bottleneck I imagine).

MiKRO / Mystic Bytes
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.atariforge.org/pipermail/freemint-list/attachments/20171016/a9d78789/attachment-0001.html 

More information about the Freemint-list mailing list