summaryrefslogtreecommitdiffstats
path: root/sys/arm
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2014-03-09 14:54:05 +0000
committerian <ian@FreeBSD.org>2014-03-09 14:54:05 +0000
commit6fede8098fb65e3b717542230daef531024ed074 (patch)
tree6988dbb285f89895ad9dba5e25c6395ff1c2e5df /sys/arm
parent5b807dd0fd3fad9945eb48c0f326fba5f4d32dc6 (diff)
downloadFreeBSD-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.c1
-rw-r--r--sys/arm/arm/vm_machdep.c1
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));
OpenPOWER on IntegriCloud