Submitter | Stefan Reinauer |
---|---|
Date | 2010-03-25 21:58:41 |
Message ID | <4BABDC91.5020502@coresystems.de> |
Download | mbox | patch |
Permalink | /patch/1158/ |
State | Not Applicable |
Headers | show |
Comments
> I changed one as an example now... > I guess we could optimize to not copy the header twice, but the header > is really small, so i didn't care to make the code uglier. I agree. > @@ -273,8 +273,10 @@ > acpi_create_facs(facs); > > dsdt = (acpi_header_t *) current; > - current += AmlCode.length; > - memcpy((void *) dsdt, &AmlCode, AmlCode.length); > + memcpy((void *) dsdt, AmlCode, sizeof(acpi_header_t)); > + int len = dsdt->length; > + current += len; > + memcpy((void *) dsdt, AmlCode, len); Why not: > + current += dstd->length; > + memcpy((void *) dsdt, AmlCode, dsdt->length); I don't think the extra variable adds anything. I'll ack that. Thanks, Myles
On 3/25/10 11:07 PM, Myles Watson wrote: > >> I changed one as an example now... >> I guess we could optimize to not copy the header twice, but the header >> is really small, so i didn't care to make the code uglier. >> > I agree. > > >> @@ -273,8 +273,10 @@ >> acpi_create_facs(facs); >> >> dsdt = (acpi_header_t *) current; >> - current += AmlCode.length; >> - memcpy((void *) dsdt, &AmlCode, AmlCode.length); >> + memcpy((void *) dsdt, AmlCode, sizeof(acpi_header_t)); >> + int len = dsdt->length; >> + current += len; >> + memcpy((void *) dsdt, AmlCode, len); >> > Why not: > >> + current += dstd->length; >> + memcpy((void *) dsdt, AmlCode, dsdt->length); >> > I don't think the extra variable adds anything. > Ah, I thought in terms of "it's overwriting memory while it's using it". Was I too careful? I think so.
Patch
Index: src/mainboard/intel/d945gclf/acpi_tables.c =================================================================== --- src/mainboard/intel/d945gclf/acpi_tables.c (revision 5297) +++ src/mainboard/intel/d945gclf/acpi_tables.c (working copy) @@ -31,7 +31,7 @@ #define OLD_ACPI 0 -extern const acpi_header_t AmlCode; +extern unsigned char AmlCode[]; #if CONFIG_HAVE_ACPI_SLIC unsigned long acpi_create_slic(unsigned long current); #endif @@ -273,8 +273,10 @@ acpi_create_facs(facs); dsdt = (acpi_header_t *) current; - current += AmlCode.length; - memcpy((void *) dsdt, &AmlCode, AmlCode.length); + memcpy((void *) dsdt, AmlCode, sizeof(acpi_header_t)); + int len = dsdt->length; + current += len; + memcpy((void *) dsdt, AmlCode, len); #if OLD_ACPI for (i=0; i < dsdt->length; i++) {