From: Toni Wilen Date: Sun, 22 Apr 2018 13:04:47 +0000 (+0300) Subject: Fix interrupt hang when switching from non-ce CPU to ce CPU. X-Git-Tag: 4000~100 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=14c048122f80b3a38f4f380a6464c7fed5c1fbc2;p=francis%2Fwinuae.git Fix interrupt hang when switching from non-ce CPU to ce CPU. --- diff --git a/custom.cpp b/custom.cpp index 95cc918a..2eca1909 100644 --- a/custom.cpp +++ b/custom.cpp @@ -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) diff --git a/include/custom.h b/include/custom.h index f9da2fb8..28373ea5 100644 --- a/include/custom.h +++ b/include/custom.h @@ -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 */ diff --git a/newcpu.cpp b/newcpu.cpp index 967ebfea..ed06e9be 100644 --- a/newcpu.cpp +++ b/newcpu.cpp @@ -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();