aboutsummaryrefslogtreecommitdiff
path: root/hw/acpi.c
diff options
context:
space:
mode:
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-07-31 23:32:11 +0000
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-07-31 23:32:11 +0000
commit24bc1cbc7b1c774ba09b3517fba4a37293498a00 (patch)
tree27e591bcdeb5555dfe404ff1690b807fa6ffcd23 /hw/acpi.c
parent6ada7453aa628cb6ed58e1cfd3119c90382ad017 (diff)
Implement ACPI specs 3.0, 4.7.2.5, by Michael Hanselmann.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3103 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'hw/acpi.c')
-rw-r--r--hw/acpi.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/hw/acpi.c b/hw/acpi.c
index ce3f7f2df6..871a737f30 100644
--- a/hw/acpi.c
+++ b/hw/acpi.c
@@ -54,6 +54,9 @@ typedef struct PIIX4PMState {
#define SUS_EN (1 << 13)
+#define ACPI_ENABLE 0xf1
+#define ACPI_DISABLE 0xf0
+
#define SMBHSTSTS 0x00
#define SMBHSTCNT 0x02
#define SMBHSTCMD 0x03
@@ -216,6 +219,14 @@ static void pm_smi_writeb(void *opaque, uint32_t addr, uint32_t val)
#endif
if (addr == 0) {
s->apmc = val;
+
+ /* ACPI specs 3.0, 4.7.2.5 */
+ if (val == ACPI_ENABLE) {
+ s->pmcntrl |= SCI_EN;
+ } else if (val == ACPI_DISABLE) {
+ s->pmcntrl &= ~SCI_EN;
+ }
+
if (s->dev.config[0x5b] & (1 << 1)) {
cpu_interrupt(first_cpu, CPU_INTERRUPT_SMI);
}