24 November 2022, 01:17 | #81 |
Thalion Webshrine
Join Date: Jan 2004
Location: Oxford
Posts: 14,596
|
They exist because I've had them.
We also know from documents that Motorola did parametric testing of 680x0 range including speed binning and fault detection. However industry people have said you never detect enough faulty parts to fill the demand for slower and less featured parts and so fill supply for these with known good fully featured chips. Also parts had to pass at extremes of the operating voltage and temperature range of the 68060. In an Amiga at stable 3.3v, 45C it might work. 3.1v and 110C it might not and so be down labelled Later 68EC060 they changed the die and physically took the MMU and FPU out to save money. |
24 November 2022, 05:58 | #82 | |
Total Chaos forever!
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,223
|
Quote:
|
|
24 November 2022, 10:31 | #83 | |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,843
|
Quote:
|
|
24 November 2022, 11:06 | #84 | |
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,424
|
Quote:
Anyhow, SoftIEEE traps only instructions that are listed in the 68000 family user manual, and even there, it is quite slow. Vector instructions would use an alternative encoding the emulator would not be able to catch, and it does not look sensible to me to add emulation for such an exotic device. If it supports regular scalar floating point processing, well, as before, it is just a matter of another library implementation that forwards the instructions to the device. I believe the most relevant use case of SoftIEEE is really to close a compatibility gap for those software that depends on a FPU, but does not make heavy use of it. Essentially,software where the authors did not provide a math-library based version, even though it would have been a feasible solution. You surely won't break a speed record by all this emulation business. |
|
24 November 2022, 11:09 | #85 |
Alien Breeder
Join Date: Dec 2007
Location: Szigetszentmiklos / Hungary
Age: 47
Posts: 1,115
|
Two combinations came to my mind, a BlizzPPC with LC 68K (more likely a 040) and any 68K with a PCI PPC board like Ragnarok or similar.
|
24 November 2022, 12:08 | #86 | |
Registered User
Join Date: Mar 2015
Location: Karlstad / Sweden
Age: 52
Posts: 1,220
|
Quote:
to what use? as there doesn't exist anything like this... |
|
24 November 2022, 14:10 | #87 |
Registered User
Join Date: Jul 2014
Location: Finland
Posts: 1,192
|
|
24 November 2022, 14:15 | #88 |
Total Chaos forever!
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,223
|
I need practice making cores. I think adding a Neon style vector-unit to an LC040 would be good practice. Since the 040 has only one 128-bit instruction, Move16, it would have to use memory-mapped i/o. Of course, Emu68 has access to a real Neon unit on it's ARM JIT so why not?
|
24 November 2022, 15:02 | #89 |
Registered User
Join Date: Mar 2015
Location: Karlstad / Sweden
Age: 52
Posts: 1,220
|
but. as 68k cpus does not have this. this is outside the scope of this software anyway.
this is to keep compability with software that requires a FPU. to run on a fpu-less solution. what you ask for is something completly else. that people could just add in their software anyway |
24 November 2022, 15:39 | #90 | |
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,424
|
Quote:
As a toy project to play with "why not", but as a realistic system design, the answer is quite simple: With software emulation, you would go over many cycles of execution and instruction interpretation just for a single vector instruction, thus there is nothing to be gained by this approach. It will be just slower than mutliple scalar 680x0 instructions. |
|
24 November 2022, 16:18 | #91 |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,843
|
|
24 November 2022, 16:23 | #92 |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,843
|
That's what I was going to say. It doesn't seem like a very realistic proposition. In any case the whole point of web assembly is that it can be executed on scalar hardware. The vector stuff is OK where you have JIT implementations that can map the input vector operation to some reasonable native equivalent code (vector or scalar), but under interpretive execution it doesn't give any noticeable performance benefit, since all the cycles are spent elsewhere.
|
24 November 2022, 17:20 | #93 |
Registered User
Join Date: Mar 2015
Location: Karlstad / Sweden
Age: 52
Posts: 1,220
|
|
24 November 2022, 18:25 | #94 | |
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,424
|
Quote:
Thanks again for the report, here is an update that should hopefully address the issue. This adds support for the fsneg and fdneg instructions I must have missed. Please kindly check again. There was something else wrong which I found during code review and which I did not notice before, and that was SNAN (signaling NAN) handling, and detection of NAN and INF. Unfortunately, the MOT manual is not very clear about this, but the MSB of a an extended floating point number does not identify SNANs, but the second top most bit. Also, the SNAN decays to a NAN upon loading into the FPU. So this should hopefully be all fine. I also updated the documentation to make clear which of the calls update the SNAN exception bit. |
|
24 November 2022, 18:48 | #95 | |
Registered User
Join Date: Apr 2012
Location: Canada
Age: 44
Posts: 910
|
Quote:
I get the following crash now: Code:
Exception !! 0000000B TCB: 08392F68 CTX: 08081DC8 SSP: 08002308 USP : 083F3898 SR: 0000 (U0)(-)(-) TCB: 08392F68 PC: 082B6FDC Data: 00000098 3F000000 0837E954 00000098 00000140 0000013A 00000140 00000000 Addr: 00000000 083F3958 0837E918 082B6FAA 083F3888 083F38A8 0829D878 08002308 Stck: 0837E918 3FFE0000 91EB8500 00000000 083F3904 082EBE46 0837E918 083F398C Stck: 00000001 00000001 00000030 082FBFEC 082FBFD8 083F3958 082AE4EC 00000000 082b6fbc : f200 0063 fsmul.x fp0 ;extended opcode 082b6fc0 : f22a 4540 0004 fsmove.s $4(a2),fp2 ;extended opcode 082b6fc6 : f200 0963 fsmul.x fp2 ;extended opcode 082b6fca : f200 0862 fsadd.x fp2,fp0 ;extended opcode 082b6fce : f22a 44c0 0008 fsmove.s $8(a2),fp1 ;extended opcode 082b6fd4 : f200 04e3 fsmul.x fp1 ;extended opcode 082b6fd8 : f200 0462 fsadd.x fp1,fp0 ;extended opcode 082b6fdc : *f200 00c5 fdint.x fp0,fp1 ;extended opcode 082b6fe0 : f200 04b8 fcmp.x fp1 ;extended opcode 082b6fe4 : f28e 0040 fbne $82b7026 ;extended opcode 082b6fe8 : f200 04c0 fsmove.x fp1 ;extended opcode 082b6fec : f281 004e fbeq $82b703c ;extended opcode 082b6ff0 : f23c 4400 3f80 0000 fmove.s #+1,fp0 ;extended opcode 082b6ff8 : f200 0460 fsdiv.x fp1,fp0 ;extended opcode Name: "AmiQuake.FPU" Hunk 0000 Offset 0001007C LONG READ from 3FB99999 PC: 094A7348 USP : 0AD25F9C SR: 0010 (U0)(-)(-) TCB: 0ACDCC38 Data: 3FEFFFFC C0000000 0000009F 00000053 00000053 000002FD 00000010 00000000 Addr: 00F8781C 0A4ECE82 0AD68734 094354D6 094BA2F8 0AD25FC4 0ACDB7A0 08002308 Stck: 0AD68734 094354D6 094BA2F8 0ACDB7A0 00000000 00000000 00000000 7FFF0000 Stck: FFFFFFFF FFFFFFFF 0AD26000 094AEA6E FFFFFFFF FFFFFFFF FFFFFFBB FFFFFF89 094a7328 : 0440 f21a subi.w #-$de6,d0 094a732c : 6400 f23c bcc $94a656a 094a7330 : 55e6 scs.b -(a6) 094a7332 : 3fb9 9999 a000 0000 move.w -$66666000,$0(a7,d0.w) 094a733a : b5fc 0a51 376c cmpa.l #$a51376c,a2 094a7340 : 6fa2 ble.s $94a72e4 094a7342 : 4ced 5c00 ffd8 movem.l -$28(a5),a2-a4/a6 094a7348 : *f22d d030 ffe8 fmovem.x -$18(a5),fp2-fp3 ;extended opcode 094a734e : 4e5d unlk a5 094a7350 : 4e75 rts 094a7352 : 4e55 ff94 link.w a5,#-$6c 094a7356 : f227 e004 fmovem.x fp2,-(a7) ;extended opcode 094a735a : 48e7 3038 movem.l d2-d3/a2-a4,-(a7) 094a735e : 4282 clr.l d2 094a7360 : 263c 3f80 0000 move.l #$3f800000,d3 094a7366 : 2b43 ffdc move.l d3,-$24(a5) Name: "AmiQuake2" Hunk 0000 Offset 0008D700 LONG READ from 43340000 PC: 0941D8C2 USP : 0AD24CD0 SR: 0000 (U0)(-)(-) TCB: 0ACDCC38 Data: 0AD25DC0 00000002 0AD25E64 0AD25FF4 0AD25FE8 0AAE2924 0AD25E2C 00000000 Addr: 0AD25DF4 0AD25FF4 0AD25DC0 094BC898 09428D28 0AD25D88 0800089C 08002308 Stck: 0AD25E64 0AD25FF4 0AD25FE8 0AAE2924 0AD25E2C 00000000 0AD25DC0 094BC898 Stck: 09428D28 0800089C 3F800000 3DE56042 00000000 00000000 00000000 00000000 0941d8a2 : 0aaa e288 20f9 0aaa eori.l #-$1d77df07,$aaa(a2) 0941d8aa : e28c lsr.l #$1,d4 0941d8ac : 20f9 0aaa e290 move.l $aaae290,(a0)+ 0941d8b2 : 20b9 0aaa e294 move.l $aaae294,(a0) 0941d8b8 : 202d efd4 move.l -$102c(a5),d0 0941d8bc : 4ced 5cfc ef48 movem.l -$10b8(a5),d2-d7/a2-a4/a6 0941d8c2 : *f22d d03f ef70 fmovem.x -$1090(a5),fp2-fp7 ;extended opcode 0941d8c8 : 4e5d unlk a5 0941d8ca : 4e75 rts 0941d8cc : 4e55 ff74 link.w a5,#-$8c 0941d8d0 : f227 e0fc fmovem.x fp2-fp7,-(a7) ;extended opcode 0941d8d4 : 48e7 3f3a movem.l d2-d7/a2-a4/a6,-(a7) 0941d8d8 : 2c09 move.l a1,d6 0941d8da : 266d 0008 movea.l $8(a5),a3 0941d8de : 286d 000c movea.l $c(a5),a4 Name: "AmiQuake2" Hunk 0000 Offset 00003C7A Exception !! 0000000B TCB: 0ACDCC38 CTX: 08081DC8 SSP: 08002308 USP : 0AD25DF8 SR: 0000 (U0)(-)(-) TCB: 0ACDCC38 PC: 0942914A Data: 00000000 00000000 00000002 00000001 00000001 0AD25F40 0AD25F26 00000000 Addr: 0AD25F26 0AD25F26 0AD25E58 0AD25E58 0AD25DE8 0AD25E08 0800089C 08002308 Stck: 094269FA C1B80000 0AD25F00 09427B00 0AD25E70 09426DF4 0AD25E58 094269FA Stck: 094BC898 09428D28 00000000 00000000 00000000 00000000 00000000 3F800000 0942912a : f200 0063 fsmul.x fp0 ;extended opcode 0942912e : f22a 4540 0004 fsmove.s $4(a2),fp2 ;extended opcode 09429134 : f200 0963 fsmul.x fp2 ;extended opcode 09429138 : f200 0862 fsadd.x fp2,fp0 ;extended opcode 0942913c : f22a 44c0 0008 fsmove.s $8(a2),fp1 ;extended opcode 09429142 : f200 04e3 fsmul.x fp1 ;extended opcode 09429146 : f200 0462 fsadd.x fp1,fp0 ;extended opcode 0942914a : *f200 00c5 fdint.x fp0,fp1 ;extended opcode 0942914e : f200 04b8 fcmp.x fp1 ;extended opcode 09429152 : f28e 0040 fbne $9429194 ;extended opcode 09429156 : f200 04c0 fsmove.x fp1 ;extended opcode 0942915a : f281 004e fbeq $94291aa ;extended opcode 0942915e : f23c 4400 3f80 0000 fmove.s #+1,fp0 ;extended opcode 09429166 : f200 0460 fsdiv.x fp1,fp0 ;extended opcode Name: "AmiQuake2" Hunk 0000 Offset 0000F502 |
|
24 November 2022, 19:30 | #96 |
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,424
|
Sigh. Here we go, another one I forgot, the square root. Apparently, I still need to fix the disassembler here.
|
24 November 2022, 20:04 | #97 | |
Registered User
Join Date: Apr 2012
Location: Canada
Age: 44
Posts: 910
|
Quote:
In any case, here's the whole thing: Code:
LONG READ from 3FF66666 PC: 082D15E0 USP : 083D9024 SR: 0004 (U0)(-)(-) TCB: 083786D8 Data: 00000280 00000000 083D90FC 00000001 00000001 00000030 082E1274 082E1260 Addr: 09353194 0000FA00 083D90C8 08293774 0829462C 083D9074 08284460 08002340 Stck: 083D90FC 00000001 00000001 00000030 082E1274 082E1260 083D90C8 08293774 Stck: 00000000 00000000 00000000 7FFF0000 4007FFFF FFFFFFFF 40060000 C8000000 082d15c0 : f23c 46b8 42b4 0000 fcmp.s #+90,fp5 ;extended opcode 082d15c8 : f295 fb90 fble $82d115a ;extended opcode 082d15cc : 7e01 moveq.l #$1,d7 082d15ce : 23c7 0836 34c0 move.l d7,$83634c0 082d15d4 : 61ff ffff 6e66 bsr.l $82c843c ;extended opcode 082d15da : 4ced 0cfc ffb0 movem.l -$50(a5),d2-d7/a2-a3 082d15e0 : *f22d d03c ffd0 fmovem.x -$30(a5),fp2-fp5 ;extended opcode 082d15e6 : 4e5d unlk a5 082d15e8 : 4e75 rts 082d15ea : 4e55 0000 link.w a5,#$0 082d15ee : 48e7 3030 movem.l d2-d3/a2-a3,-(a7) 082d15f2 : 2039 0836 3b8c move.l $8363b8c,d0 082d15f8 : b0b9 0836 3774 cmp.l $8363774,d0 082d15fe : 6770 beq.s $82d1670 Name: "AmiQuake.FPU" Hunk 0000 Offset 000453F8 LONG READ from 3F800000 PC: 082C3B12 USP : 083D8D50 SR: 0014 (U0)(-)(-) TCB: 083786D8 Data: 082846AC 00000000 00000004 000000C8 00000000 00000001 00000000 082E1260 Addr: 00F8781C 082E9A4E 00000000 08293774 0829462C 083D9080 08284460 08002340 Stck: 083D8D80 00000004 000000C8 00000000 00000001 00000000 00000000 08293774 Stck: 0829462C 4E550000 48E72030 242D0008 0000000F 0F0F1F1F 1F2F2F2F 3F3F3F4B 082c3af2 : 4285 clr.l d5 082c3af4 : 4282 clr.l d2 082c3af6 : 43f9 0831 d984 lea.l $831d984,a1 082c3afc : 45f9 0831 d944 lea.l $831d944,a2 082c3b02 : 47f9 0831 d814 lea.l $831d814,a3 082c3b08 : 6000 fce6 bra $82c37f0 082c3b0c : 4ced 1c7c fcd4 movem.l -$32c(a5),d2-d6/a2-a4 082c3b12 : *f22d d020 fcf4 fmovem.x -$30c(a5),fp2 ;extended opcode 082c3b18 : 4e5d unlk a5 082c3b1a : 4e75 rts 082c3b1c : 4e55 0000 link.w a5,#$0 082c3b20 : f22d 4444 0008 fdmove.s $8(a5),fp0 ;extended opcode 082c3b26 : f23c 5467 4066 c16c 16c1 6c17 fdmul.d #+182.0444444444445,fp0 ;extended opcode Name: "AmiQuake.FPU" Hunk 0000 Offset 0003792A LONG READ from 3F800000 PC: 082B6780 USP : 083D9088 SR: 0014 (U0)(-)(-) TCB: 083786D8 Data: 00000001 00000001 083D90FC 00000000 00000001 00000001 082E1274 082E1260 Addr: 0801AB2E 0801AB2E 08295124 08293774 0829462C 083D90F0 08284460 08002340 Stck: 083D90FC 00000000 00000001 00000001 082E1274 08295124 08293774 4E550000 Stck: 226D0008 206D000C 00000000 00000001 00000000 00000000 000001AF 000001B1 082b675e : 0000 0000 ori.b #$0,d0 082b6762 : f23c 5467 3fd6 6666 6666 6666 fdmul.d #+0.35,fp0 ;extended opcode 082b676e : f200 0203 fintrz.x fp0,fp4 ;extended opcode 082b6772 : f206 6200 fmove.l fp4,d6 ;extended opcode 082b6776 : 6000 f91c bra $82b6094 082b677a : 4ced 0c7c ff98 movem.l -$68(a5),d2-d6/a2-a3 082b6780 : *f22d d038 ffb4 fmovem.x -$4c(a5),fp2-fp4 ;extended opcode 082b6786 : 4e5d unlk a5 082b6788 : 4e75 rts 082b678a : 4e55 0000 link.w a5,#$0 082b678e : 2f0a move.l a2,-(a7) 082b6790 : 2f02 move.l d2,-(a7) 082b6792 : 42b9 0834 f114 clr.l $834f114 082b6798 : 4282 clr.l d2 082b679a : f239 4440 0834 f12c fsmove.s $834f12c,fp0 ;extended opcode Name: "AmiQuake.FPU" Hunk 0000 Offset 0002A598 LONG READ from 3FF66666 PC: 082D15E0 USP : 083D9020 SR: 0004 (U0)(-)(-) TCB: 083786D8 Data: 00000280 00000000 083D90F8 00000000 00000001 00000030 082E1274 082E1260 Addr: 09353194 0000FA00 083D90C4 083E6718 0829462C 083D9070 080008D4 08002340 Stck: 083D90F8 00000000 00000001 00000030 082E1274 082E1260 083D90C4 083E6718 Stck: 40070000 A0000000 00000000 40040000 CB430000 00000000 40060000 C8000000 082d15c0 : f23c 46b8 42b4 0000 fcmp.s #+90,fp5 ;extended opcode 082d15c8 : f295 fb90 fble $82d115a ;extended opcode 082d15cc : 7e01 moveq.l #$1,d7 082d15ce : 23c7 0836 34c0 move.l d7,$83634c0 082d15d4 : 61ff ffff 6e66 bsr.l $82c843c ;extended opcode 082d15da : 4ced 0cfc ffb0 movem.l -$50(a5),d2-d7/a2-a3 082d15e0 : *f22d d03c ffd0 fmovem.x -$30(a5),fp2-fp5 ;extended opcode 082d15e6 : 4e5d unlk a5 082d15e8 : 4e75 rts 082d15ea : 4e55 0000 link.w a5,#$0 082d15ee : 48e7 3030 movem.l d2-d3/a2-a3,-(a7) 082d15f2 : 2039 0836 3b8c move.l $8363b8c,d0 082d15f8 : b0b9 0836 3774 cmp.l $8363774,d0 082d15fe : 6770 beq.s $82d1670 Name: "AmiQuake.FPU" Hunk 0000 Offset 000453F8 LONG READ from 3FF66666 PC: 082D15E0 USP : 083D8C08 SR: 0004 (U0)(-)(-) TCB: 083786D8 Data: 00000280 00000000 083D8CE0 00000000 083D9D48 00000030 082E1274 082E1260 Addr: 09353194 0000FA00 083D8CAC 0829462C 08293D48 083D8C58 08296FE4 08002340 Stck: 083D8CE0 00000000 083D9D48 00000030 082E1274 082E1260 083D8CAC 0829462C Stck: 40070000 A0000000 00000000 40040000 CB430000 00000000 40060000 C8000000 082d15c0 : f23c 46b8 42b4 0000 fcmp.s #+90,fp5 ;extended opcode 082d15c8 : f295 fb90 fble $82d115a ;extended opcode 082d15cc : 7e01 moveq.l #$1,d7 082d15ce : 23c7 0836 34c0 move.l d7,$83634c0 082d15d4 : 61ff ffff 6e66 bsr.l $82c843c ;extended opcode 082d15da : 4ced 0cfc ffb0 movem.l -$50(a5),d2-d7/a2-a3 082d15e0 : *f22d d03c ffd0 fmovem.x -$30(a5),fp2-fp5 ;extended opcode 082d15e6 : 4e5d unlk a5 082d15e8 : 4e75 rts 082d15ea : 4e55 0000 link.w a5,#$0 082d15ee : 48e7 3030 movem.l d2-d3/a2-a3,-(a7) 082d15f2 : 2039 0836 3b8c move.l $8363b8c,d0 082d15f8 : b0b9 0836 3774 cmp.l $8363774,d0 082d15fe : 6770 beq.s $82d1670 Name: "AmiQuake.FPU" Hunk 0000 Offset 000453F8 LONG READ from 3FEFAE14 PC: 082A7056 USP : 083D1C38 SR: 0004 (U0)(-)(-) TCB: 083786D8 Data: 0000002C 00000028 092927D4 0926C180 09202AE4 000186A0 082D9A06 082E1260 Addr: 08495034 09243A04 08333338 09202AE4 09202AE4 083D1C68 08333338 08002340 Stck: 092927D4 0926C180 09202AE4 000186A0 082D9A06 08333338 09202AE4 09202AE4 Stck: 08333338 3F266666 00000000 00000000 083D1CB4 082A82AE 09202B18 09202AF0 082a7034 : f29b 000e fbnlt $82a7044 ;extended opcode 082a7038 : 2d7c 4000 0000 fff8 move.l #$40000000,-$8(a6) 082a7040 : 6000 ff30 bra $82a6f72 082a7044 : 2d7c 3f80 0000 fff8 move.l #$3f800000,-$8(a6) 082a704c : 6000 ff24 bra $82a6f72 082a7050 : 4ced 5c7c ffd0 movem.l -$30(a5),d2-d6/a2-a4/a6 082a7056 : *f22d d020 fff4 fmovem.x -$c(a5),fp2 ;extended opcode 082a705c : 4e5d unlk a5 082a705e : 4e75 rts 082a7060 : 4261 clr.w -(a1) 082a7062 : 6420 bcc.s $82a7084 082a7064 : 7375 moveq.l #$75,d1 ;illegal opcode 082a7066 : 7266 moveq.l #$66,d1 082a7068 : 6163 bsr.s $82a70cd 082a706a : 6520 bcs.s $82a708c 082a706c : 6578 bcs.s $82a70e6 082a706e : 7465 moveq.l #$65,d2 082a7070 : 6e74 bgt.s $82a70e6 082a7072 : 7300 moveq.l #$0,d1 ;illegal opcode 082a7074 : 4e55 ffe0 link.w a5,#-$20 Name: "AmiQuake.FPU" Hunk 0000 Offset 0001AE6E Exception !! 0000000B TCB: 083786D8 CTX: 08085410 SSP: 08002348 USP : 083D1C78 SR: 0008 (U0)(-)(-) TCB: 083786D8 PC: 082A80D0 Data: 000016E1 00000000 FFFFFFFF 00000000 083D1C9E 0829C1E2 083D1CA8 082E1260 Addr: 08333398 0833338C 085E8564 083333A0 083D1CA8 083D1CB4 08333338 08002348 Stck: 00000078 0000009E 00000001 0829462C 082E1274 08333338 09202AE4 082A95B4 Stck: 082E1728 08333310 0833333D 00000004 08333338 09202AE4 082A95B4 083D20CC 082a80b0 : 2d52 0054 move.l (a2),$54(a6) 082a80b4 : 2d6a 0004 0058 move.l $4(a2),$58(a6) 082a80ba : 2d6a 0008 005c move.l $8(a2),$5c(a6) 082a80c0 : 49ed fff4 lea.l -$c(a5),a4 082a80c4 : 41ee 0060 lea.l $60(a6),a0 082a80c8 : 43ee 0054 lea.l $54(a6),a1 082a80cc : 47ee 0068 lea.l $68(a6),a3 082a80d0 : *f219 44d8 fsabs.s (a1)+,fp1 ;extended opcode 082a80d4 : f218 4458 fsabs.s (a0)+,fp0 ;extended opcode 082a80d8 : f200 00b8 fcmp.x fp0,fp1 ;extended opcode 082a80dc : f29d 0174 fbngt $82a8252 ;extended opcode 082a80e0 : f200 6480 fmove.s fp1,d0 ;extended opcode 082a80e4 : 28c0 move.l d0,(a4)+ 082a80e6 : b7c8 cmpa.l a0,a3 082a80e8 : 6ce6 bge.s $82a80d0 082a80ea : 2f06 move.l d6,-(a7) 082a80ec : 2845 movea.l d5,a4 082a80ee : 4e94 jsr (a4) Name: "AmiQuake.FPU" Hunk 0000 Offset 0001BEE8 Exception !! 0000000B TCB: 083786D8 CTX: 08085410 SSP: 08002340 USP : 083D1C78 SR: 0008 (U0)(-)(-) TCB: 083786D8 PC: 082A80D0 Data: 000016E1 00000000 FFFFFFFF 00000000 083D1C9E 0829C1E2 083D1CA8 082E1260 Addr: 08333398 0833338C 085E8564 083333A0 083D1C68 083D1CB4 08333338 08002340 Stck: 00000078 0000009E 00000001 0829462C 082E1274 08333338 09202AE4 082A95B4 Stck: 082E1728 08333310 0833333D 00000004 08333338 09202AE4 082A95B4 083D20CC 082a80b0 : 2d52 0054 move.l (a2),$54(a6) 082a80b4 : 2d6a 0004 0058 move.l $4(a2),$58(a6) 082a80ba : 2d6a 0008 005c move.l $8(a2),$5c(a6) 082a80c0 : 49ed fff4 lea.l -$c(a5),a4 082a80c4 : 41ee 0060 lea.l $60(a6),a0 082a80c8 : 43ee 0054 lea.l $54(a6),a1 082a80cc : 47ee 0068 lea.l $68(a6),a3 082a80d0 : *f219 44d8 fsabs.s (a1)+,fp1 ;extended opcode 082a80d4 : f218 4458 fsabs.s (a0)+,fp0 ;extended opcode 082a80d8 : f200 00b8 fcmp.x fp0,fp1 ;extended opcode 082a80dc : f29d 0174 fbngt $82a8252 ;extended opcode 082a80e0 : f200 6480 fmove.s fp1,d0 ;extended opcode 082a80e4 : 28c0 move.l d0,(a4)+ 082a80e6 : b7c8 cmpa.l a0,a3 082a80e8 : 6ce6 bge.s $82a80d0 082a80ea : 2f06 move.l d6,-(a7) 082a80ec : 2845 movea.l d5,a4 082a80ee : 4e94 jsr (a4) Name: "AmiQuake.FPU" Hunk 0000 Offset 0001BEE8 |
|
24 November 2022, 21:22 | #98 |
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,424
|
Thank you a lot. The last exception is again a missing instruction I added, so this should be fixed. .The first access faults look curious to me - as if the CPU does not supply a proper effective address for fmovem, which should not happen. I currently disabled using this <ea> in the attached version and kindly ask you for testing again.
Also, could you please provide me which CPU that is, and if possible, which mask that is? This looks almost like a CPU erratum to me. I cannot reproduce this under emulation or on my 68020 (but the latter uses a different execution path anyhow). Thanks, Thomas |
24 November 2022, 21:43 | #99 | |
Registered User
Join Date: Apr 2012
Location: Canada
Age: 44
Posts: 910
|
Quote:
Fun fact, the performance is considerably slower than the build compiled with the -nofpu switch (which is playable at 100 mhz) but with SoftIeee it's a slideshow. (Not a criticism, of course, I am reporting this just as a note for people compiling ports, adding a softfloat build won't hurt). In any case thank you very much for this much needed tool. The cpu in question is a rev4 LC060 pictured here: |
|
24 November 2022, 22:03 | #100 |
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,424
|
Thanks, so we're really close now. The first hits you saw on the previous post were really interesting. Now that they are gone (are they? Do you see any hits anymore?) indicates that there was indeed an interesting CPU erratum I did not find in any mot specs. I'm also not quite sure which mask the 75G69 comes from, but if the PCR register contains a rev.4, then so might it be.
The difference between the previous version and this working version is that in the working version the FPU emulation core decodes the effective address of all instructions manually instead of taking them from the stack frame where the CPU prepared it. However, instead of preparing it, the fmovem from memory instruction seem to have put there the leading bits of the FPU register (or some other trash that seems to ressemble some FPU instruction). Interestingly, this only seems to hold for the fmovem-from-memory. Anyhow, here is a (potentially, hopefully) more effective workaround that decodes only then the <ea> manually if the instruction is an fmovem into the FPU. This will help to make the instruction decoding more effective and save a tiny little bit of speed. Would be great if you could give this a test and report back whether it works without any hits. That this performs very slowly is of course expected, that's pretty much what the emulation can do. No matter what, I thank you a lot for helping me, and it seems we even found something interesting and new about the 68060 masks that does not seem to be documented anywhere else. |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Demos to test FPU on SX32 MkII (020+FPU) | Rochabian | request.Demos | 1 | 21 April 2020 03:03 |
Betatesting Amiga and C64 Forever 7 | michaelz | support.Amiga Forever | 23 | 22 June 2017 16:58 |
[obsolete] EoB 2 Thread AGA and translations betatesting | Marcuz | project.Amiga Game Factory | 17 | 21 August 2008 22:47 |
Frederic's Emulator inside and Emulator thread | Fred the Fop | Retrogaming General Discussion | 22 | 09 March 2006 07:31 |
|
|