Add QWord support to acpigen.
Add TOM2 to the K8 DSDT.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Compile tested only.
--- LinuxBIOSv2-asus_m2a-vm/src/northbridge/amd/amdk8/amdk8_acpi.c (Revision 3950) +++ LinuxBIOSv2-asus_m2a-vm/src/northbridge/amd/amdk8/amdk8_acpi.c (Arbeitskopie) @@ -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", (msr.hi << 32) | msr.lo);
lens += k8acpi_write_HT(); //minus opcode --- LinuxBIOSv2-asus_m2a-vm/src/arch/i386/boot/acpigen.c (Revision 3950) +++ LinuxBIOSv2-asus_m2a-vm/src/arch/i386/boot/acpigen.c (Arbeitskopie) @@ -97,6 +97,21 @@ return 5; }
+int acpigen_write_qword(uint64_t data) +{ + /* qword op */ + acpigen_emit_byte(0xc); + 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++) { --- LinuxBIOSv2-asus_m2a-vm/src/arch/i386/include/arch/acpigen.h (Revision 3950) +++ LinuxBIOSv2-asus_m2a-vm/src/arch/i386/include/arch/acpigen.h (Arbeitskopie) @@ -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);
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Carl-Daniel Hailfinger wrote:
Add QWord support to acpigen.
Add TOM2 to the K8 DSDT.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Compile tested only.
Hi, thanks for doing this. However there are two issues.
1) the opcode is 0xe and not 0xd 2) the << 32 must be cast to unit64_t first.
I'm attaching patch here. It works otherwise!
Rudolf
Rudolf Marek wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Carl-Daniel Hailfinger wrote:
Add QWord support to acpigen.
Add TOM2 to the K8 DSDT.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Compile tested only.
Hi, thanks for doing this. However there are two issues.
- the opcode is 0xe and not 0xd
- the << 32 must be cast to unit64_t first.
I'm attaching patch here. It works otherwise!
Maybe add a signed-off-by Rudolf?
Acked-by: Peter Stuge peter@stuge.se
On 17.02.2009 02:59, Peter Stuge wrote:
Rudolf Marek wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Carl-Daniel Hailfinger wrote:
Add QWord support to acpigen.
Add TOM2 to the K8 DSDT.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Compile tested only.
Hi, thanks for doing this. However there are two issues.
- the opcode is 0xe and not 0xd
- the << 32 must be cast to unit64_t first.
I'm attaching patch here. It works otherwise!
Maybe add a signed-off-by Rudolf?
Acked-by: Peter Stuge peter@stuge.se
Thanks, r3953.
Regards, Carl-Daniel