diff options
author | jkim <jkim@FreeBSD.org> | 2009-03-23 22:35:30 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2009-03-23 22:35:30 +0000 |
commit | 6869ba3c1ba37d74619482589dda4c73d6721521 (patch) | |
tree | f284ffd9edfdd71caca0193ffb187a3cc0ece60d /sys/amd64/acpica/acpi_wakeup.c | |
parent | a4268466ee69cbf0af9f9d2ee33a461b7a5944bb (diff) | |
download | FreeBSD-src-6869ba3c1ba37d74619482589dda4c73d6721521.zip FreeBSD-src-6869ba3c1ba37d74619482589dda4c73d6721521.tar.gz |
- Clean up suspend/resume code for amd64.
- Call acpi_resync_clock() to reset system time before hardclock is ready
to tick. Note we assume the current timecounter hardware and RTC are
already available for read operation.
Tested by: mav
Diffstat (limited to 'sys/amd64/acpica/acpi_wakeup.c')
-rw-r--r-- | sys/amd64/acpica/acpi_wakeup.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/sys/amd64/acpica/acpi_wakeup.c b/sys/amd64/acpica/acpi_wakeup.c index 5e3d5b1..02432f0 100644 --- a/sys/amd64/acpica/acpi_wakeup.c +++ b/sys/amd64/acpica/acpi_wakeup.c @@ -37,7 +37,6 @@ __FBSDID("$FreeBSD$"); #include <sys/malloc.h> #include <sys/memrange.h> #include <sys/smp.h> -#include <sys/sysctl.h> #include <sys/types.h> #include <vm/vm.h> @@ -67,8 +66,8 @@ CTASSERT(sizeof(wakecode) < PAGE_SIZE - 1024); #error this file needs sys/cdefs.h as a prerequisite #endif -extern uint32_t acpi_resume_beep; -extern uint32_t acpi_reset_video; +extern int acpi_resume_beep; +extern int acpi_reset_video; #ifdef SMP extern struct xpcb *stopxpcbs; @@ -280,8 +279,8 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state) } #endif - WAKECODE_FIXUP(resume_beep, uint32_t, acpi_resume_beep); - WAKECODE_FIXUP(reset_video, uint32_t, acpi_reset_video); + WAKECODE_FIXUP(resume_beep, uint8_t, (acpi_resume_beep != 0)); + WAKECODE_FIXUP(reset_video, uint8_t, (acpi_reset_video != 0)); WAKECODE_FIXUP(wakeup_xpcb, struct xpcb *, &stopxpcbs[0]); WAKECODE_FIXUP(wakeup_gdt, uint16_t, @@ -309,13 +308,11 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state) ia32_pause(); } else { fpusetregs(curthread, stopfpu); - - WAKECODE_FIXUP(resume_beep, uint32_t, 0); - WAKECODE_FIXUP(reset_video, uint32_t, 0); #ifdef SMP if (wakeup_cpus != 0) acpi_wakeup_cpus(sc, wakeup_cpus); #endif + acpi_resync_clock(sc); ret = 0; } |