# Pastebin yJVWy3Xb
// void m68k_context_switch(struct m68k_context_switch_frame *oldcs, struct m68k_context_switch_frame *newcs);
FUNCTION(m68k_context_switch)
movel %sp@+,%d0 // pop PC off the stack
movel %sp@,%a0 // oldcs
movel %sp@(4),%a1 // newcs
// save old state
movel %sp, %a0@(0) // oldcs.sp
movel %d0, %a0@(4) // oldcs.pc
moveml %d2-%d7/%a2-%a6, %a0@(8) // oldcs.
// load new state
movel %a1@(0), %sp // newcs.sp
movel %a1@(4), %sp@- // newcs.pc -> stack
moveml %a1@(8), %d2-%d7/%a2-%a6 // newcs.
// return to new PC
rts