English Amiga Board    


Go Back   English Amiga Board > » Support > support.WinUAE

Reply
 
Thread Tools
Old 07 July 2012, 15:55   #1
BlankVector
Registered User
 
Join Date: Jun 2012
Location: Paris, France
Posts: 82
Send a message via MSN to BlankVector
mulu.l (a0),d0-d1 on 68060

Hello.

Basically, it seems that WinUAE allows the "mulu.l (a0),d0-d1" instruction in 68060 mode, while it should not.

I bumped into this bug when running EmuTOS. It detects the presence of a 68060 CPU by testing that instruction. If it fails with an unimplemented instruction exception, it is assumed that the CPU is a 68060. If it works, the CPU is detected as 68040 (of course tests for other CPUs are done before).

I have no real 68060 myself to check the correct behavior. However, it is described in the official M68060 User's Manual. See page 366 in the PDF. It is said that mulu.l to 64-bit result is unimplemented (as well as a few other instructions) and triggers an unimplemented integer instruction exception.

For accurate 68060 emulation, the behavior should be the same in WinUAE.
BlankVector is offline   Reply With Quote
Old 07 July 2012, 16:04   #2
Toni Wilen
WinUAE developer
 
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 38
Posts: 11,931
It is by design.

Emulating unimplemented instruction exceptions 100% correctly is very complex and slow. Performance wins here. (This also includes FPU instructions)

"Compatible" 040/060 mode may be implemented in future.
Toni Wilen is offline   Reply With Quote
Old 07 July 2012, 16:43   #3
BlankVector
Registered User
 
Join Date: Jun 2012
Location: Paris, France
Posts: 82
Send a message via MSN to BlankVector
Ok, no trouble.
In EmuTOS, I have changed the 68060 detection using "movec pcr,d1", now it works as expected on WinUAE too.
BlankVector is offline   Reply With Quote
Old 07 July 2012, 17:27   #4
Toni Wilen
WinUAE developer
 
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 38
Posts: 11,931
All MOVEC registers are 100% correctly emulated (including masking of unused bits) because they are very commonly used to detect CPU type.

Only exception (that don't cause exceptions) are instructions that 68020/030 (and/or 68881/68882) support but which were removed from 68040 or 68060.
Toni Wilen is offline   Reply With Quote
Old 20 July 2012, 19:03   #5
Toni Wilen
WinUAE developer
 
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 38
Posts: 11,931
68060 unimplemented integer instruction exception is supported in next beta. (If compatible CPU checkbox is set)

I forgot that only unimplemented FPU instructions need complex handling, integer instructions are easy.
Toni Wilen is offline   Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
68060 numbers Cosmos Hardware pics 4 30 May 2011 22:54
Cooler for 68060 solaris104 support.Hardware 5 23 December 2009 13:50
68060 Toni Wilen request.UAE Wishlist 20 29 May 2007 00:30
68060 glue request.UAE Wishlist 19 25 January 2007 00:00
68060 killergorilla support.Hardware 2 24 March 2003 16:50


All times are GMT +2. The time now is 14:32.

-->

Powered by vBulletin® Version 3.7.0
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Page generated in 0.12680 seconds with 11 queries