Copy acpi blobs in two parts to make sure gcc does the right thing.
[coreboot.git] / src / mainboard / msi / ms9652_fam10 / acpi_tables.c
index a387408e1bd083014a242a4e7e5e1bd61b18fb5b..54e8be4f67a70680960420e071ebc6486222ac6f 100644 (file)
@@ -35,7 +35,7 @@
 #include <cpu/amd/amdfam10_sysconf.h>
 #include "mb_sysconf.h"
 
-extern const acpi_header_t AmlCode;
+extern const unsigned char AmlCode[];
 
 unsigned long acpi_fill_mcfg(unsigned long current)
 {
@@ -147,8 +147,9 @@ unsigned long write_acpi_tables(unsigned long start)
        acpi_create_facs(facs);
 
        dsdt = (acpi_header_t *) current;
-       current += AmlCode.length;
-       memcpy((void *) dsdt, &AmlCode, AmlCode.length);
+       memcpy(dsdt, &AmlCode, sizeof(acpi_header_t));
+       current += dsdt->length;
+       memcpy(dsdt, &AmlCode, dsdt->length);
        dsdt->checksum = 0;     /* Don't trust iasl to get this right. */
        dsdt->checksum = acpi_checksum(dsdt, dsdt->length);
        printk(BIOS_DEBUG, "ACPI:     * DSDT @ %p Length %x\n", dsdt,