diff options
author | Paul Mackerras <paulus@samba.org> | 2005-10-26 07:52:53 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2005-10-26 07:52:53 -0400 |
commit | c49888203d7a316cb947bb8a1cf2ae191f28bcd3 (patch) | |
tree | 7e2962af5e6978361f04161c5d6fc3765fd21e77 /arch/ppc | |
parent | bbd0abda9cc689a54df509aae00000bbb2a1a7d1 (diff) |
powerpc: Fixes to get the Longtrail CHRP a bit further
Talk about buggy firmware... the OF on the Longtrail returns 0
from the claim client service rather than -1 when the claim fails.
It also has no device_type on the /memory node and blows up if
the output buffer for package-to-path is too big.
This also fixes a bug with calling alloc_up with align == 0, where
we did _ALIGN_UP(alloc_bottom, 0) which will end up as 0.
Lastly, we now check the return value (in r3) from calling the
prom, and return -1 from call_prom if we get a negative value back.
That is supposed to indicate that the requested client service
doesn't exist.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/ppc')
-rw-r--r-- | arch/ppc/boot/of1275/claim.c | 1 | ||||
-rw-r--r-- | arch/ppc/boot/openfirmware/chrpmain.c | 2 |
2 files changed, 2 insertions, 1 deletions
diff --git a/arch/ppc/boot/of1275/claim.c b/arch/ppc/boot/of1275/claim.c index e060292ae2a7..13169a5c4339 100644 --- a/arch/ppc/boot/of1275/claim.c +++ b/arch/ppc/boot/of1275/claim.c | |||
@@ -29,6 +29,7 @@ claim(unsigned int virt, unsigned int size, unsigned int align) | |||
29 | args.virt = virt; | 29 | args.virt = virt; |
30 | args.size = size; | 30 | args.size = size; |
31 | args.align = align; | 31 | args.align = align; |
32 | args.ret = (void *) 0; | ||
32 | (*of_prom_entry)(&args); | 33 | (*of_prom_entry)(&args); |
33 | return args.ret; | 34 | return args.ret; |
34 | } | 35 | } |
diff --git a/arch/ppc/boot/openfirmware/chrpmain.c b/arch/ppc/boot/openfirmware/chrpmain.c index effe4a0624b0..245dbd9fc120 100644 --- a/arch/ppc/boot/openfirmware/chrpmain.c +++ b/arch/ppc/boot/openfirmware/chrpmain.c | |||
@@ -78,7 +78,7 @@ boot(int a1, int a2, void *prom) | |||
78 | begin_avail = avail_high = avail_ram; | 78 | begin_avail = avail_high = avail_ram; |
79 | end_avail = scratch + sizeof(scratch); | 79 | end_avail = scratch + sizeof(scratch); |
80 | printf("gunzipping (0x%p <- 0x%p:0x%p)...", dst, im, im+len); | 80 | printf("gunzipping (0x%p <- 0x%p:0x%p)...", dst, im, im+len); |
81 | gunzip(dst, 0x400000, im, &len); | 81 | gunzip(dst, PROG_SIZE - PROG_START, im, &len); |
82 | printf("done %u bytes\n\r", len); | 82 | printf("done %u bytes\n\r", len); |
83 | printf("%u bytes of heap consumed, max in use %u\n\r", | 83 | printf("%u bytes of heap consumed, max in use %u\n\r", |
84 | avail_high - begin_avail, heap_max); | 84 | avail_high - begin_avail, heap_max); |