diff options
author | ths <ths@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-07-31 23:32:11 +0000 |
---|---|---|
committer | ths <ths@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-07-31 23:32:11 +0000 |
commit | 24bc1cbc7b1c774ba09b3517fba4a37293498a00 (patch) | |
tree | 27e591bcdeb5555dfe404ff1690b807fa6ffcd23 | |
parent | 6ada7453aa628cb6ed58e1cfd3119c90382ad017 (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
-rw-r--r-- | hw/acpi.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -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); } |