unicorn/qemu/target/m68k
Mark Cave-Ayland 0be85bf91a target/m68k: don't set SSW ATC bit for physical bus errors
If a NuBus slot doesn't contain a card, the Quadra hardware generates a physical
bus error if the CPU attempts to access the slot address space. Both Linux and
MacOS use a separate bus error handler during NuBus accesses in order to detect
and recover when addressing empty slots.

According to the MC68040 users manual the ATC bit of the SSW is used to
distinguish between ATC faults and physical bus errors. MacOS specifically checks
the stack frame generated by a NuBus error and panics if the SSW ATC bit is set.

Update m68k_cpu_transaction_failed() so that the SSW ATC bit is not set if the
memory API returns MEMTX_DECODE_ERROR which will be used to indicate that an
access to an empty NuBus slot occurred.

Backports d6cbd8f7a19e6f0fd22a598aad992c4913f481f2
2021-03-12 14:29:37 -05:00
..
cpu-param.h tcg: Split out target/arch/cpu-param.h 2019-06-10 19:35:46 -04:00
cpu-qom.h m68k comments break patch submission due to being incorrectly formatted 2019-08-08 14:26:45 -04:00
cpu.c m68k: Fix build 2021-03-05 08:29:53 -05:00
cpu.h target/m68k: remove useless qregs array 2021-03-03 19:11:44 -05:00
fpu_helper.c target/m68k: implement opcode fetoxm1 2020-06-14 21:13:29 -04:00
helper.c target/m68k: consolidate physical translation offset into get_physical_address() 2021-02-25 23:13:48 -05:00
helper.h target/m68k: implement opcode fetoxm1 2020-06-14 21:13:29 -04:00
Makefile.objs target/m68k: add fmod/frem 2018-03-09 01:28:58 -05:00
op_helper.c target/m68k: don't set SSW ATC bit for physical bus errors 2021-03-12 14:29:37 -05:00
qregs.def target-m68k: use floatx80 internally 2018-03-03 19:35:17 -05:00
softfloat.c softfloat: merge floatx80_mod and floatx80_rem 2021-02-25 13:34:05 -05:00
softfloat.h softfloat: merge floatx80_mod and floatx80_rem 2021-02-25 13:34:05 -05:00
softfloat_fpsp_tables.h m68k comments break patch submission due to being incorrectly formatted 2019-08-08 14:26:45 -04:00
translate.c target/m68k: implement rtr instruction 2021-03-12 14:28:33 -05:00
unicorn.c Use DEFINE_MACHINE() to register all machines 2018-03-11 15:12:46 -04:00
unicorn.h Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00