• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.5.8/xnu-1228.15.4/osfmk/i386/

Lines Matching defs:pcb

253 	pcb_t pcb;
255 pcb = thread->machine.pcb;
256 ids = pcb->ids;
262 simple_lock(&pcb->lock);
264 if (pcb->ids == NULL) {
265 pcb->ids = ids;
266 simple_unlock(&pcb->lock);
268 simple_unlock(&pcb->lock);
314 pcb_t pcb;
316 pcb = thread->machine.pcb;
317 ids = pcb->ids;
323 simple_lock(&pcb->lock);
325 if (pcb->ids == NULL) {
326 pcb->ids = ids;
327 simple_unlock(&pcb->lock);
329 simple_unlock(&pcb->lock);
375 saved_state = thread->machine.pcb->ids;
395 saved_state = (x86_debug_state64_t *)thread->machine.pcb->ids;
429 pcb_t pcb = new->machine.pcb;
437 STACK_IEL(new->kernel_stack)->saved_state = pcb->iss;
448 ((unsigned long)pcb->iss & PAGE_MASK));
452 pmap_high_map(pcb->iss_pte0, HIGH_CPU_ISS0);
453 pmap_high_map(pcb->iss_pte1, HIGH_CPU_ISS1);
461 * For fast syscall, top of interrupt stack points to pcb stack
467 } else if (is_saved_state64(pcb->iss)) {
478 assert(is_saved_state64(pcb->iss));
480 iss64 = (x86_saved_state64_tagged_t *) pcb->iss;
491 /* Interrupt stack is pcb */
495 * Top of temporary sysenter stack points to pcb stack.
514 assert(is_saved_state32(pcb->iss));
515 iss32compat = (x86_saved_state_compat32_t *) pcb->iss;
528 /* Top of temporary sysenter stack points to pcb stack */
531 /* Interrupt stack is pcb */
539 cdp->cpu_uber_arg_store_valid = UBER64((vm_offset_t)&pcb->arg_store_valid);
540 pcb->arg_store_valid = 0;
557 ldtp[sel_idx(USER_CTHREAD)] = pcb->cthread_desc;
558 if (pcb->uldt_selector != 0)
559 ldtp[sel_idx(pcb->uldt_selector)] = pcb->uldt_desc;
564 cdp->cpu_uber.cu_user_gs_base = pcb->cthread_self;
661 if (thread->machine.pcb->ifps) {
1652 pcb_t pcb = &thread->machine.xxx_pcb;
1663 * Allocate pcb only if required.
1665 if (pcb->sf == NULL) {
1666 pcb->sf = zalloc(iss_zone);
1667 if (pcb->sf == NULL)
1674 sf64 = (x86_sframe64_t *) pcb->sf;
1693 sfc32 = (x86_sframe_compat32_t *)pcb->sf;
1711 sf32 = (x86_sframe32_t *) pcb->sf;
1731 pcb->iss = iss;
1733 thread->machine.pcb = pcb;
1734 simple_lock_init(&pcb->lock, 0);
1737 pcb->cthread_desc = ldtp[sel_idx(USER_DS)];
1738 pcb->uldt_desc = ldtp[sel_idx(USER_DS)];
1739 pcb->uldt_selector = 0;
1741 pcb->iss_pte0 = (uint64_t)pte_kernel_rw(kvtophys((vm_offset_t)pcb->iss));
1742 pcb->arg_store_valid = 0;
1744 if (0 == (paddr = pa_to_pte(kvtophys((vm_offset_t)(pcb->iss) + PAGE_SIZE))))
1745 pcb->iss_pte1 = INTEL_PTE_INVALID;
1747 pcb->iss_pte1 = (uint64_t)pte_kernel_rw(paddr);
1759 register pcb_t pcb = thread->machine.pcb;
1761 assert(pcb);
1763 if (pcb->ifps != 0)
1764 fpu_free(pcb->ifps);
1765 if (pcb->sf != 0) {
1766 zfree(iss_zone, pcb->sf);
1767 pcb->sf = 0;
1769 if (pcb->ids) {
1770 zfree(ids_zone, pcb->ids);
1771 pcb->ids = NULL;
1773 thread->machine.pcb = (pcb_t)0;
1791 /* If we're switching ourselves, reset the pcb addresses etc. */
1922 if (thr_act->machine.pcb == NULL)
1964 printf("\tpcb=%p\n", thr_act->machine.pcb);
1984 if (thr_act->machine.pcb == NULL)
2214 if (kret == KERN_SUCCESS && thr_act->machine.pcb->ids)
2231 thread->machine.pcb->arg_store_valid = valid;
2237 return (thread->machine.pcb->arg_store_valid);