summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorBlue Swirl <blauwirbel@gmail.com>2010-08-07 12:49:53 +0000
committerBlue Swirl <blauwirbel@gmail.com>2010-08-07 12:49:53 +0000
commitf7717af4197fafb6a9252016b1c1fbfbfbea7908 (patch)
tree603f87b9ad099b0cf922a60061ec2153384c6d48 /packages
parent988f780aa5fbee872018036b2b7aa910240ae373 (diff)
downloadqemu-openbios-f7717af4197fafb6a9252016b1c1fbfbfbea7908.tar.gz
sun-parts: fix id and flag sizes
Also use __bexx_to_cpu() to access the fields. Signed-off-by: Blue Swirl <blauwirbel@gmail.com> git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@840 f158a5a8-5612-0410-a976-696ce0be7e32
Diffstat (limited to 'packages')
-rw-r--r--packages/sun-parts.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/packages/sun-parts.c b/packages/sun-parts.c
index db52171e..86f735d6 100644
--- a/packages/sun-parts.c
+++ b/packages/sun-parts.c
@@ -46,10 +46,8 @@ struct sun_disklabel {
uint8_t info[128]; /* Informative text string */
uint8_t spare0[14];
struct sun_info {
- uint8_t spare1;
- uint8_t id;
- uint8_t spare2;
- uint8_t flags;
+ uint16_t id;
+ uint16_t flags;
} infos[8];
uint8_t spare[246]; /* Boot information etc. */
uint16_t rspeed; /* Disk rotational speed */
@@ -172,8 +170,11 @@ sunparts_open( sunparts_info_t *di )
p = (struct sun_disklabel *)buf;
for (i = 0; i < 8; i++) {
- DPRINTF("%c: %d + %d, id %x, flags %x\n", 'a' + i, p->partitions[i].start_cylinder,
- p->partitions[i].num_sectors, p->infos[i].id, p->infos[i].flags);
+ DPRINTF("%c: %d + %d, id %x, flags %x\n", 'a' + i,
+ __be32_to_cpu(p->partitions[i].start_cylinder),
+ __be32_to_cpu(p->partitions[i].num_sectors),
+ __be16_to_cpu(p->infos[i].id),
+ __be16_to_cpu(p->infos[i].flags));
if (parnum < 0) {
if (p->partitions[i].num_sectors != 0 && p->infos[i].id != 0)
parnum = i;
@@ -193,7 +194,7 @@ sunparts_open( sunparts_info_t *di )
size = (long long)__be32_to_cpu(p->partitions[parnum].num_sectors) * bs;
di->size_hi = size >> BITS;
di->size_lo = size & (ucell) -1;
- di->type = __be32_to_cpu(p->infos[parnum].id);
+ di->type = __be16_to_cpu(p->infos[parnum].id);
DPRINTF("Found Sun partition, offs %lld size %lld\n",
(long long)offs, (long long)size);