Re: [hatari-devel] Re: 040/060 emulation issue with Q2

[ Thread Index | Date Index | More Archives ]

$0002808a : f23c 4538 4020 0000                fcmp.s    #$40200000,fp2
$00028092 : f29d                               DC.W      $f29d
$000280ce : f201                               DC.W      $f201
*$000280d4 : ff70                               DC.W      $ff70  <--

OK, so back to the opcode ff70, and looking at 68030 user manual chapter
10.1.3 with the format of line F instructions, it is stated that CpID
001 (bit 9 to 11) is used for 68881 and 6882, and 111 is reserved.

So, this really looks like an illegal instruction that should not be
used in the 1st place. Is this handmade asm, or the result of a C
compiler ?

I am not so sure that FF70 is opcode, it can be part of some previous FPU instruction caused by incorrectly incremented PC. Can easily happen in prefetch modes if some prefetch handling is missing.

FF70 = cpRESTORE with coprocessor id = 7. Opcode mode and register values are 7 which is invalid combination. It can't be valid opcode.

I guess this opcode could generate privilege violation in user mode (if 68020/030, can't happen if 68040+) but I have no idea what happens when using co-op ids that don't exist. Possibly it is implementation specific (how address decoder between CPU and FPU work).

Mail converted by MHonArc 2.6.19+