pub inline fn current() M88k {
var ctx: M88k = undefined;
asm volatile (
\\ st %%r0, %%r2, 0
\\ st %%r1, %%r2, 4
\\ st %%r2, %%r2, 8
\\ st %%r3, %%r2, 12
\\ st %%r4, %%r2, 16
\\ st %%r5, %%r2, 20
\\ st %%r6, %%r2, 24
\\ st %%r7, %%r2, 28
\\ st %%r8, %%r2, 32
\\ st %%r9, %%r2, 36
\\ st %%r10, %%r2, 40
\\ st %%r11, %%r2, 44
\\ st %%r12, %%r2, 48
\\ st %%r13, %%r2, 52
\\ st %%r14, %%r2, 56
\\ st %%r15, %%r2, 60
\\ st %%r16, %%r2, 64
\\ st %%r17, %%r2, 68
\\ st %%r18, %%r2, 72
\\ st %%r19, %%r2, 76
\\ st %%r20, %%r2, 80
\\ st %%r21, %%r2, 84
\\ st %%r22, %%r2, 88
\\ st %%r23, %%r2, 92
\\ st %%r24, %%r2, 96
\\ st %%r25, %%r2, 100
\\ st %%r26, %%r2, 104
\\ st %%r27, %%r2, 108
\\ st %%r28, %%r2, 112
\\ st %%r29, %%r2, 116
\\ st %%r30, %%r2, 120
\\ st %%r31, %%r2, 124
\\ bsr.n 1f
\\1:
\\ st %%r1, %%r2, 128
:
: [ctx] "{r2}" (&ctx),
: .{ .r1 = true, .memory = true });
return ctx;
}