]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Do not generate useless 68030-only MMU opcodes if CPU is not 68030.
authorToni Wilen <twilen@winuae.net>
Wed, 13 Apr 2016 19:07:31 +0000 (22:07 +0300)
committerToni Wilen <twilen@winuae.net>
Wed, 13 Apr 2016 19:07:31 +0000 (22:07 +0300)
gencpu.cpp

index 631736ff6d3912e81194983c13b0c4530425db62..23007803f9dd56b38f1b58702b0973d98c4594d3 100644 (file)
@@ -3036,6 +3036,14 @@ static void gen_opcode (unsigned int opcode)
 
        m68k_pc_offset = 2;
 
+       // do not unnecessarily create useless mmuop030
+       // functions when CPU is not 68030
+       if (curi->mnemo == i_MMUOP030 && cpu_level != 3) {
+               printf("\top_illg (opcode);\n");
+               did_prefetch = -1;
+               goto end;
+       }
+
        switch (curi->plev) {
        case 0: /* not privileged */
                break;
@@ -5351,26 +5359,27 @@ bccl_not68020:
                printf ("\tmmu_op (opcode, 0);\n");
                break;
        case i_MMUOP030:
-               printf ("\tuaecptr pc = %s;\n", getpc);
-               printf ("\tuae_u16 extra = %s (2);\n", prefetch_word);
+               printf("\tuaecptr pc = %s;\n", getpc);
+               printf("\tuae_u16 extra = %s (2);\n", prefetch_word);
                m68k_pc_offset += 2;
-               sync_m68k_pc ();
+               sync_m68k_pc();
                if (curi->smode == Areg || curi->smode == Dreg)
                        printf("\tuae_u16 extraa = 0;\n");
                else
-                       genamode (curi, curi->smode, "srcreg", curi->size, "extra", 0, 0, 0);
-               sync_m68k_pc ();
+                       genamode(curi, curi->smode, "srcreg", curi->size, "extra", 0, 0, 0);
+               sync_m68k_pc();
                if (using_ce020 || using_prefetch_020) {
-                       printf ("\tif (mmu_op30 (pc, opcode, extra, extraa)) goto %s;\n", endlabelstr);
+                       printf("\tif (mmu_op30 (pc, opcode, extra, extraa)) goto %s;\n", endlabelstr);
                        need_endlabel = 1;
                } else {
-                       printf ("\tmmu_op30 (pc, opcode, extra, extraa);\n");
+                       printf("\tmmu_op30 (pc, opcode, extra, extraa);\n");
                }
                break;
        default:
                term ();
                break;
        }
+end:
        if (!genastore_done)
                returntail (0);
        finish_braces ();