Lines Matching refs:lwp

73 lwp_getsysent(klwp_t *lwp)  in lwp_getsysent()  argument
75 if (lwp_getdatamodel(lwp) == DATAMODEL_NATIVE) in lwp_getsysent()
79 #define LWP_GETSYSENT(lwp) (lwp_getsysent(lwp)) argument
81 #define LWP_GETSYSENT(lwp) (sysent) argument
91 xregrestore(klwp_t *lwp, int shared) in xregrestore() argument
97 if (lwp->lwp_pcb.pcb_xregstat == XREGMODIFIED) { in xregrestore()
98 struct machpcb *mpcb = lwptompcb(lwp); in xregrestore()
99 caddr_t sp = (caddr_t)lwptoregs(lwp)->r_sp; in xregrestore()
105 if (lwp_getdatamodel(lwp) == DATAMODEL_LP64) { in xregrestore()
117 (void) copyout_nowatch(&lwp->lwp_pcb.pcb_xregs, in xregrestore()
124 rwindow_nto32(&lwp->lwp_pcb.pcb_xregs, &rwindow32); in xregrestore()
133 bcopy(&lwp->lwp_pcb.pcb_xregs, &mpcb->mpcb_rwin[0], in xregrestore()
134 sizeof (lwp->lwp_pcb.pcb_xregs)); in xregrestore()
136 lwp->lwp_pcb.pcb_xregstat = XREGNONE; in xregrestore()
148 get_syscall_args(klwp_t *lwp, long *argp, int *nargsp) in get_syscall_args() argument
150 kthread_t *t = lwptot(lwp); in get_syscall_args()
156 if (lwptoproc(lwp)->p_model == DATAMODEL_ILP32) in get_syscall_args()
163 nargs = LWP_GETSYSENT(lwp)[code].sy_narg; in get_syscall_args()
168 ap = lwp->lwp_ap; in get_syscall_args()
182 get_syscall32_args(klwp_t *lwp, int *argp, int *nargsp) in get_syscall32_args() argument
187 code = get_syscall_args(lwp, args, nargsp); in get_syscall32_args()
209 klwp_t *lwp = ttolwp(t); in save_syscall_args() local
210 struct regs *rp = lwptoregs(lwp); in save_syscall_args()
217 if (lwp->lwp_argsaved || code == 0) in save_syscall_args()
223 struct sysent *se = LWP_GETSYSENT(lwp); in save_syscall_args()
256 if ((datamodel = lwp_getdatamodel(lwp)) == DATAMODEL_ILP32) { in save_syscall_args()
260 lwp->lwp_arg[0] = (uint32_t)rp->r_o1; in save_syscall_args()
261 lwp->lwp_arg[1] = (uint32_t)rp->r_o2; in save_syscall_args()
262 lwp->lwp_arg[2] = (uint32_t)rp->r_o3; in save_syscall_args()
263 lwp->lwp_arg[3] = (uint32_t)rp->r_o4; in save_syscall_args()
264 lwp->lwp_arg[4] = (uint32_t)rp->r_o5; in save_syscall_args()
272 lwp->lwp_arg[i] = a; in save_syscall_args()
277 lwp->lwp_arg[0] = (uint32_t)rp->r_o0; in save_syscall_args()
278 lwp->lwp_arg[1] = (uint32_t)rp->r_o1; in save_syscall_args()
279 lwp->lwp_arg[2] = (uint32_t)rp->r_o2; in save_syscall_args()
280 lwp->lwp_arg[3] = (uint32_t)rp->r_o3; in save_syscall_args()
281 lwp->lwp_arg[4] = (uint32_t)rp->r_o4; in save_syscall_args()
282 lwp->lwp_arg[5] = (uint32_t)rp->r_o5; in save_syscall_args()
290 lwp->lwp_arg[i] = a; in save_syscall_args()
297 lwp->lwp_arg[0] = rp->r_o0; in save_syscall_args()
298 lwp->lwp_arg[1] = rp->r_o1; in save_syscall_args()
299 lwp->lwp_arg[2] = rp->r_o2; in save_syscall_args()
300 lwp->lwp_arg[3] = rp->r_o3; in save_syscall_args()
301 lwp->lwp_arg[4] = rp->r_o4; in save_syscall_args()
302 lwp->lwp_arg[5] = rp->r_o5; in save_syscall_args()
309 lwp->lwp_arg[i] = a; in save_syscall_args()
316 lwp->lwp_ap = lwp->lwp_arg; in save_syscall_args()
317 lwp->lwp_argsaved = 1; in save_syscall_args()
325 klwp_t *lwp = ttolwp(curthread); in reset_syscall_args() local
327 lwp->lwp_ap = (long *)&lwptoregs(lwp)->r_o0; in reset_syscall_args()
328 lwp->lwp_argsaved = 0; in reset_syscall_args()
357 klwp_t *lwp = ttolwp(t); in pre_syscall() local
358 struct regs *rp = lwptoregs(lwp); in pre_syscall()
374 ASSERT(lwp->lwp_ap == (long *)&rp->r_o0); in pre_syscall()
398 if (lwp->lwp_pcb.pcb_step != STEP_NONE) { in pre_syscall()
435 lwp->lwp_argsaved = 0; in pre_syscall()
436 lwp->lwp_ap = (long *)&rp->r_o0; in pre_syscall()
443 if (lwp->lwp_sysabort) { in pre_syscall()
449 lwp->lwp_sysabort = 0; in pre_syscall()
462 0, lwp)) { in pre_syscall()
464 lwp->lwp_error = 0; /* for old drivers */ in pre_syscall()
492 callp = LWP_GETSYSENT(lwp) + code; in pre_syscall()
504 for (i = 0, ap = lwp->lwp_ap; i < callp->sy_narg; i++, ap++) { in pre_syscall()
521 lwp->lwp_error = 0; /* for old drivers */ in pre_syscall()
522 lwp->lwp_badpriv = PRIV_NONE; /* for privilege tracing */ in pre_syscall()
539 klwp_t *lwp = ttolwp(t); in post_syscall() local
540 struct regs *rp = lwptoregs(lwp); in post_syscall()
549 error = lwp->lwp_errno; in post_syscall()
599 if (lwp->lwp_eosys == NORMALRETURN) { in post_syscall()
627 (sig = lwp->lwp_cursig) != 0 && in post_syscall()
682 if (lwp->lwp_oweupc) in post_syscall()
693 lwp->lwp_eosys = NORMALRETURN; in post_syscall()
752 if (ISSIG_PENDING(t, lwp, p)) { in post_syscall()
760 LWP_GETSYSENT(lwp)[code].sy_narg : 0; in post_syscall()
771 if (lwp->lwp_pcb.pcb_flags & CPC_OVERFLOW) in post_syscall()
779 if (lwp->lwp_pcb.pcb_flags & ASYNC_HWERR) in post_syscall()
787 if (lwp->lwp_pcb.pcb_xregstat != XREGNONE) in post_syscall()
788 xregrestore(lwp, 1); in post_syscall()
790 lwp->lwp_errno = 0; /* clear error for next time */ in post_syscall()
814 lwp->lwp_state = LWP_USER; in post_syscall()
829 if (lwp->lwp_pcb.pcb_step != STEP_NONE) { in post_syscall()
840 lwp->lwp_ap = (long *)&rp->r_o0; in post_syscall()
841 lwp->lwp_argsaved = 0; in post_syscall()
857 if (lwp->lwp_ustack != 0 && lwp->lwp_old_stk_ctl != 0) { in post_syscall()
876 if (copyin((stack_t *)lwp->lwp_ustack, &stk, in post_syscall()
878 (stk.ss_size == lwp->lwp_old_stk_ctl || in post_syscall()
886 (stack_t *)lwp->lwp_ustack, in post_syscall()
892 if (copyin((stack32_t *)lwp->lwp_ustack, &stk32, in post_syscall()
894 (stk32.ss_size == lwp->lwp_old_stk_ctl || in post_syscall()
902 (stack32_t *)lwp->lwp_ustack, in post_syscall()
907 lwp->lwp_old_stk_ctl = 0; in post_syscall()
924 klwp_t *lwp = ttolwp(curthread); in syscall_ap() local
925 struct regs *rp = lwptoregs(lwp); in syscall_ap()
927 callp = LWP_GETSYSENT(lwp) + curthread->t_sysnum; in syscall_ap()
938 lwp->lwp_error = 0; /* for old drivers */ in syscall_ap()
939 error = (*(callp->sy_call))(lwp->lwp_ap, &rval); in syscall_ap()
1057 klwp_t *lwp = ttolwp(curthread); in indir() local
1063 ASSERT(lwp->lwp_ap != NULL); in indir()
1066 callp = LWP_GETSYSENT(lwp) + code; in indir()
1074 } else if (!lwp->lwp_argsaved) { in indir()
1077 ap = lwp->lwp_ap; /* args haven't been saved */ in indir()
1078 lwp->lwp_ap = ap + 1; /* advance arg pointer */ in indir()
1081 return ((*callp->sy_callc)(a0, a1, a2, a3, a4, lwp->lwp_arg[5])); in indir()