SAVE
SAVE(PSTR);
SAVE(PCFR);
SAVE(PSTR);
SAVE(GPDR);
SAVE(GAFR);
SAVE(PPDR);
SAVE(PPSR);
SAVE(PPAR);
SAVE(PSDR);
SAVE(Ser1SDCR0);
emit(SAVE | IMMED | RS1(SP) | S13(-stack_needed) | RD(SP), ctx);
cp_bra (ctx, SWAP_DIRECTION, SAVE, cp_swap_state3d_3_is_save);
cp_set (ctx, SWAP_DIRECTION, SAVE);
cp_bra (ctx, SWAP_DIRECTION, SAVE, cp_check_load);
cp_set (ctx, SWAP_DIRECTION, SAVE);
cp_bra (ctx, SWAP_DIRECTION, SAVE, cp_check_load);
cp_set (ctx, SWAP_DIRECTION, SAVE); /* no idea why this is needed, but fixes at least one lockup. */