void * cpu_sendsig_getframe(struct lwp *l, int signo, bool *onstack) { struct trapframe * const tf = l->l_md.md_utf; struct proc * const p = l->l_proc; /* Do we need to jump onto the signal stack? */ *onstack = (l->l_sigstk.ss_flags & (SS_DISABLE | SS_ONSTACK)) == 0 && (SIGACTION(p, signo).sa_flags & SA_ONSTACK) != 0; if (*onstack) return (char *)stack_align((intptr_t)l->l_sigstk.ss_sp + l->l_sigstk.ss_size); return (void *)(intptr_t)stack_align(tf->tf_sp); }
int main (void) { standard (); stack_align (); gdb1253 (); gdb1718 (); gdb1338 (); jump_at_beginning (); return 0; }
sc_cor* sc_cor_pkg_qt::create( std::size_t stack_size, sc_cor_fn* fn, void* arg ) { sc_cor_qt* cor = new sc_cor_qt(); cor->m_pkg = this; cor->m_stack_size = stack_size; cor->m_stack = new char[cor->m_stack_size]; void* sto = stack_align( cor->m_stack, QUICKTHREADS_STKALIGN, &cor->m_stack_size ); cor->m_sp = QUICKTHREADS_SP(sto, cor->m_stack_size - QUICKTHREADS_STKALIGN); cor->m_sp = QUICKTHREADS_ARGS( cor->m_sp, arg, cor, (qt_userf_t*) fn, sc_cor_qt_wrapper ); return cor; }