Lines Matching refs:pldt

69 static void user_ldt_deref(struct proc_ldt *pldt);
70 static void user_ldt_derefl(struct proc_ldt *pldt);
526 struct proc_ldt *pldt, *new_ldt; in user_ldt_alloc() local
552 pldt = mdp->md_ldt; in user_ldt_alloc()
553 if (pldt != NULL && !force) { in user_ldt_alloc()
557 return (pldt); in user_ldt_alloc()
560 if (pldt != NULL) { in user_ldt_alloc()
561 bcopy(pldt->ldt_base, new_ldt->ldt_base, max_ldt_segment * in user_ldt_alloc()
563 user_ldt_derefl(pldt); in user_ldt_alloc()
580 struct proc_ldt *pldt; in user_ldt_free() local
583 if ((pldt = mdp->md_ldt) == NULL) { in user_ldt_free()
595 user_ldt_deref(pldt); in user_ldt_free()
599 user_ldt_derefl(struct proc_ldt *pldt) in user_ldt_derefl() argument
604 if (--pldt->ldt_refcnt == 0) { in user_ldt_derefl()
605 sva = (vm_offset_t)pldt->ldt_base; in user_ldt_derefl()
608 kmem_free(pldt->ldt_base, sz); in user_ldt_derefl()
609 free(pldt, M_SUBPROC); in user_ldt_derefl()
614 user_ldt_deref(struct proc_ldt *pldt) in user_ldt_deref() argument
618 user_ldt_derefl(pldt); in user_ldt_deref()
631 struct proc_ldt *pldt; in amd64_get_ldt() local
642 pldt = td->td_proc->p_md.md_ldt; in amd64_get_ldt()
643 if (pldt == NULL || uap->start >= max_ldt_segment || uap->num == 0) { in amd64_get_ldt()
648 lp = &((struct user_segment_descriptor *)(pldt->ldt_base))[uap->start]; in amd64_get_ldt()
668 struct proc_ldt *pldt; in amd64_set_ldt() local
689 if ((pldt = mdp->md_ldt) == NULL || in amd64_set_ldt()
699 ((volatile uint64_t *)(pldt->ldt_base))[i] = 0; in amd64_set_ldt()
772 pldt = user_ldt_alloc(p, 0); in amd64_set_ldt()
773 if (pldt == NULL) { in amd64_set_ldt()
783 dp = &((struct user_segment_descriptor *)(pldt->ldt_base))[i]; in amd64_set_ldt()
816 struct proc_ldt *pldt; in amd64_set_ldt_data() local
823 pldt = mdp->md_ldt; in amd64_set_ldt_data()
824 dst = (volatile uint64_t *)(pldt->ldt_base); in amd64_set_ldt_data()