* [Qemu-devel] [PATCH v2] m68: fix exception stack frame for 68000
@ 2018-04-13 13:30 Pavel Dovgalyuk
2018-04-13 13:57 ` Laurent Vivier
0 siblings, 1 reply; 2+ messages in thread
From: Pavel Dovgalyuk @ 2018-04-13 13:30 UTC (permalink / raw)
To: qemu-devel; +Cc: maria.klimushenkova, dovgaluk, laurent, pavel.dovgaluk
68000 CPUs do not save format in the exception stack frame.
This patch adds feature checking to prevent format saving for 68000.
m68k_ret() already includes this modification, this patch fixes
the exception processing function too.
Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
--
v2:
- moved switch under the condition (suggested by Laurent Vivier)
---
target/m68k/op_helper.c | 33 ++++++++++++++++++---------------
1 file changed, 18 insertions(+), 15 deletions(-)
diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c
index 3a7f7f2..8d09ed9 100644
--- a/target/m68k/op_helper.c
+++ b/target/m68k/op_helper.c
@@ -287,22 +287,25 @@ static inline void do_stack_frame(CPUM68KState *env, uint32_t *sp,
uint16_t format, uint16_t sr,
uint32_t addr, uint32_t retaddr)
{
- CPUState *cs = CPU(m68k_env_get_cpu(env));
- switch (format) {
- case 4:
- *sp -= 4;
- cpu_stl_kernel(env, *sp, env->pc);
- *sp -= 4;
- cpu_stl_kernel(env, *sp, addr);
- break;
- case 3:
- case 2:
- *sp -= 4;
- cpu_stl_kernel(env, *sp, addr);
- break;
+ if (m68k_feature(env, M68K_FEATURE_QUAD_MULDIV)) {
+ /* all except 68000 */
+ CPUState *cs = CPU(m68k_env_get_cpu(env));
+ switch (format) {
+ case 4:
+ *sp -= 4;
+ cpu_stl_kernel(env, *sp, env->pc);
+ *sp -= 4;
+ cpu_stl_kernel(env, *sp, addr);
+ break;
+ case 3:
+ case 2:
+ *sp -= 4;
+ cpu_stl_kernel(env, *sp, addr);
+ break;
+ }
+ *sp -= 2;
+ cpu_stw_kernel(env, *sp, (format << 12) + (cs->exception_index << 2));
}
- *sp -= 2;
- cpu_stw_kernel(env, *sp, (format << 12) + (cs->exception_index << 2));
*sp -= 4;
cpu_stl_kernel(env, *sp, retaddr);
*sp -= 2;
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [Qemu-devel] [PATCH v2] m68: fix exception stack frame for 68000
2018-04-13 13:30 [Qemu-devel] [PATCH v2] m68: fix exception stack frame for 68000 Pavel Dovgalyuk
@ 2018-04-13 13:57 ` Laurent Vivier
0 siblings, 0 replies; 2+ messages in thread
From: Laurent Vivier @ 2018-04-13 13:57 UTC (permalink / raw)
To: Pavel Dovgalyuk, qemu-devel; +Cc: maria.klimushenkova, dovgaluk
Le 13/04/2018 à 15:30, Pavel Dovgalyuk a écrit :
> 68000 CPUs do not save format in the exception stack frame.
> This patch adds feature checking to prevent format saving for 68000.
> m68k_ret() already includes this modification, this patch fixes
> the exception processing function too.
>
> Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
>
> --
>
> v2:
> - moved switch under the condition (suggested by Laurent Vivier)
> ---
> target/m68k/op_helper.c | 33 ++++++++++++++++++---------------
> 1 file changed, 18 insertions(+), 15 deletions(-)
>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-04-13 13:57 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-04-13 13:30 [Qemu-devel] [PATCH v2] m68: fix exception stack frame for 68000 Pavel Dovgalyuk
2018-04-13 13:57 ` Laurent Vivier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).