target/m68k: Fix exception frame format for 68010
commitf3c6376c8475388e5218a9503f0c545ca26492a5
authorDaniel Palmer <daniel@0x0f.com>
Mon, 15 Jan 2024 10:16:42 +0000 (15 19:16 +0900)
committerThomas Huth <thuth@redhat.com>
Fri, 23 Feb 2024 07:12:27 +0000 (23 08:12 +0100)
tree6eb7e2a99cd5eae038f945ab80c6aac2ac4b5fa3
parent3d54cbf269d63ff1d500b35b2bcf4565ff8ad485
target/m68k: Fix exception frame format for 68010

From the 68010 a word with the frame format and exception vector
are placed on the stack before the PC and SR.

M68K_FEATURE_QUAD_MULDIV is currently checked to workout if to do
this or not for the configured CPU but that flag isn't set for
68010 so currently the exception stack when 68010 is configured
is incorrect.

It seems like checking M68K_FEATURE_MOVEFROMSR_PRIV would do but
adding a new flag that shows exactly what is going on here is
maybe clearer.

Add a new flag for the behaviour, M68K_FEATURE_EXCEPTION_FORMAT_VEC,
and set it for 68010 and above, and then use it to control if the
format and vector word are pushed/pop during exception entry/exit.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2164
Signed-off-by: Daniel Palmer <daniel@0x0f.com>
Message-ID: <20240115101643.2165387-1-daniel@0x0f.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
target/m68k/cpu.c
target/m68k/cpu.h
target/m68k/op_helper.c