]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Fix interrupt hang when switching from non-ce CPU to ce CPU.
authorToni Wilen <twilen@winuae.net>
Sun, 22 Apr 2018 13:04:47 +0000 (16:04 +0300)
committerToni Wilen <twilen@winuae.net>
Sun, 22 Apr 2018 13:04:47 +0000 (16:04 +0300)
custom.cpp
include/custom.h
newcpu.cpp

index 95cc918aad2267233e641c11fdf1abeb28cc256a..2eca190980b34c4c93c8126c6bacc7304772fa91 100644 (file)
@@ -9071,6 +9071,14 @@ void custom_prepare (void)
        hsync_handler_post (true);
 }
 
+void custom_cpuchange(void)
+{
+       // both values needs to be same but also different
+       // after CPU mode changes
+       intreq_internal = intreq | 0x8000;
+       intena_internal = intena | 0x8000;
+}
+
 void custom_reset (bool hardreset, bool keyboardreset)
 {
        if (hardreset)
index f9da2fb8607c0f29053cf15ed1a3dae1731ace56..28373ea54335405e7a3573138e0d4a75468accdd 100644 (file)
@@ -241,5 +241,6 @@ extern struct chipset_refresh *get_chipset_refresh (void);
 extern void compute_framesync (void);
 extern void getsyncregisters(uae_u16 *phsstrt, uae_u16 *phsstop, uae_u16 *pvsstrt, uae_u16 *pvsstop);
 int is_bitplane_dma (int hpos);
+void custom_cpuchange(void);
 
 #endif /* UAE_CUSTOM_H */
index 967ebfea1a485d9b7589cc58bd116835bb16b5d8..ed06e9beb0570d1eaa873e6345807a84d25c1333 100644 (file)
@@ -6433,6 +6433,7 @@ void m68k_go (int may_quit)
                                uaecptr pc = m68k_getpc();
                                prefs_changed_cpu();
                                fpu_modechange();
+                               custom_cpuchange();
                                build_cpufunctbl();
                                m68k_setpc_normal(pc);
                                fill_prefetch();