diff options
author | ian <ian@FreeBSD.org> | 2014-03-09 14:54:05 +0000 |
---|---|---|
committer | ian <ian@FreeBSD.org> | 2014-03-09 14:54:05 +0000 |
commit | 6fede8098fb65e3b717542230daef531024ed074 (patch) | |
tree | 6988dbb285f89895ad9dba5e25c6395ff1c2e5df /sys/arm | |
parent | 5b807dd0fd3fad9945eb48c0f326fba5f4d32dc6 (diff) | |
download | FreeBSD-src-6fede8098fb65e3b717542230daef531024ed074.zip FreeBSD-src-6fede8098fb65e3b717542230daef531024ed074.tar.gz |
When a thread begins life it doesn't own the VFP hardware state on any cpu.
Diffstat (limited to 'sys/arm')
-rw-r--r-- | sys/arm/arm/machdep.c | 1 | ||||
-rw-r--r-- | sys/arm/arm/vm_machdep.c | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/sys/arm/arm/machdep.c b/sys/arm/arm/machdep.c index 289f253..9fb2ffc 100644 --- a/sys/arm/arm/machdep.c +++ b/sys/arm/arm/machdep.c @@ -993,6 +993,7 @@ init_proc0(vm_offset_t kstack) thread0.td_pcb = (struct pcb *) (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; thread0.td_pcb->pcb_flags = 0; + thread0.td_pcb->pcb_vfpcpu = -1; thread0.td_frame = &proc0_tf; pcpup->pc_curpcb = thread0.td_pcb; } diff --git a/sys/arm/arm/vm_machdep.c b/sys/arm/arm/vm_machdep.c index 8e17720..1e225db 100644 --- a/sys/arm/arm/vm_machdep.c +++ b/sys/arm/arm/vm_machdep.c @@ -146,6 +146,7 @@ cpu_fork(register struct thread *td1, register struct proc *p2, bcopy(&td1->td_proc->p_md, mdp2, sizeof(*mdp2)); pcb2->un_32.pcb32_sp = td2->td_kstack + USPACE_SVC_STACK_TOP - sizeof(*pcb2); + pcb2->pcb_vfpcpu = -1; pmap_activate(td2); td2->td_frame = tf = (struct trapframe *)STACKALIGN( pcb2->un_32.pcb32_sp - sizeof(struct trapframe)); |