Merge branch 'master' of /home/src/linux-2.6/
[linux-2.6] / arch / ppc / boot / simple / openbios.c
1 /*
2  * arch/ppc/boot/simple/openbios.c
3  *
4  * 2005 (c) SYSGO AG - g.jaeger@sysgo.com
5  * This file is licensed under the terms of the GNU General Public
6  * License version 2.  This program is licensed "as is" without
7  * any warranty of any kind, whether express or implied.
8  *
9  * Derived from arch/ppc/boot/simple/pibs.c (from MontaVista)
10  */
11
12 #include <linux/types.h>
13 #include <linux/config.h>
14 #include <linux/string.h>
15 #include <asm/ppcboot.h>
16 #include <platforms/4xx/ebony.h>
17
18 extern unsigned long decompress_kernel(unsigned long load_addr, int num_words,
19                                        unsigned long cksum);
20
21 /* We need to make sure that this is before the images to ensure
22  * that it's in a mapped location. */
23 bd_t hold_resid_buf __attribute__ ((__section__ (".data.boot")));
24 bd_t *hold_residual = &hold_resid_buf;
25
26 void *
27 load_kernel(unsigned long load_addr, int num_words, unsigned long cksum,
28                 void *ign1, void *ign2)
29 {
30         decompress_kernel(load_addr, num_words, cksum);
31
32         /* simply copy the MAC addresses */
33         memcpy(hold_residual->bi_enetaddr,  (char *)EBONY_OPENBIOS_MAC_BASE, 6);
34         memcpy(hold_residual->bi_enet1addr, (char *)(EBONY_OPENBIOS_MAC_BASE+EBONY_OPENBIOS_MAC_OFFSET), 6);
35
36         return (void *)hold_residual;
37 }