[coreboot] [commit] r5286 - ...

Stefan Reinauer stepan at coresystems.de
Thu Mar 25 17:39:10 CET 2010


On 3/25/10 5:18 PM, Myles Watson wrote:
>   
>> On Thu, Mar 25, 2010 at 7:56 AM, Myles Watson <mylesgw at gmail.com> wrote:
>>
>>     
>>> It seems like others must have this problem of needing to force a binary
>>> blob into a struct.
>>>       
>> Hi, I've only been following this at a distance. I assume this all
>> happens after memory is turned on. Why not just have a function to
>> fill the struct given the binary blob? I'm starting to worry about all
>> the tricks people want to play with gcc.
>>     
> Memory is on.  The blob is in flash, and the first bit of the blob is the
> header with the length field.
>
> We do a memcpy from flash to the struct,
Actually this is a memcpy from memory to the cbmem area, but after it's
copied it's not treated as a struct anymore.

> but first we have to cast it to a
> header so we can read out the length to copy.
Which makes me think if there are not other ways to determine the size
of an array. Maybe sizeof(AmlCode) ?

> Gcc doesn't like the cast, so
> we just declare that we have the header stored in flash.
>
> One way to solve it would be to copy the header first, then read the length
> and copy the rest...
>
>   
That's more copying than my variant with the extra pointer. Since we
copied (or uncompressed) the dsdt from flash to ram already before, and
are going to make another copy, I suggest rather keeping an extra 4
bytes, than copying the complete header for no apparent reason...


Stefan


-- 
coresystems GmbH • Brahmsstr. 16 • D-79104 Freiburg i. Br.
      Tel.: +49 761 7668825 • Fax: +49 761 7664613
Email: info at coresystems.dehttp://www.coresystems.de/
Registergericht: Amtsgericht Freiburg • HRB 7656
Geschäftsführer: Stefan Reinauer • Ust-IdNr.: DE245674866





More information about the coreboot mailing list