Changeset View
Changeset View
Standalone View
Standalone View
arm64/arm64/vm_machdep.c
Show First 20 Lines • Show All 85 Lines • ▼ Show 20 Lines | #endif | ||||
} | } | ||||
pcb2 = (struct pcb *)(td2->td_kstack + | pcb2 = (struct pcb *)(td2->td_kstack + | ||||
td2->td_kstack_pages * PAGE_SIZE) - 1; | td2->td_kstack_pages * PAGE_SIZE) - 1; | ||||
td2->td_pcb = pcb2; | td2->td_pcb = pcb2; | ||||
bcopy(td1->td_pcb, pcb2, sizeof(*pcb2)); | bcopy(td1->td_pcb, pcb2, sizeof(*pcb2)); | ||||
td2->td_proc->p_md.md_l0addr = | td2->td_proc->p_md.md_ttbr0 = | ||||
vtophys(vmspace_pmap(td2->td_proc->p_vmspace)->pm_l0); | pmap_to_ttbr0(vmspace_pmap(td2->td_proc->p_vmspace)); | ||||
tf = (struct trapframe *)STACKALIGN((struct trapframe *)pcb2 - 1); | tf = (struct trapframe *)STACKALIGN((struct trapframe *)pcb2 - 1); | ||||
bcopy(td1->td_frame, tf, sizeof(*tf)); | bcopy(td1->td_frame, tf, sizeof(*tf)); | ||||
tf->tf_x[0] = 0; | tf->tf_x[0] = 0; | ||||
tf->tf_x[1] = 0; | tf->tf_x[1] = 0; | ||||
tf->tf_spsr = td1->td_frame->tf_spsr & PSR_M_32; | tf->tf_spsr = td1->td_frame->tf_spsr & PSR_M_32; | ||||
td2->td_frame = tf; | td2->td_frame = tf; | ||||
▲ Show 20 Lines • Show All 91 Lines • Show Last 20 Lines |