Changeset View
Changeset View
Standalone View
Standalone View
src/UnwindRegistersSave.S
Show First 20 Lines • Show All 936 Lines • ▼ Show 20 Lines | DEFINE_LIBUNWIND_FUNCTION(unw_getcontext) | ||||
l.sw 112(r3), r28 | l.sw 112(r3), r28 | ||||
l.sw 116(r3), r29 | l.sw 116(r3), r29 | ||||
l.sw 120(r3), r30 | l.sw 120(r3), r30 | ||||
l.sw 124(r3), r31 | l.sw 124(r3), r31 | ||||
# store ra to pc | # store ra to pc | ||||
l.sw 128(r3), r9 | l.sw 128(r3), r9 | ||||
# zero epcr | # zero epcr | ||||
l.sw 132(r3), r0 | l.sw 132(r3), r0 | ||||
#endif | |||||
#elif defined(__sparc__) | |||||
# | |||||
# extern int unw_getcontext(unw_context_t* thread_state) | |||||
# | |||||
# On entry: | |||||
# thread_state pointer is in o0 | |||||
# | |||||
DEFINE_LIBUNWIND_FUNCTION(unw_getcontext) | |||||
ta 3 | |||||
std %g0, [%o0 + 0] | |||||
std %g2, [%o0 + 8] | |||||
std %g4, [%o0 + 16] | |||||
std %g6, [%o0 + 24] | |||||
std %o0, [%o0 + 32] | |||||
std %o2, [%o0 + 40] | |||||
std %o4, [%o0 + 48] | |||||
std %o6, [%o0 + 56] | |||||
std %l0, [%o0 + 64] | |||||
std %l2, [%o0 + 72] | |||||
std %l4, [%o0 + 80] | |||||
std %l6, [%o0 + 88] | |||||
std %i0, [%o0 + 96] | |||||
std %i2, [%o0 + 104] | |||||
std %i4, [%o0 + 112] | |||||
std %i6, [%o0 + 120] | |||||
retl | |||||
clr %o0 // return UNW_ESUCCESS | |||||
#endif | |||||
compnerd: Indentation is off | |||||
#endif /* !defined(__USING_SJLJ_EXCEPTIONS__) */ | #endif /* !defined(__USING_SJLJ_EXCEPTIONS__) */ | ||||
NO_EXEC_STACK_DIRECTIVE | NO_EXEC_STACK_DIRECTIVE | ||||
Indentation is off