MCPcopy Create free account
hub / github.com/BlitterStudio/amiberry / cpu_do_fallback

Function cpu_do_fallback

src/newcpu.cpp:3772–3819  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3770}
3771
3772static void cpu_do_fallback()
3773{
3774 bool fallbackmode = false;
3775 if ((fallback_new_cpu_model < 68020 && !(currprefs.chipset_mask & CSMASK_AGA)) || (fallback_new_cpu_model == 68020 && (currprefs.chipset_mask & CSMASK_AGA))) {
3776 // -> 68000/68010 or 68EC020
3777 fallback_cpu_model = currprefs.cpu_model;
3778 fallback_fpu_model = currprefs.fpu_model;
3779 fallback_mmu_model = currprefs.mmu_model;
3780 fallback_cpu_compatible = currprefs.cpu_compatible;
3781 fallback_cpu_address_space_24 = currprefs.address_space_24;
3782 changed_prefs.cpu_model = currprefs.cpu_model_fallback && fallback_new_cpu_model <= 68020 ? currprefs.cpu_model_fallback : fallback_new_cpu_model;
3783 changed_prefs.fpu_model = 0;
3784 changed_prefs.mmu_model = 0;
3785 changed_prefs.cpu_compatible = true;
3786 changed_prefs.address_space_24 = true;
3787 memcpy(&fallback_regs, &regs, sizeof(struct regstruct));
3788 fallback_regs.pc = M68K_GETPC;
3789 fallbackmode = true;
3790 } else {
3791 // -> 68020+
3792 changed_prefs.cpu_model = fallback_cpu_model;
3793 changed_prefs.fpu_model = fallback_fpu_model;
3794 changed_prefs.mmu_model = fallback_mmu_model;
3795 changed_prefs.cpu_compatible = fallback_cpu_compatible;
3796 changed_prefs.address_space_24 = fallback_cpu_address_space_24;
3797 fallback_cpu_model = 0;
3798 }
3799 init_m68k();
3800 build_cpufunctbl();
3801 m68k_reset2(false);
3802 if (!fallbackmode) {
3803 // restore original 68020+
3804 memcpy(&regs, &fallback_regs, sizeof(regs));
3805 restore_banks();
3806 memory_restore();
3807#ifdef DEBUGGER
3808 memory_map_dump();
3809#endif
3810 m68k_setpc(fallback_regs.pc);
3811 } else {
3812 // 68000/010/EC020
3813 memory_restore();
3814 expansion_cpu_fallback();
3815#ifdef DEBUGGER
3816 memory_map_dump();
3817#endif
3818 }
3819}
3820
3821static void m68k_reset_restore()
3822{

Callers 2

m68k_reset_restoreFunction · 0.85
m68k_goFunction · 0.85

Calls 8

init_m68kFunction · 0.85
build_cpufunctblFunction · 0.85
m68k_reset2Function · 0.85
restore_banksFunction · 0.85
memory_restoreFunction · 0.85
memory_map_dumpFunction · 0.85
m68k_setpcFunction · 0.85
expansion_cpu_fallbackFunction · 0.85

Tested by

no test coverage detected