m68: fix exception stack frame for 68000
PATCH v2 1/1 m68: fix exception stack frame for 68000
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 <[email protected]>
--
v2:
- moved switch under the condition (suggested by Laurent Vivier)
--- target/m68k/op_helper.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-)
target/m68k/op_helper.c +18 -15
@@ -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 ;
Le 13/04/2018 à 15:30, Pavel Dovgalyuk a écrit :
Quoted 7 lines
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 <[email protected]>
Quoted 8 lines
--
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 <[email protected]>