[coreboot] r3953 - in trunk/coreboot-v2/src: arch/i386/boot arch/i386/include/arch northbridge/amd/amdk8
svn at coreboot.org
svn at coreboot.org
Tue Feb 17 22:38:52 CET 2009
Author: hailfinger
Date: 2009-02-17 22:38:51 +0100 (Tue, 17 Feb 2009)
New Revision: 3953
Modified:
trunk/coreboot-v2/src/arch/i386/boot/acpigen.c
trunk/coreboot-v2/src/arch/i386/include/arch/acpigen.h
trunk/coreboot-v2/src/northbridge/amd/amdk8/amdk8_acpi.c
Log:
Add QWord support to acpigen.
Add TOM2 to the K8 DSDT.
Thanks to Rudolf Marek for testing and fixing this patch.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
Signed-off-by: Rudolf Marek <r.marek at assembler.cz>
Acked-by: Peter Stuge <peter at stuge.se>
Modified: trunk/coreboot-v2/src/arch/i386/boot/acpigen.c
===================================================================
--- trunk/coreboot-v2/src/arch/i386/boot/acpigen.c 2009-02-17 16:23:26 UTC (rev 3952)
+++ trunk/coreboot-v2/src/arch/i386/boot/acpigen.c 2009-02-17 21:38:51 UTC (rev 3953)
@@ -97,6 +97,21 @@
return 5;
}
+int acpigen_write_qword(uint64_t data)
+{
+ /* qword op */
+ acpigen_emit_byte(0xe);
+ acpigen_emit_byte(data & 0xff);
+ acpigen_emit_byte((data >> 8) & 0xff);
+ acpigen_emit_byte((data >> 16) & 0xff);
+ acpigen_emit_byte((data >> 24) & 0xff);
+ acpigen_emit_byte((data >> 32) & 0xff);
+ acpigen_emit_byte((data >> 40) & 0xff);
+ acpigen_emit_byte((data >> 48) & 0xff);
+ acpigen_emit_byte((data >> 56) & 0xff);
+ return 9;
+}
+
int acpigen_write_name_byte(char *name, uint8_t val) {
int len;
len = acpigen_write_name(name);
@@ -111,6 +126,13 @@
return len;
}
+int acpigen_write_name_qword(char *name, uint64_t val) {
+ int len;
+ len = acpigen_write_name(name);
+ len += acpigen_write_qword(val);
+ return len;
+}
+
int acpigen_emit_stream(char *data, int size) {
int i;
for (i = 0; i < size; i++) {
Modified: trunk/coreboot-v2/src/arch/i386/include/arch/acpigen.h
===================================================================
--- trunk/coreboot-v2/src/arch/i386/include/arch/acpigen.h 2009-02-17 16:23:26 UTC (rev 3952)
+++ trunk/coreboot-v2/src/arch/i386/include/arch/acpigen.h 2009-02-17 21:38:51 UTC (rev 3953)
@@ -30,8 +30,10 @@
int acpigen_emit_byte(unsigned char data);
int acpigen_emit_stream(char *data, int size);
int acpigen_write_dword(unsigned int data);
+int acpigen_write_qword(uint64_t data);
int acpigen_write_name(char *name);
int acpigen_write_name_dword(char *name, uint32_t val);
+int acpigen_write_name_qword(char *name, uint64_t val);
int acpigen_write_name_byte(char *name, uint8_t val);
int acpigen_write_scope(char *name);
int acpigen_write_PPC(u8 nr);
Modified: trunk/coreboot-v2/src/northbridge/amd/amdk8/amdk8_acpi.c
===================================================================
--- trunk/coreboot-v2/src/northbridge/amd/amdk8/amdk8_acpi.c 2009-02-17 16:23:26 UTC (rev 3952)
+++ trunk/coreboot-v2/src/northbridge/amd/amdk8/amdk8_acpi.c 2009-02-17 21:38:51 UTC (rev 3953)
@@ -302,6 +302,8 @@
lens += acpigen_write_name_dword("SBDN", sysconf.sbdn);
msr = rdmsr(TOP_MEM);
lens += acpigen_write_name_dword("TOM1", msr.lo);
+ msr = rdmsr(TOP_MEM2);
+ lens += acpigen_write_name_qword("TOM2", (((uint64_t) msr.hi) << 32) | msr.lo);
lens += k8acpi_write_HT();
//minus opcode
More information about the coreboot
mailing list