Patchwork remove some warnings

login
register
about
Submitter Myles Watson
Date 2010-03-24 20:50:46
Message ID <2831fecf1003241350p1027ce81vc11ccd454f9d2df9@mail.gmail.com>
Download mbox | patch
Permalink /patch/1137/
State Accepted
Headers show

Comments

Myles Watson - 2010-03-24 20:50:46
Here's an updated patch which takes care of printk_... -> printk(BIOS_...
conversions.

Signed-off-by: Myles Watson <mylesgw@gmail.com>

Thanks,
Myles
Stefan Reinauer - 2010-03-24 21:08:38
On 3/24/10 9:50 PM, Myles Watson wrote:
> Here's an updated patch which takes care of printk_... ->
> printk(BIOS_... conversions.
>
> Signed-off-by: Myles Watson <mylesgw@gmail.com <mailto:mylesgw@gmail.com>>
>
> Thanks,
> Myles

Defining AmlCode differently in different source files is a bit ugly...
My variant of creating an additional void * to do the casting is not
exactly beautiful either...

However, Acked-by: Stefan Reinauer <stepan@coresystems.de>
Myles Watson - 2010-03-24 21:17:50
> Defining AmlCode differently in different source files is a bit ugly... My
> variant of creating an additional void * to do the casting is not exactly
> beautiful either...
>
Before I commit, should we make them const too?  Maybe that would help
people not misuse them?



> However, Acked-by: Stefan Reinauer <stepan@coresystems.de><stepan@coresystems.de>
>

Thanks,
Myles
Stefan Reinauer - 2010-03-24 21:20:32
On 3/24/10 10:17 PM, Myles Watson wrote:
>
>     Defining AmlCode differently in different source files is a bit
>     ugly... My variant of creating an additional void * to do the
>     casting is not exactly beautiful either...
>
> Before I commit, should we make them const too?  Maybe that would help
> people not misuse them?

If they're not runtime patched that'd be a good idea... I think on i945
we still patch them up, so const wont work there...

Stefan
Patrick Georgi - 2010-03-24 21:22:01
Am 24.03.2010 22:20, schrieb Stefan Reinauer:
> If they're not runtime patched that'd be a good idea... I think on 
> i945 we still patch them up, so const wont work there...
We patch up the resulting (ie. copied) ACPI data, or not? So the 
original AmlCode can be const


Patrick
Myles Watson - 2010-03-24 22:03:48
On Wed, Mar 24, 2010 at 3:22 PM, Patrick Georgi <patrick@georgi-clan.de>wrote:

> Am 24.03.2010 22:20, schrieb Stefan Reinauer:
>
>  If they're not runtime patched that'd be a good idea... I think on i945 we
>> still patch them up, so const wont work there...
>>
> We patch up the resulting (ie. copied) ACPI data, or not? So the original
> AmlCode can be const
>
Yep.  Abuild tested, so I committed it.  I just had to add const to the
pointer used for copying multiple SSDTs.

Rev 5286.

Thanks,
Myles

Patch

Index: svn/src/mainboard/tyan/s2895/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/tyan/s2895/acpi_tables.c
+++ svn/src/mainboard/tyan/s2895/acpi_tables.c
@@ -20,7 +20,7 @@ 
 #include <../../../northbridge/amd/amdk8/amdk8_acpi.h>
 #include <cpu/amd/model_fxx_powernow.h>
 
-extern unsigned char AmlCode[];
+extern acpi_header_t AmlCode;
 
 unsigned long acpi_fill_mcfg(unsigned long current)
 {
@@ -164,8 +164,8 @@  unsigned long write_acpi_tables(unsigned
 	current = ALIGN(current, 16);
 	dsdt = (acpi_header_t *) current;
 	printk(BIOS_DEBUG, "ACPI:    * DSDT %p\n", dsdt);
-	current += ((acpi_header_t *) AmlCode)->length;
-	memcpy((void*) dsdt, (void*)AmlCode, ((acpi_header_t*)AmlCode)->length);
+	current += AmlCode.length;
+	memcpy((void*) dsdt, &AmlCode, AmlCode.length);
 	printk(BIOS_DEBUG, "ACPI:    * DSDT @ %p Length %x\n",dsdt,dsdt->length);
 
 	current = ALIGN(current, 16);
Index: svn/src/mainboard/amd/serengeti_cheetah/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/amd/serengeti_cheetah/acpi_tables.c
+++ svn/src/mainboard/amd/serengeti_cheetah/acpi_tables.c
@@ -38,11 +38,11 @@  static void dump_mem(unsigned start, uns
  }
 #endif
 
-extern unsigned char AmlCode[];
+extern acpi_header_t AmlCode;
 #if CONFIG_ACPI_SSDTX_NUM >= 1
-extern unsigned char AmlCode_ssdt2[];
-extern unsigned char AmlCode_ssdt3[];
-extern unsigned char AmlCode_ssdt4[];
+extern acpi_header_t AmlCode_ssdt2;
+extern acpi_header_t AmlCode_ssdt3;
+extern acpi_header_t AmlCode_ssdt4;
 #endif
 
 #define IO_APIC_ADDR	0xfec00000UL
@@ -198,7 +198,7 @@  unsigned long write_acpi_tables(unsigned
 	acpi_header_t *dsdt;
 	acpi_header_t *ssdt;
 	acpi_header_t *ssdtx;
-	unsigned char *p;
+	acpi_header_t *p;
 
 	int i;
 
@@ -279,13 +279,13 @@  unsigned long write_acpi_tables(unsigned
                 ssdtx = (acpi_header_t *)current;
                 switch(sysconf.hcid[i]) {
                 case 1: //8132
-                        p = AmlCode_ssdt2;
+                        p = &AmlCode_ssdt2;
                         break;
                 case 2: //8151
-                        p = AmlCode_ssdt3;
+                        p = &AmlCode_ssdt3;
                         break;
 		case 3: //8131
-                        p = AmlCode_ssdt4;
+                        p = &AmlCode_ssdt4;
                         break;
                 default:
                         continue;
@@ -308,9 +308,8 @@  unsigned long write_acpi_tables(unsigned
 	/* DSDT */
 	printk(BIOS_DEBUG, "ACPI:    * DSDT\n");
 	dsdt = (acpi_header_t *)current;
-	current += ((acpi_header_t *)AmlCode)->length;
-	memcpy((void *)dsdt,(void *)AmlCode, \
-			((acpi_header_t *)AmlCode)->length);
+	current += AmlCode.length;
+	memcpy((void *)dsdt, &AmlCode, AmlCode.length);
 	printk(BIOS_DEBUG, "ACPI:    * DSDT @ %p Length %x\n",dsdt,dsdt->length);
 
 	/* FDAT */
Index: svn/src/mainboard/asus/a8v-e_se/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/asus/a8v-e_se/acpi_tables.c
+++ svn/src/mainboard/asus/a8v-e_se/acpi_tables.c
@@ -31,7 +31,7 @@ 
 #include <../../../southbridge/via/vt8237r/vt8237r.h>
 #include <../../../southbridge/via/k8t890/k8t890.h>
 
-extern unsigned char AmlCode[];
+extern acpi_header_t AmlCode;
 
 unsigned long acpi_fill_mcfg(unsigned long current)
 {
@@ -118,9 +118,8 @@  unsigned long write_acpi_tables(unsigned
 	acpi_create_facs(facs);
 
 	dsdt = (acpi_header_t *) current;
-	current += ((acpi_header_t *) AmlCode)->length;
-	memcpy((void *) dsdt, (void *) AmlCode,
-	       ((acpi_header_t *) AmlCode)->length);
+	current += AmlCode.length;
+	memcpy((void *) dsdt, &AmlCode, AmlCode.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,
Index: svn/src/mainboard/asus/m2v-mx_se/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/asus/m2v-mx_se/acpi_tables.c
+++ svn/src/mainboard/asus/m2v-mx_se/acpi_tables.c
@@ -33,7 +33,7 @@ 
 #include <../../../northbridge/amd/amdk8/amdk8_acpi.h>
 #include <cpu/amd/model_fxx_powernow.h>
 
-extern unsigned char AmlCode[];
+extern acpi_header_t AmlCode;
 
 unsigned long acpi_fill_mcfg(unsigned long current)
 {
@@ -133,9 +133,8 @@  unsigned long write_acpi_tables(unsigned
 	acpi_create_facs(facs);
 
 	dsdt = (acpi_header_t *) current;
-	current += ((acpi_header_t *) AmlCode)->length;
-	memcpy((void *) dsdt, (void *) AmlCode,
-	       ((acpi_header_t *) AmlCode)->length);
+	current += AmlCode.length;
+	memcpy((void *) dsdt, &AmlCode, AmlCode.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,
Index: svn/src/mainboard/gigabyte/m57sli/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/gigabyte/m57sli/acpi_tables.c
+++ svn/src/mainboard/gigabyte/m57sli/acpi_tables.c
@@ -34,7 +34,7 @@ 
 #include <device/pci.h>
 #include <cpu/amd/amdk8_sysconf.h>
 
-extern unsigned char AmlCode[];
+extern acpi_header_t AmlCode;
 
 unsigned long acpi_fill_mcfg(unsigned long current)
 {
@@ -143,9 +143,8 @@  unsigned long write_acpi_tables(unsigned
 	acpi_create_facs(facs);
 
 	dsdt = (acpi_header_t *) current;
-	current += ((acpi_header_t *) AmlCode)->length;
-	memcpy((void *) dsdt, (void *) AmlCode,
-	       ((acpi_header_t *) AmlCode)->length);
+	current += AmlCode.length;
+	memcpy((void *) dsdt, &AmlCode, AmlCode.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,
Index: svn/src/mainboard/intel/eagleheights/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/intel/eagleheights/acpi_tables.c
+++ svn/src/mainboard/intel/eagleheights/acpi_tables.c
@@ -28,7 +28,7 @@ 
 #include <device/pci_ids.h>
 #include "ioapic.h"
 
-extern unsigned char AmlCode[];
+extern acpi_header_t AmlCode;
 
 unsigned long acpi_fill_mcfg(unsigned long current)
 {
@@ -206,10 +206,9 @@  unsigned long write_acpi_tables(unsigned
 	acpi_create_facs(facs);
 
 	dsdt = (acpi_header_t *) current;
-	current += ((acpi_header_t *) AmlCode)->length;
+	current += AmlCode.length;
 	ALIGN_CURRENT;
-	memcpy((void *) dsdt, (void *) AmlCode,
-	       ((acpi_header_t *) AmlCode)->length);
+	memcpy((void *) dsdt, &AmlCode, AmlCode.length);
 
 	printk(BIOS_DEBUG, "ACPI:     * DSDT @ %p Length %x\n", dsdt,
 		     dsdt->length);
Index: svn/src/mainboard/iwill/dk8_htx/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/iwill/dk8_htx/acpi_tables.c
+++ svn/src/mainboard/iwill/dk8_htx/acpi_tables.c
@@ -38,13 +38,13 @@  static void dump_mem(unsigned start, uns
  }
 #endif
 
-extern unsigned char AmlCode[];
+extern acpi_header_t AmlCode;
 
 #if CONFIG_ACPI_SSDTX_NUM >= 1
-extern unsigned char AmlCode_ssdt2[];
-extern unsigned char AmlCode_ssdt3[];
-extern unsigned char AmlCode_ssdt4[];
-extern unsigned char AmlCode_ssdt5[];
+extern acpi_header_t AmlCode_ssdt2;
+extern acpi_header_t AmlCode_ssdt3;
+extern acpi_header_t AmlCode_ssdt4;
+extern acpi_header_t AmlCode_ssdt5;
 #endif
 
 #define IO_APIC_ADDR	0xfec00000UL
@@ -201,7 +201,7 @@  unsigned long write_acpi_tables(unsigned
 	acpi_header_t *dsdt;
 	acpi_header_t *ssdt;
 	acpi_header_t *ssdtx;
-	unsigned char *p;
+	acpi_header_t *p;
 
 	int i;
 
@@ -282,17 +282,17 @@  unsigned long write_acpi_tables(unsigned
                 ssdtx = (acpi_header_t *)current;
                 switch(sysconf.hcid[i]) {
                 case 1: //8132
-                        p = AmlCode_ssdt2;
+                        p = &AmlCode_ssdt2;
                         break;
                 case 2: //8151
-                        p = AmlCode_ssdt3;
+                        p = &AmlCode_ssdt3;
                         break;
 		case 3: //8131
-                        p = AmlCode_ssdt4;
+                        p = &AmlCode_ssdt4;
                         break;
                 default:
 			//HTX no io apic
-                        p = AmlCode_ssdt5;
+                        p = &AmlCode_ssdt5;
 			break;
                 }
                 current += ((acpi_header_t *)p)->length;
@@ -313,9 +313,8 @@  unsigned long write_acpi_tables(unsigned
 	/* DSDT */
 	printk(BIOS_DEBUG, "ACPI:    * DSDT\n");
 	dsdt = (acpi_header_t *)current;
-	current += ((acpi_header_t *)AmlCode)->length;
-	memcpy((void *)dsdt,(void *)AmlCode, \
-			((acpi_header_t *)AmlCode)->length);
+	current += AmlCode.length;
+	memcpy((void *)dsdt, &AmlCode,  AmlCode.length);
 	printk(BIOS_DEBUG, "ACPI:    * DSDT @ %p Length %x\n",dsdt,dsdt->length);
 
 	/* FDAT */
Index: svn/src/mainboard/msi/ms9652_fam10/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/msi/ms9652_fam10/acpi_tables.c
+++ svn/src/mainboard/msi/ms9652_fam10/acpi_tables.c
@@ -35,7 +35,7 @@ 
 #include <cpu/amd/amdfam10_sysconf.h>
 #include "mb_sysconf.h"
 
-extern unsigned char AmlCode[];
+extern acpi_header_t AmlCode;
 
 unsigned long acpi_fill_mcfg(unsigned long current)
 {
@@ -147,9 +147,8 @@  unsigned long write_acpi_tables(unsigned
 	acpi_create_facs(facs);
 
 	dsdt = (acpi_header_t *) current;
-	current += ((acpi_header_t *) AmlCode)->length;
-	memcpy((void *) dsdt, (void *) AmlCode,
-	       ((acpi_header_t *) AmlCode)->length);
+	current += AmlCode.length;
+	memcpy((void *) dsdt, &AmlCode, AmlCode.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,
Index: svn/src/mainboard/tyan/s2891/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/tyan/s2891/acpi_tables.c
+++ svn/src/mainboard/tyan/s2891/acpi_tables.c
@@ -20,7 +20,7 @@ 
 #include <../../../northbridge/amd/amdk8/amdk8_acpi.h>
 #include <cpu/amd/model_fxx_powernow.h>
 
-extern unsigned char AmlCode[];
+extern acpi_header_t AmlCode;
 
 unsigned long acpi_fill_mcfg(unsigned long current)
 {
@@ -139,8 +139,8 @@  unsigned long write_acpi_tables(unsigned
 	current = ALIGN(current, 16);
 	dsdt = (acpi_header_t *) current;
 	printk(BIOS_DEBUG, "ACPI:    * DSDT %p\n", dsdt);
-	current += ((acpi_header_t *) AmlCode)->length;
-	memcpy((void*) dsdt, (void*)AmlCode, ((acpi_header_t*)AmlCode)->length);
+	current += AmlCode.length;
+	memcpy((void*) dsdt, &AmlCode, AmlCode.length);
 	printk(BIOS_DEBUG, "ACPI:    * DSDT @ %p Length %x\n",dsdt,dsdt->length);
 
 	current = ALIGN(current, 16);
Index: svn/src/mainboard/tyan/s2892/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/tyan/s2892/acpi_tables.c
+++ svn/src/mainboard/tyan/s2892/acpi_tables.c
@@ -20,7 +20,7 @@ 
 #include <../../../northbridge/amd/amdk8/amdk8_acpi.h>
 #include <cpu/amd/model_fxx_powernow.h>
 
-extern unsigned char AmlCode[];
+extern acpi_header_t AmlCode;
 
 unsigned long acpi_fill_mcfg(unsigned long current)
 {
@@ -139,8 +139,8 @@  unsigned long write_acpi_tables(unsigned
 	current = ALIGN(current, 16);
 	dsdt = (acpi_header_t *) current;
 	printk(BIOS_DEBUG, "ACPI:    * DSDT %p\n", dsdt);
-	current += ((acpi_header_t *) AmlCode)->length;
-	memcpy((void*) dsdt, (void*)AmlCode, ((acpi_header_t*)AmlCode)->length);
+	current += AmlCode.length;
+	memcpy((void*) dsdt, &AmlCode, AmlCode.length);
 	printk(BIOS_DEBUG, "ACPI:    * DSDT @ %p Length %x\n",dsdt,dsdt->length);
 
 	current = ALIGN(current, 16);
Index: svn/src/mainboard/via/epia-m/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/via/epia-m/acpi_tables.c
+++ svn/src/mainboard/via/epia-m/acpi_tables.c
@@ -11,7 +11,7 @@ 
 #include <string.h>
 #include <arch/acpi.h>
 
-extern unsigned char AmlCode[];
+extern acpi_header_t AmlCode;
 
 unsigned long acpi_fill_mcfg(unsigned long current)
 {
@@ -75,8 +75,8 @@  unsigned long write_acpi_tables(unsigned
 	acpi_create_facs(facs);
 
 	dsdt = (acpi_header_t *)current;
-	current += ((acpi_header_t *)AmlCode)->length;
-	memcpy((void *)dsdt,(void *)AmlCode, ((acpi_header_t *)AmlCode)->length);
+	current += AmlCode.length;
+	memcpy((void *)dsdt, &AmlCode, AmlCode.length);
 	dsdt->checksum = 0; // don't trust intel iasl compiler to get this right
 	dsdt->checksum = acpi_checksum(dsdt,dsdt->length);
 	printk(BIOS_DEBUG, "ACPI:     * DSDT @ %p Length %x\n",dsdt,dsdt->length);
Index: svn/src/mainboard/via/epia-m700/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/via/epia-m700/acpi_tables.c
+++ svn/src/mainboard/via/epia-m700/acpi_tables.c
@@ -35,8 +35,8 @@ 
 #include <device/pci_ids.h>
 #include <../../../northbridge/via/vx800/vx800.h>
 
-extern unsigned char AmlCode_dsdt[];
-extern unsigned char AmlCode_ssdt[];
+extern acpi_header_t AmlCode_dsdt;
+extern acpi_header_t AmlCode_ssdt;
 
 extern u32 wake_vec;
 
@@ -158,9 +158,8 @@  unsigned long write_acpi_tables(unsigned
 
 	printk(BIOS_DEBUG, "ACPI:     * DSDT\n");
 	dsdt = (acpi_header_t *) current;
-	current += ((acpi_header_t *) AmlCode_dsdt)->length;
-	memcpy((void *)dsdt, (void *)AmlCode_dsdt,
-	       ((acpi_header_t *) AmlCode_dsdt)->length);
+	current += AmlCode_dsdt.length;
+	memcpy((void *)dsdt, &AmlCode_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, dsdt->length);
@@ -190,8 +189,8 @@  unsigned long write_acpi_tables(unsigned
 #if 0
 	printk(BIOS_DEBUG, "ACPI:     * SSDT\n");
 	ssdt = (acpi_header_t *) current;
-	current += ((acpi_header_t *)AmlCode_ssdt)->length;
-	memcpy((void *)ssdt,(void *)AmlCode_ssdt, ((acpi_header_t *)AmlCode_ssdt)->length);
+	current += AmlCode_ssdt.length;
+	memcpy((void *)ssdt, &AmlCode_ssdt, AmlCode_ssdt.length);
 	ssdt->checksum = 0; /* Don't trust iasl to get this right. */
 	ssdt->checksum = acpi_checksum(ssdt, ssdt->length);
 	acpi_add_table(rsdp, ssdt);
Index: svn/src/mainboard/via/epia-n/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/via/epia-n/acpi_tables.c
+++ svn/src/mainboard/via/epia-n/acpi_tables.c
@@ -35,7 +35,7 @@ 
 #include <device/pci_ids.h>
 #include "../../../southbridge/via/vt8237r/vt8237r.h"
 
-extern unsigned char AmlCode[];
+extern acpi_header_t AmlCode;
 
 /*
  * These four macros are copied from <arch/smp/mpspec.h>, I have to do this
@@ -161,8 +161,8 @@  unsigned long write_acpi_tables(unsigned
 
 	printk(BIOS_DEBUG, "ACPI:     * DSDT\n");
 	dsdt = (acpi_header_t *)current;
-	current += ((acpi_header_t *)AmlCode)->length;
-	memcpy((void *)dsdt,(void *)AmlCode, ((acpi_header_t *)AmlCode)->length);
+	current += AmlCode.length;
+	memcpy((void *)dsdt, &AmlCode, AmlCode.length);
 	dsdt->checksum = 0; // don't trust intel iasl compiler to get this right
 	dsdt->checksum = acpi_checksum(dsdt,dsdt->length);
 	printk(BIOS_DEBUG, "ACPI:     * DSDT @ %p Length %x\n",dsdt,dsdt->length);
Index: svn/src/mainboard/via/vt8454c/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/via/vt8454c/acpi_tables.c
+++ svn/src/mainboard/via/vt8454c/acpi_tables.c
@@ -27,7 +27,7 @@ 
 #include <device/pci_ids.h>
 #include "dmi.h"
 
-extern unsigned char AmlCode[];
+extern acpi_header_t AmlCode;
 
 unsigned long acpi_fill_mcfg(unsigned long current)
 {
@@ -180,9 +180,8 @@  unsigned long write_acpi_tables(unsigned
 	acpi_create_facs(facs);
 
 	dsdt = (acpi_header_t *) current;
-	current += ((acpi_header_t *) AmlCode)->length;
-	memcpy((void *) dsdt, (void *) AmlCode,
-	       ((acpi_header_t *) AmlCode)->length);
+	current += AmlCode.length;
+	memcpy((void *) dsdt, &AmlCode,AmlCode.length);
 #if DONT_TRUST_IASL
 	dsdt->checksum = 0;	// don't trust intel iasl compiler to get this right
 	dsdt->checksum = acpi_checksum(dsdt, dsdt->length);
Index: svn/src/northbridge/amd/amdfam10/amdfam10_acpi.c
===================================================================
--- svn.orig/src/northbridge/amd/amdfam10/amdfam10_acpi.c
+++ svn/src/northbridge/amd/amdfam10/amdfam10_acpi.c
@@ -305,11 +305,11 @@  void update_sspr(void *sspr, u32 nodeid,
 	}
 }
 
-extern unsigned char AmlCode_sspr5[];
-extern unsigned char AmlCode_sspr4[];
-extern unsigned char AmlCode_sspr3[];
-extern unsigned char AmlCode_sspr2[];
-extern unsigned char AmlCode_sspr1[];
+extern acpi_header_t AmlCode_sspr5;
+extern acpi_header_t AmlCode_sspr4;
+extern acpi_header_t AmlCode_sspr3;
+extern acpi_header_t AmlCode_sspr2;
+extern acpi_header_t AmlCode_sspr1;
 
 /* fixme: find one good way for different p_state_num */
 unsigned long acpi_add_ssdt_pstates(acpi_rsdp_t *rsdp, unsigned long current)
@@ -321,13 +321,13 @@  unsigned long acpi_add_ssdt_pstates(acpi
 
 	if(!sysconf.p_state_num) return current;
 
-	u8 *AmlCode_sspr;
+	acpi_header_t *AmlCode_sspr;
 	switch(sysconf.p_state_num) {
-		case 1: AmlCode_sspr = AmlCode_sspr1; break;
-		case 2: AmlCode_sspr = AmlCode_sspr2; break;
-		case 3: AmlCode_sspr = AmlCode_sspr3; break;
-		case 4: AmlCode_sspr = AmlCode_sspr4; break;
-		default: AmlCode_sspr = AmlCode_sspr5; break;
+		case 1: AmlCode_sspr = &AmlCode_sspr1; break;
+		case 2: AmlCode_sspr = &AmlCode_sspr2; break;
+		case 3: AmlCode_sspr = &AmlCode_sspr3; break;
+		case 4: AmlCode_sspr = &AmlCode_sspr4; break;
+		default: AmlCode_sspr = &AmlCode_sspr5; break;
 	}
 
 	for(cpu = all_devices; cpu; cpu = cpu->next) {
@@ -342,8 +342,8 @@  unsigned long acpi_add_ssdt_pstates(acpi
 
 		current	  = ( current + 0x0f) & -0x10;
 		ssdt = (acpi_header_t *)current;
-		current += ((acpi_header_t *)AmlCode_sspr)->length;
-		memcpy((void *)ssdt, (void *)AmlCode_sspr, ((acpi_header_t *)AmlCode_sspr)->length);
+		current += AmlCode_sspr->length;
+		memcpy((void *)ssdt, AmlCode_sspr, AmlCode_sspr->length);
 		update_sspr((void*)ssdt,cpu->path.apic.node_id, cpu_index);
 		/* recalculate checksum */
 		ssdt->checksum = 0;
Index: svn/src/mainboard/amd/serengeti_cheetah_fam10/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/amd/serengeti_cheetah_fam10/acpi_tables.c
+++ svn/src/mainboard/amd/serengeti_cheetah_fam10/acpi_tables.c
@@ -46,14 +46,14 @@  static void dump_mem(u32 start, u32 end)
 }
 #endif
 
-extern u8 AmlCode[];
-extern u8 AmlCode_ssdt[];
+extern acpi_header_t AmlCode;
+extern acpi_header_t AmlCode_ssdt;
 
 #if CONFIG_ACPI_SSDTX_NUM >= 1
-extern u8 AmlCode_ssdt2[];
-extern u8 AmlCode_ssdt3[];
-extern u8 AmlCode_ssdt4[];
-extern u8 AmlCode_ssdt5[];
+extern acpi_header_t AmlCode_ssdt2;
+extern acpi_header_t AmlCode_ssdt3;
+extern acpi_header_t AmlCode_ssdt4;
+extern acpi_header_t AmlCode_ssdt5;
 #endif
 
 #define IO_APIC_ADDR	0xfec00000UL
@@ -202,7 +202,7 @@  unsigned long write_acpi_tables(unsigned
 	acpi_header_t *dsdt;
 	acpi_header_t *ssdt;
 	acpi_header_t *ssdtx;
-	u8 *p;
+	acpi_header_t *p;
 
 	int i;
 
@@ -264,8 +264,8 @@  unsigned long write_acpi_tables(unsigned
 	current	  = ( current + 0x0f) & -0x10;
 	printk(BIOS_DEBUG, "ACPI:    * SSDT at %lx\n", current);
 	ssdt = (acpi_header_t *)current;
-	current += ((acpi_header_t *)AmlCode_ssdt)->length;
-	memcpy((void *)ssdt, (void *)AmlCode_ssdt, ((acpi_header_t *)AmlCode_ssdt)->length);
+	current += AmlCode_ssdt.length;
+	memcpy((void *)ssdt, &AmlCode_ssdt, AmlCode_ssdt.length);
 	//Here you need to set value in pci1234, sblk and sbdn in get_bus_conf.c
 	update_ssdt((void*)ssdt);
 	/* recalculate checksum */
@@ -295,24 +295,24 @@  unsigned long write_acpi_tables(unsigned
 		ssdtx = (acpi_header_t *)current;
 		switch(sysconf.hcid[i]) {
 		case 1:
-			p = AmlCode_ssdt2;
+			p = &AmlCode_ssdt2;
 			break;
 		case 2:
-			p = AmlCode_ssdt3;
+			p = &AmlCode_ssdt3;
 			break;
 		case 3: //8131
-			 p = AmlCode_ssdt4;
-			 break;
-		 default:
+			p = &AmlCode_ssdt4;
+			break;
+		default:
 			//HTX no io apic
-			 p = AmlCode_ssdt5;
+			p = &AmlCode_ssdt5;
 		}
-		current += ((acpi_header_t *)p)->length;
-		memcpy((void *)ssdtx, (void *)p, ((acpi_header_t *)p)->length);
+		current += p->length;
+		memcpy((void *)ssdtx, p, p->length);
 		update_ssdtx((void *)ssdtx, i);
 		ssdtx->checksum = 0;
-		ssdtx->checksum = acpi_checksum((unsigned char *)ssdtx,ssdtx->length);
-		acpi_add_table(rsdp,ssdtx);
+		ssdtx->checksum = acpi_checksum((u8 *)ssdtx, ssdtx->length);
+		acpi_add_table(rsdp, ssdtx);
 	}
 #endif
 
@@ -320,10 +320,9 @@  unsigned long write_acpi_tables(unsigned
 	current	  = ( current + 0x07) & -0x08;
 	printk(BIOS_DEBUG, "ACPI:    * DSDT at %lx\n", current);
 	dsdt = (acpi_header_t *)current; // it will used by fadt
-	current += ((acpi_header_t *)AmlCode)->length;
-	memcpy((void *)dsdt,(void *)AmlCode, \
-			((acpi_header_t *)AmlCode)->length);
-	printk(BIOS_DEBUG, "ACPI:    * DSDT @ %p Length %x\n",dsdt,dsdt->length);
+	current += AmlCode.length;
+	memcpy((void *)dsdt, &AmlCode, AmlCode.length);
+	printk(BIOS_DEBUG, "ACPI:    * DSDT @ %p Length %x\n", dsdt, dsdt->length);
 
 	/* FACS */ // it needs 64 bit alignment
 	current	  = ( current + 0x07) & -0x08;
Index: svn/src/mainboard/amd/dbm690t/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/amd/dbm690t/acpi_tables.c
+++ svn/src/mainboard/amd/dbm690t/acpi_tables.c
@@ -57,13 +57,13 @@  static void dump_mem(u32 start, u32 end)
 }
 #endif
 
-extern u8 AmlCode[];
+extern acpi_header_t AmlCode;
 
 #if CONFIG_ACPI_SSDTX_NUM >= 1
-extern u8 AmlCode_ssdt2[];
-extern u8 AmlCode_ssdt3[];
-extern u8 AmlCode_ssdt4[];
-extern u8 AmlCode_ssdt5[];
+extern acpi_header_t AmlCode_ssdt2;
+extern acpi_header_t AmlCode_ssdt3;
+extern acpi_header_t AmlCode_ssdt4;
+extern acpi_header_t AmlCode_ssdt5;
 #endif
 
 #define IO_APIC_ADDR	0xfec00000UL
@@ -219,25 +219,24 @@  unsigned long write_acpi_tables(unsigned
 		ssdtx = (acpi_header_t *) current;
 		switch (sysconf.hcid[i]) {
 		case 1:	/* 8132 */
-			p = AmlCode_ssdt2;
+			p = &AmlCode_ssdt2;
 			break;
 		case 2:	/* 8151 */
-			p = AmlCode_ssdt3;
+			p = &AmlCode_ssdt3;
 			break;
 		case 3:	/* 8131 */
-			p = AmlCode_ssdt4;
+			p = &AmlCode_ssdt4;
 			break;
 		default:
 			/* HTX no io apic */
-			p = AmlCode_ssdt5;
+			p = &AmlCode_ssdt5;
 			break;
 		}
-		current += ((acpi_header_t *) p)->length;
-		memcpy((void *)ssdtx, (void *)p, ((acpi_header_t *) p)->length);
+		current += p->length;
+		memcpy((void *)ssdtx, p, p->length);
 		update_ssdtx((void *)ssdtx, i);
 		ssdtx->checksum = 0;
-		ssdtx->checksum =
-		    acpi_checksum((u8 *)ssdtx, ssdtx->length);
+		ssdtx->checksum = acpi_checksum((u8 *)ssdtx, ssdtx->length);
 		acpi_add_table(rsdp, ssdtx);
 	}
 #endif
@@ -250,10 +249,9 @@  unsigned long write_acpi_tables(unsigned
 
 	/* DSDT */
 	printk(BIOS_DEBUG, "ACPI:    * DSDT\n");
-	dsdt = (acpi_header_t *) current;
-	memcpy((void *)dsdt, (void *)AmlCode,
-	       ((acpi_header_t *) AmlCode)->length);
-	current += dsdt->length;
+	dsdt = (acpi_header_t *)current;
+	current += AmlCode.length;
+	memcpy((void *)dsdt, &AmlCode, AmlCode.length);
 	printk(BIOS_DEBUG, "ACPI:    * DSDT @ %p Length %x\n", dsdt, dsdt->length);
 	/* FADT */
 	printk(BIOS_DEBUG, "ACPI:    * FADT\n");
Index: svn/src/mainboard/amd/mahogany/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/amd/mahogany/acpi_tables.c
+++ svn/src/mainboard/amd/mahogany/acpi_tables.c
@@ -57,13 +57,13 @@  static void dump_mem(u32 start, u32 end)
 }
 #endif
 
-extern u8 AmlCode[];
+extern acpi_header_t AmlCode;
 
 #if CONFIG_ACPI_SSDTX_NUM >= 1
-extern u8 AmlCode_ssdt2[];
-extern u8 AmlCode_ssdt3[];
-extern u8 AmlCode_ssdt4[];
-extern u8 AmlCode_ssdt5[];
+extern acpi_header_t AmlCode_ssdt2;
+extern acpi_header_t AmlCode_ssdt3;
+extern acpi_header_t AmlCode_ssdt4;
+extern acpi_header_t AmlCode_ssdt5;
 #endif
 
 #define IO_APIC_ADDR	0xfec00000UL
@@ -219,25 +219,24 @@  unsigned long write_acpi_tables(unsigned
 		ssdtx = (acpi_header_t *) current;
 		switch (sysconf.hcid[i]) {
 		case 1:	/* 8132 */
-			p = AmlCode_ssdt2;
+			p = &AmlCode_ssdt2;
 			break;
 		case 2:	/* 8151 */
-			p = AmlCode_ssdt3;
+			p = &AmlCode_ssdt3;
 			break;
 		case 3:	/* 8131 */
-			p = AmlCode_ssdt4;
+			p = &AmlCode_ssdt4;
 			break;
 		default:
 			/* HTX no io apic */
-			p = AmlCode_ssdt5;
+			p = &AmlCode_ssdt5;
 			break;
 		}
-		current += ((acpi_header_t *) p)->length;
-		memcpy((void *)ssdtx, (void *)p, ((acpi_header_t *) p)->length);
+		current += p->length;
+		memcpy((void *)ssdtx, p, p->length);
 		update_ssdtx((void *)ssdtx, i);
 		ssdtx->checksum = 0;
-		ssdtx->checksum =
-		    acpi_checksum((u8 *)ssdtx, ssdtx->length);
+		ssdtx->checksum = acpi_checksum((u8 *)ssdtx, ssdtx->length);
 		acpi_add_table(rsdp, ssdtx);
 	}
 #endif
@@ -251,8 +250,7 @@  unsigned long write_acpi_tables(unsigned
 	/* DSDT */
 	printk(BIOS_DEBUG, "ACPI:    * DSDT\n");
 	dsdt = (acpi_header_t *) current;
-	memcpy((void *)dsdt, (void *)AmlCode,
-	       ((acpi_header_t *) AmlCode)->length);
+	memcpy((void *)dsdt, &AmlCode, AmlCode.length);
 	current += dsdt->length;
 	printk(BIOS_DEBUG, "ACPI:    * DSDT @ %p Length %x\n", dsdt, dsdt->length);
 	/* FADT */
Index: svn/src/mainboard/amd/mahogany_fam10/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/amd/mahogany_fam10/acpi_tables.c
+++ svn/src/mainboard/amd/mahogany_fam10/acpi_tables.c
@@ -46,14 +46,14 @@  static void dump_mem(u32 start, u32 end)
 }
 #endif
 
-extern u8 AmlCode[];
-extern u8 AmlCode_ssdt[];
+extern acpi_header_t AmlCode;
+extern acpi_header_t AmlCode_ssdt;
 
 #if CONFIG_ACPI_SSDTX_NUM >= 1
-extern u8 AmlCode_ssdt2[];
-extern u8 AmlCode_ssdt3[];
-extern u8 AmlCode_ssdt4[];
-extern u8 AmlCode_ssdt5[];
+extern acpi_header_t AmlCode_ssdt2;
+extern acpi_header_t AmlCode_ssdt3;
+extern acpi_header_t AmlCode_ssdt4;
+extern acpi_header_t AmlCode_ssdt5;
 #endif
 
 #define IO_APIC_ADDR	0xfec00000UL
@@ -192,8 +192,8 @@  unsigned long write_acpi_tables(unsigned
 	current	  = ( current + 0x0f) & -0x10;
 	printk(BIOS_DEBUG, "ACPI:    * SSDT at %lx\n", current);
 	ssdt = (acpi_header_t *)current;
-	current += ((acpi_header_t *)AmlCode_ssdt)->length;
-	memcpy((void *)ssdt, (void *)AmlCode_ssdt, ((acpi_header_t *)AmlCode_ssdt)->length);
+	current += AmlCode_ssdt.length;
+	memcpy((void *)ssdt, &AmlCode_ssdt, AmlCode_ssdt.length);
 	//Here you need to set value in pci1234, sblk and sbdn in get_bus_conf.c
 	update_ssdt((void*)ssdt);
 	/* recalculate checksum */
@@ -223,20 +223,20 @@  unsigned long write_acpi_tables(unsigned
 		ssdtx = (acpi_header_t *)current;
 		switch(sysconf.hcid[i]) {
 		case 1:
-			p = AmlCode_ssdt2;
+			p = &AmlCode_ssdt2;
 			break;
 		case 2:
-			p = AmlCode_ssdt3;
+			p = &AmlCode_ssdt3;
 			break;
 		case 3: //8131
-			 p = AmlCode_ssdt4;
+			p = &AmlCode_ssdt4;
 			 break;
 		 default:
 			//HTX no io apic
-			 p = AmlCode_ssdt5;
+			p = &AmlCode_ssdt5;
 		}
 		current += ((acpi_header_t *)p)->length;
-		memcpy((void *)ssdtx, (void *)p, ((acpi_header_t *)p)->length);
+		memcpy((void *)ssdtx, p, p->length);
 		update_ssdtx((void *)ssdtx, i);
 		ssdtx->checksum = 0;
 		ssdtx->checksum = acpi_checksum((unsigned char *)ssdtx,ssdtx->length);
@@ -248,9 +248,8 @@  unsigned long write_acpi_tables(unsigned
 	current	  = ( current + 0x07) & -0x08;
 	printk(BIOS_DEBUG, "ACPI:    * DSDT at %lx\n", current);
 	dsdt = (acpi_header_t *)current; // it will used by fadt
-	current += ((acpi_header_t *)AmlCode)->length;
-	memcpy((void *)dsdt,(void *)AmlCode, \
-			((acpi_header_t *)AmlCode)->length);
+	current += AmlCode.length;
+	memcpy((void *)dsdt, &AmlCode, AmlCode.length);
 	printk(BIOS_DEBUG, "ACPI:    * DSDT @ %p Length %x\n",dsdt,dsdt->length);
 
 	/* FACS */ // it needs 64 bit alignment
Index: svn/src/mainboard/amd/pistachio/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/amd/pistachio/acpi_tables.c
+++ svn/src/mainboard/amd/pistachio/acpi_tables.c
@@ -57,13 +57,13 @@  static void dump_mem(u32 start, u32 end)
 }
 #endif
 
-extern u8 AmlCode[];
+extern acpi_header_t AmlCode;
 
 #if CONFIG_ACPI_SSDTX_NUM >= 1
-extern u8 AmlCode_ssdt2[];
-extern u8 AmlCode_ssdt3[];
-extern u8 AmlCode_ssdt4[];
-extern u8 AmlCode_ssdt5[];
+extern acpi_header_t AmlCode_ssdt2;
+extern acpi_header_t AmlCode_ssdt3;
+extern acpi_header_t AmlCode_ssdt4;
+extern acpi_header_t AmlCode_ssdt5;
 #endif
 
 #define IO_APIC_ADDR	0xfec00000UL
@@ -219,17 +219,17 @@  unsigned long write_acpi_tables(unsigned
 		ssdtx = (acpi_header_t *) current;
 		switch (sysconf.hcid[i]) {
 		case 1:	/* 8132 */
-			p = AmlCode_ssdt2;
+			p = &AmlCode_ssdt2;
 			break;
 		case 2:	/* 8151 */
-			p = AmlCode_ssdt3;
+			p = &AmlCode_ssdt3;
 			break;
 		case 3:	/* 8131 */
-			p = AmlCode_ssdt4;
+			p = &AmlCode_ssdt4;
 			break;
 		default:
 			/* HTX no io apic */
-			p = AmlCode_ssdt5;
+			p = &AmlCode_ssdt5;
 			break;
 		}
 		current += ((acpi_header_t *) p)->length;
@@ -251,8 +251,7 @@  unsigned long write_acpi_tables(unsigned
 	/* DSDT */
 	printk(BIOS_DEBUG, "ACPI:    * DSDT\n");
 	dsdt = (acpi_header_t *) current;
-	memcpy((void *)dsdt, (void *)AmlCode,
-	       ((acpi_header_t *) AmlCode)->length);
+	memcpy((void *)dsdt, &AmlCode, AmlCode.length);
 
 	current += dsdt->length;
 	printk(BIOS_DEBUG, "ACPI:    * DSDT @ %p Length %x\n", dsdt, dsdt->length);
Index: svn/src/mainboard/kontron/kt690/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/kontron/kt690/acpi_tables.c
+++ svn/src/mainboard/kontron/kt690/acpi_tables.c
@@ -57,13 +57,13 @@  static void dump_mem(u32 start, u32 end)
 }
 #endif
 
-extern u8 AmlCode[];
+extern acpi_header_t AmlCode;
 
 #if CONFIG_ACPI_SSDTX_NUM >= 1
-extern u8 AmlCode_ssdt2[];
-extern u8 AmlCode_ssdt3[];
-extern u8 AmlCode_ssdt4[];
-extern u8 AmlCode_ssdt5[];
+extern acpi_header_t AmlCode_ssdt2;
+extern acpi_header_t AmlCode_ssdt3;
+extern acpi_header_t AmlCode_ssdt4;
+extern acpi_header_t AmlCode_ssdt5;
 #endif
 
 #define IO_APIC_ADDR	0xfec00000UL
@@ -219,17 +219,17 @@  unsigned long write_acpi_tables(unsigned
 		ssdtx = (acpi_header_t *) current;
 		switch (sysconf.hcid[i]) {
 		case 1:	/* 8132 */
-			p = AmlCode_ssdt2;
+			p = &AmlCode_ssdt2;
 			break;
 		case 2:	/* 8151 */
-			p = AmlCode_ssdt3;
+			p = &AmlCode_ssdt3;
 			break;
 		case 3:	/* 8131 */
-			p = AmlCode_ssdt4;
+			p = &AmlCode_ssdt4;
 			break;
 		default:
 			/* HTX no io apic */
-			p = AmlCode_ssdt5;
+			p = &AmlCode_ssdt5;
 			break;
 		}
 		current += ((acpi_header_t *) p)->length;
@@ -251,8 +251,7 @@  unsigned long write_acpi_tables(unsigned
 	/* DSDT */
 	printk(BIOS_DEBUG, "ACPI:    * DSDT\n");
 	dsdt = (acpi_header_t *) current;
-	memcpy((void *)dsdt, (void *)AmlCode,
-	       ((acpi_header_t *) AmlCode)->length);
+	memcpy((void *)dsdt, &AmlCode, AmlCode.length);
 	current += dsdt->length;
 	printk(BIOS_DEBUG, "ACPI:    * DSDT @ %p Length %x\n", dsdt, dsdt->length);
 	/* FADT */
Index: svn/src/mainboard/technexion/tim5690/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/technexion/tim5690/acpi_tables.c
+++ svn/src/mainboard/technexion/tim5690/acpi_tables.c
@@ -57,13 +57,13 @@  static void dump_mem(u32 start, u32 end)
 }
 #endif
 
-extern u8 AmlCode[];
+extern acpi_header_t AmlCode;
 
 #if CONFIG_ACPI_SSDTX_NUM >= 1
-extern u8 AmlCode_ssdt2[];
-extern u8 AmlCode_ssdt3[];
-extern u8 AmlCode_ssdt4[];
-extern u8 AmlCode_ssdt5[];
+extern acpi_header_t AmlCode_ssdt2;
+extern acpi_header_t AmlCode_ssdt3;
+extern acpi_header_t AmlCode_ssdt4;
+extern acpi_header_t AmlCode_ssdt5;
 #endif
 
 #define IO_APIC_ADDR	0xfec00000UL
@@ -219,17 +219,17 @@  unsigned long write_acpi_tables(unsigned
 		ssdtx = (acpi_header_t *) current;
 		switch (sysconf.hcid[i]) {
 		case 1:	/* 8132 */
-			p = AmlCode_ssdt2;
+			p = &AmlCode_ssdt2;
 			break;
 		case 2:	/* 8151 */
-			p = AmlCode_ssdt3;
+			p = &AmlCode_ssdt3;
 			break;
 		case 3:	/* 8131 */
-			p = AmlCode_ssdt4;
+			p = &AmlCode_ssdt4;
 			break;
 		default:
 			/* HTX no io apic */
-			p = AmlCode_ssdt5;
+			p = &AmlCode_ssdt5;
 			break;
 		}
 		current += ((acpi_header_t *) p)->length;
@@ -251,8 +251,7 @@  unsigned long write_acpi_tables(unsigned
 	/* DSDT */
 	printk(BIOS_DEBUG, "ACPI:    * DSDT\n");
 	dsdt = (acpi_header_t *) current;
-	memcpy((void *)dsdt, (void *)AmlCode,
-	       ((acpi_header_t *) AmlCode)->length);
+	memcpy((void *)dsdt, &AmlCode, AmlCode.length);
 	current += dsdt->length;
 	printk(BIOS_DEBUG, "ACPI:    * DSDT @ %p Length %x\n", dsdt, dsdt->length);
 	/* FADT */
Index: svn/src/mainboard/technexion/tim8690/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/technexion/tim8690/acpi_tables.c
+++ svn/src/mainboard/technexion/tim8690/acpi_tables.c
@@ -57,13 +57,13 @@  static void dump_mem(u32 start, u32 end)
 }
 #endif
 
-extern u8 AmlCode[];
+extern acpi_header_t AmlCode;
 
 #if CONFIG_ACPI_SSDTX_NUM >= 1
-extern u8 AmlCode_ssdt2[];
-extern u8 AmlCode_ssdt3[];
-extern u8 AmlCode_ssdt4[];
-extern u8 AmlCode_ssdt5[];
+extern acpi_header_t AmlCode_ssdt2;
+extern acpi_header_t AmlCode_ssdt3;
+extern acpi_header_t AmlCode_ssdt4;
+extern acpi_header_t AmlCode_ssdt5;
 #endif
 
 #define IO_APIC_ADDR	0xfec00000UL
@@ -219,17 +219,17 @@  unsigned long write_acpi_tables(unsigned
 		ssdtx = (acpi_header_t *) current;
 		switch (sysconf.hcid[i]) {
 		case 1:	/* 8132 */
-			p = AmlCode_ssdt2;
+			p = &AmlCode_ssdt2;
 			break;
 		case 2:	/* 8151 */
-			p = AmlCode_ssdt3;
+			p = &AmlCode_ssdt3;
 			break;
 		case 3:	/* 8131 */
-			p = AmlCode_ssdt4;
+			p = &AmlCode_ssdt4;
 			break;
 		default:
 			/* HTX no io apic */
-			p = AmlCode_ssdt5;
+			p = &AmlCode_ssdt5;
 			break;
 		}
 		current += ((acpi_header_t *) p)->length;
@@ -251,8 +251,7 @@  unsigned long write_acpi_tables(unsigned
 	/* DSDT */
 	printk(BIOS_DEBUG, "ACPI:    * DSDT\n");
 	dsdt = (acpi_header_t *) current;
-	memcpy((void *)dsdt, (void *)AmlCode,
-	       ((acpi_header_t *) AmlCode)->length);
+	memcpy((void *)dsdt, &AmlCode, AmlCode.length);
 	current += dsdt->length;
 	printk(BIOS_DEBUG, "ACPI:    * DSDT @ %p Length %x\n", dsdt, dsdt->length);
 	/* FADT */
Index: svn/src/mainboard/intel/d945gclf/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/intel/d945gclf/acpi_tables.c
+++ svn/src/mainboard/intel/d945gclf/acpi_tables.c
@@ -31,8 +31,7 @@ 
 
 #define OLD_ACPI 0
 
-extern unsigned char AmlCode[];
-void *amlcodeptr = &AmlCode;
+extern acpi_header_t AmlCode;
 #if CONFIG_HAVE_ACPI_SLIC
 unsigned long acpi_create_slic(unsigned long current);
 #endif
@@ -273,10 +272,9 @@  unsigned long write_acpi_tables(unsigned
 	ALIGN_CURRENT;
 	acpi_create_facs(facs);
 
-	int len = ((acpi_header_t *) amlcodeptr)->length;
 	dsdt = (acpi_header_t *) current;
-	current += len;
-	memcpy((void *) dsdt, amlcodeptr, len);
+	current += AmlCode.length;
+	memcpy((void *) dsdt, &AmlCode, AmlCode.length);
 
 #if OLD_ACPI
 	for (i=0; i < dsdt->length; i++) {
Index: svn/src/mainboard/kontron/986lcd-m/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/kontron/986lcd-m/acpi_tables.c
+++ svn/src/mainboard/kontron/986lcd-m/acpi_tables.c
@@ -29,8 +29,7 @@ 
 #include <cpu/x86/msr.h>
 #include "dmi.h"
 
-extern unsigned char AmlCode[];
-void *amlcodeptr = &AmlCode;
+extern acpi_header_t AmlCode;
 #if CONFIG_HAVE_ACPI_SLIC
 unsigned long acpi_create_slic(unsigned long current);
 #endif
@@ -204,10 +203,9 @@  unsigned long write_acpi_tables(unsigned
 	ALIGN_CURRENT;
 	acpi_create_facs(facs);
 
-	int len = ((acpi_header_t *) amlcodeptr)->length;
 	dsdt = (acpi_header_t *) current;
-	current += len;
-	memcpy((void *) dsdt, amlcodeptr, len);
+	current += AmlCode.length;
+	memcpy((void *) dsdt, &AmlCode, AmlCode.length);
 
 	ALIGN_CURRENT;
 
Index: svn/src/mainboard/roda/rk886ex/acpi_tables.c
===================================================================
--- svn.orig/src/mainboard/roda/rk886ex/acpi_tables.c
+++ svn/src/mainboard/roda/rk886ex/acpi_tables.c
@@ -30,8 +30,7 @@ 
 #include <device/pci_ids.h>
 #include "dmi.h"
 
-extern unsigned char AmlCode[];
-void *amlcodeptr = &AmlCode;
+extern acpi_header_t AmlCode;
 #if CONFIG_HAVE_ACPI_SLIC
 unsigned long acpi_create_slic(unsigned long current);
 #endif
@@ -273,10 +272,9 @@  unsigned long write_acpi_tables(unsigned
 	ALIGN_CURRENT;
 	acpi_create_facs(facs);
 
-	int len = ((acpi_header_t *)amlcodeptr)->length;
-	current += len;
 	dsdt = (acpi_header_t *) current;
-	memcpy((void *) dsdt, amlcodeptr, len);
+	current += AmlCode.length;
+	memcpy((void *) dsdt, &AmlCode, AmlCode.length);
 
 	/* Fix up global NVS region for SMI handler. The GNVS region lives 
 	 * in the (high) table area. The low memory map looks like this: