David,
Over in flattree.c's write_dt_blob() there is this code:
make_bph(&bph, vi, reservenum, dtbuf.len, strbuf.len);
/* Align the reserve map to an 8 byte boundary */
for (i = vi->hdr_size; i < be32_to_cpu(bph.off_mem_rsvmap); i++)
fputc(0, f);
fwrite(&bph, vi->hdr_size, 1, f);
for (i = 0; i < reservenum+1; i++)
fwrite(&re, sizeof(re), 1, f);
However, I think the boot_param_header should be emitted
first, before the alignment:
make_bph(&bph, vi, reservenum, dtbuf.len, strbuf.len);
fwrite(&bph, vi->hdr_size, 1, f);
/* Align the reserve map to an 8 byte boundary */
for (i = vi->hdr_size; i < be32_to_cpu(bph.off_mem_rsvmap); i++)
fputc(0, f);
for (i = 0; i < reservenum+1; i++)
fwrite(&re, sizeof(re), 1, f);
Thoughts?
Thanks,
jdl
On Wed, Jul 13, 2005 at 11:16:32AM -0500, Jon Loeliger wrote:
David,
Over in flattree.c's write_dt_blob() there is this code:
make_bph(&bph, vi, reservenum, dtbuf.len, strbuf.len);
/* Align the reserve map to an 8 byte boundary */
for (i = vi->hdr_size; i < be32_to_cpu(bph.off_mem_rsvmap); i++)
fputc(0, f);
fwrite(&bph, vi->hdr_size, 1, f);
for (i = 0; i < reservenum+1; i++)
fwrite(&re, sizeof(re), 1, f);
However, I think the boot_param_header should be emitted
first, before the alignment:
make_bph(&bph, vi, reservenum, dtbuf.len, strbuf.len);
fwrite(&bph, vi->hdr_size, 1, f);
/* Align the reserve map to an 8 byte boundary */
for (i = vi->hdr_size; i < be32_to_cpu(bph.off_mem_rsvmap); i++)
fputc(0, f);
for (i = 0; i < reservenum+1; i++)
fwrite(&re, sizeof(re), 1, f);
Thoughts?
Oops, yes, stupid screwup on my part. I've really got to get this
testsuite thing going...
I've committed a fix for this, but it won't go up on the site until
I'm able to fix my laptop, unfortunately (disk died the other day).
--
David Gibson | For every complex problem there is a
david@gibson.dropbear.id.au | solution which is simple, neat and
| wrong.
http://www.ozlabs.org/people/dgibson