# HG changeset patch # User Michael Pavone # Date 1705732225 28800 # Node ID 1fba97414ba6eb68a88acfb36128ad89c98c4620 # Parent 0871f555eff6fa83b0012482ed5196c62b9ab4e1 Properly handle stack alignment in m68k breakpoint implementation diff -r 0871f555eff6 -r 1fba97414ba6 m68k_core_x86.c --- a/m68k_core_x86.c Thu Jan 18 23:03:58 2024 -0800 +++ b/m68k_core_x86.c Fri Jan 19 22:30:25 2024 -0800 @@ -2581,7 +2581,7 @@ mov_ir(&native, address, opts->gen.scratch1, SZ_D); - call(&native, opts->bp_stub); + call_noalign(&native, opts->bp_stub); } void init_m68k_opts(m68k_options * opts, memmap_chunk * memmap, uint32_t num_chunks, uint32_t clock_divider, sync_fun sync_components, int_ack_fun int_ack) @@ -3277,10 +3277,10 @@ opts->prologue_start = *opts->bp_stub; //Calculate length of patch mov_ir(code, 0x1234, opts->gen.scratch1, SZ_D); - call(code, opts->bp_stub); + call_noalign(code, opts->bp_stub); int patch_size = code->cur - opts->bp_stub; code->cur = opts->bp_stub; - code->stack_off = tmp_stack_off; + code->stack_off = tmp_stack_off + sizeof(void*); //Save context and call breakpoint handler call(code, opts->gen.save_context);