summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2010-06-14 20:08:26 +0000
committerjkim <jkim@FreeBSD.org>2010-06-14 20:08:26 +0000
commitf826eefbbeeeb622e6168fb311eadeb2990a0f1f (patch)
treea9e88e7be57f76871256edae8428b4898d02c720 /sys
parentddca4dfc3b2c761cdb185d343021802c29c72eec (diff)
downloadFreeBSD-src-f826eefbbeeeb622e6168fb311eadeb2990a0f1f.zip
FreeBSD-src-f826eefbbeeeb622e6168fb311eadeb2990a0f1f.tar.gz
Fix ACPI suspend/resume on amd64, which was broken since r208833.
We need actual storage for FPU state to save and restore.
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/acpica/acpi_wakeup.c2
-rw-r--r--sys/amd64/amd64/mp_machdep.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/sys/amd64/acpica/acpi_wakeup.c b/sys/amd64/acpica/acpi_wakeup.c
index 937b914..af9c2b4 100644
--- a/sys/amd64/acpica/acpi_wakeup.c
+++ b/sys/amd64/acpica/acpi_wakeup.c
@@ -245,7 +245,7 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state)
cr3 = rcr3();
load_cr3(KPML4phys);
- stopfpu = stopxpcbs[0]->xpcb_pcb.pcb_save;
+ stopfpu = &stopxpcbs[0]->xpcb_pcb.pcb_user_save;
if (acpi_savecpu(stopxpcbs[0])) {
fpugetregs(curthread, stopfpu);
diff --git a/sys/amd64/amd64/mp_machdep.c b/sys/amd64/amd64/mp_machdep.c
index 5430b03..df02255 100644
--- a/sys/amd64/amd64/mp_machdep.c
+++ b/sys/amd64/amd64/mp_machdep.c
@@ -1247,7 +1247,7 @@ cpususpend_handler(void)
rf = intr_disable();
cr3 = rcr3();
- stopfpu = stopxpcbs[cpu]->xpcb_pcb.pcb_save;
+ stopfpu = &stopxpcbs[cpu]->xpcb_pcb.pcb_user_save;
if (savectx2(stopxpcbs[cpu])) {
fpugetregs(curthread, stopfpu);
wbinvd();
OpenPOWER on IntegriCloud