Commit 0be1a589 by Ian Lance Taylor

runtime: provide initcontext and fixcontext for NetBSD

From-SVN: r193173
parent ae0b23e2
......@@ -82,7 +82,7 @@ fixcontext(ucontext_t *c __attribute__ ((unused)))
{
}
# else
#else
# if defined(__x86_64__) && defined(__sun__)
......@@ -110,6 +110,28 @@ fixcontext(ucontext_t* c)
c->uc_mcontext.gregs[REG_FSBASE] = fs;
}
# elif defined(__NetBSD__)
// NetBSD has a bug: setcontext clobbers tlsbase, we need to save
// and restore it ourselves.
static __thread __greg_t tlsbase;
static inline void
initcontext(void)
{
ucontext_t c;
getcontext(&c);
tlsbase = c.uc_mcontext._mc_tlsbase;
}
static inline void
fixcontext(ucontext_t* c)
{
c->uc_mcontext._mc_tlsbase = tlsbase;
}
# else
# error unknown case for SETCONTEXT_CLOBBERS_TLS
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment