Lines Matching refs:lwp

72 lwp_getsysent(klwp_t *lwp)  in lwp_getsysent()  argument
74 if (lwp_getdatamodel(lwp) == DATAMODEL_NATIVE) in lwp_getsysent()
78 #define LWP_GETSYSENT(lwp) (lwp_getsysent(lwp)) argument
80 #define LWP_GETSYSENT(lwp) (sysent) argument
90 xregrestore(klwp_t *lwp, int shared) in xregrestore() argument
96 if (lwp->lwp_pcb.pcb_xregstat == XREGMODIFIED) { in xregrestore()
97 struct machpcb *mpcb = lwptompcb(lwp); in xregrestore()
98 caddr_t sp = (caddr_t)lwptoregs(lwp)->r_sp; in xregrestore()
104 if (lwp_getdatamodel(lwp) == DATAMODEL_LP64) { in xregrestore()
116 (void) copyout_nowatch(&lwp->lwp_pcb.pcb_xregs, in xregrestore()
123 rwindow_nto32(&lwp->lwp_pcb.pcb_xregs, &rwindow32); in xregrestore()
132 bcopy(&lwp->lwp_pcb.pcb_xregs, &mpcb->mpcb_rwin[0], in xregrestore()
133 sizeof (lwp->lwp_pcb.pcb_xregs)); in xregrestore()
135 lwp->lwp_pcb.pcb_xregstat = XREGNONE; in xregrestore()
147 get_syscall_args(klwp_t *lwp, long *argp, int *nargsp) in get_syscall_args() argument
149 kthread_t *t = lwptot(lwp); in get_syscall_args()
155 if (lwptoproc(lwp)->p_model == DATAMODEL_ILP32) in get_syscall_args()
162 nargs = LWP_GETSYSENT(lwp)[code].sy_narg; in get_syscall_args()
167 ap = lwp->lwp_ap; in get_syscall_args()
181 get_syscall32_args(klwp_t *lwp, int *argp, int *nargsp) in get_syscall32_args() argument
186 code = get_syscall_args(lwp, args, nargsp); in get_syscall32_args()
208 klwp_t *lwp = ttolwp(t); in save_syscall_args() local
209 struct regs *rp = lwptoregs(lwp); in save_syscall_args()
216 if (lwp->lwp_argsaved || code == 0) in save_syscall_args()
222 struct sysent *se = LWP_GETSYSENT(lwp); in save_syscall_args()
255 if ((datamodel = lwp_getdatamodel(lwp)) == DATAMODEL_ILP32) { in save_syscall_args()
259 lwp->lwp_arg[0] = (uint32_t)rp->r_o1; in save_syscall_args()
260 lwp->lwp_arg[1] = (uint32_t)rp->r_o2; in save_syscall_args()
261 lwp->lwp_arg[2] = (uint32_t)rp->r_o3; in save_syscall_args()
262 lwp->lwp_arg[3] = (uint32_t)rp->r_o4; in save_syscall_args()
263 lwp->lwp_arg[4] = (uint32_t)rp->r_o5; in save_syscall_args()
271 lwp->lwp_arg[i] = a; in save_syscall_args()
276 lwp->lwp_arg[0] = (uint32_t)rp->r_o0; in save_syscall_args()
277 lwp->lwp_arg[1] = (uint32_t)rp->r_o1; in save_syscall_args()
278 lwp->lwp_arg[2] = (uint32_t)rp->r_o2; in save_syscall_args()
279 lwp->lwp_arg[3] = (uint32_t)rp->r_o3; in save_syscall_args()
280 lwp->lwp_arg[4] = (uint32_t)rp->r_o4; in save_syscall_args()
281 lwp->lwp_arg[5] = (uint32_t)rp->r_o5; in save_syscall_args()
289 lwp->lwp_arg[i] = a; in save_syscall_args()
296 lwp->lwp_arg[0] = rp->r_o0; in save_syscall_args()
297 lwp->lwp_arg[1] = rp->r_o1; in save_syscall_args()
298 lwp->lwp_arg[2] = rp->r_o2; in save_syscall_args()
299 lwp->lwp_arg[3] = rp->r_o3; in save_syscall_args()
300 lwp->lwp_arg[4] = rp->r_o4; in save_syscall_args()
301 lwp->lwp_arg[5] = rp->r_o5; in save_syscall_args()
308 lwp->lwp_arg[i] = a; in save_syscall_args()
315 lwp->lwp_ap = lwp->lwp_arg; in save_syscall_args()
316 lwp->lwp_argsaved = 1; in save_syscall_args()
324 klwp_t *lwp = ttolwp(curthread); in reset_syscall_args() local
326 lwp->lwp_ap = (long *)&lwptoregs(lwp)->r_o0; in reset_syscall_args()
327 lwp->lwp_argsaved = 0; in reset_syscall_args()
356 klwp_t *lwp = ttolwp(t); in pre_syscall() local
357 struct regs *rp = lwptoregs(lwp); in pre_syscall()
373 ASSERT(lwp->lwp_ap == (long *)&rp->r_o0); in pre_syscall()
397 if (lwp->lwp_pcb.pcb_step != STEP_NONE) { in pre_syscall()
434 lwp->lwp_argsaved = 0; in pre_syscall()
435 lwp->lwp_ap = (long *)&rp->r_o0; in pre_syscall()
442 if (lwp->lwp_sysabort) { in pre_syscall()
448 lwp->lwp_sysabort = 0; in pre_syscall()
461 0, lwp)) { in pre_syscall()
463 lwp->lwp_error = 0; /* for old drivers */ in pre_syscall()
491 callp = LWP_GETSYSENT(lwp) + code; in pre_syscall()
503 for (i = 0, ap = lwp->lwp_ap; i < callp->sy_narg; i++, ap++) { in pre_syscall()
520 lwp->lwp_error = 0; /* for old drivers */ in pre_syscall()
521 lwp->lwp_badpriv = PRIV_NONE; /* for privilege tracing */ in pre_syscall()
538 klwp_t *lwp = ttolwp(t); in post_syscall() local
539 struct regs *rp = lwptoregs(lwp); in post_syscall()
548 error = lwp->lwp_errno; in post_syscall()
598 if (lwp->lwp_eosys == NORMALRETURN) { in post_syscall()
626 (sig = lwp->lwp_cursig) != 0 && in post_syscall()
681 if (lwp->lwp_oweupc) in post_syscall()
692 lwp->lwp_eosys = NORMALRETURN; in post_syscall()
751 if (ISSIG_PENDING(t, lwp, p)) { in post_syscall()
759 LWP_GETSYSENT(lwp)[code].sy_narg : 0; in post_syscall()
770 if (lwp->lwp_pcb.pcb_flags & CPC_OVERFLOW) in post_syscall()
778 if (lwp->lwp_pcb.pcb_flags & ASYNC_HWERR) in post_syscall()
786 if (lwp->lwp_pcb.pcb_xregstat != XREGNONE) in post_syscall()
787 xregrestore(lwp, 1); in post_syscall()
789 lwp->lwp_errno = 0; /* clear error for next time */ in post_syscall()
813 lwp->lwp_state = LWP_USER; in post_syscall()
828 if (lwp->lwp_pcb.pcb_step != STEP_NONE) { in post_syscall()
839 lwp->lwp_ap = (long *)&rp->r_o0; in post_syscall()
840 lwp->lwp_argsaved = 0; in post_syscall()
856 if (lwp->lwp_ustack != 0 && lwp->lwp_old_stk_ctl != 0) { in post_syscall()
875 if (copyin((stack_t *)lwp->lwp_ustack, &stk, in post_syscall()
877 (stk.ss_size == lwp->lwp_old_stk_ctl || in post_syscall()
885 (stack_t *)lwp->lwp_ustack, in post_syscall()
891 if (copyin((stack32_t *)lwp->lwp_ustack, &stk32, in post_syscall()
893 (stk32.ss_size == lwp->lwp_old_stk_ctl || in post_syscall()
901 (stack32_t *)lwp->lwp_ustack, in post_syscall()
906 lwp->lwp_old_stk_ctl = 0; in post_syscall()
923 klwp_t *lwp = ttolwp(curthread); in syscall_ap() local
924 struct regs *rp = lwptoregs(lwp); in syscall_ap()
926 callp = LWP_GETSYSENT(lwp) + curthread->t_sysnum; in syscall_ap()
937 lwp->lwp_error = 0; /* for old drivers */ in syscall_ap()
938 error = (*(callp->sy_call))(lwp->lwp_ap, &rval); in syscall_ap()
1058 klwp_t *lwp = ttolwp(curthread); in indir() local
1064 ASSERT(lwp->lwp_ap != NULL); in indir()
1067 callp = LWP_GETSYSENT(lwp) + code; in indir()
1075 } else if (!lwp->lwp_argsaved) { in indir()
1078 ap = lwp->lwp_ap; /* args haven't been saved */ in indir()
1079 lwp->lwp_ap = ap + 1; /* advance arg pointer */ in indir()
1082 return ((*callp->sy_callc)(a0, a1, a2, a3, a4, lwp->lwp_arg[5])); in indir()