crash-context 0.7.0

Provides portable types containing target specific contextual information at the time of a crash
Documentation
std::arch::global_asm! {
    ".text",
    ".global crash_context_getcontext",
    ".hidden crash_context_getcontext",
    ".type crash_context_getcontext, @function",
    ".align 8",
    ".cfi_startproc",
    "crash_context_getcontext:",

    "lgr     %r0,%r2",

    /* rt_sigprocmask (SIG_BLOCK, NULL, &sc->sc_mask, sigsetsize).  */
    "la      %r4,384(%r2)",
    "la      %r2,0",
    "slgr    %r3,%r3",
    "lghi    %r5,8",
    "lghi    %r1,175",
    "svc     0",

    /* Store fpu context.  */
    "lgr     %r1,%r0",
    "stfpc   248(%r1)",
    "std     %f0,256(%r1)",
    "std     %f1,264(%r1)",
    "std     %f2,272(%r1)",
    "std     %f3,280(%r1)",
    "std     %f4,288(%r1)",
    "std     %f5,296(%r1)",
    "std     %f6,304(%r1)",
    "std     %f7,312(%r1)",
    "std     %f8,320(%r1)",
    "std     %f9,328(%r1)",
    "std     %f10,336(%r1)",
    "std     %f11,344(%r1)",
    "std     %f12,352(%r1)",
    "std     %f13,360(%r1)",
    "std     %f14,368(%r1)",
    "std     %f15,376(%r1)",

    /* Set __getcontext return value to 0.  */
    "slgr    %r2,%r2",

    /* Store access registers.  */
    "stam    %a0,%a15,184(%r1)",

    /* Store general purpose registers.  */
    "stmg    %r0,%r15,56(%r1)",

    /* Store psw mask to 0x0 and addr to return address.  Then the address
    can be retrieved from the ucontext structure in the same way as if it
    is created by kernel and passed to a signal-handler. */
    "stg     %r2,40(%r1)",
    "stg     %r14,48(%r1)",
    "br      %r14",

    ".cfi_endproc",
    ".size crash_context_getcontext, . - crash_context_getcontext",
}