diff options
| -rw-r--r-- | arch/powerpc/boot/Makefile | 4 | ||||
| -rw-r--r-- | arch/powerpc/boot/epapr-wrapper.c | 9 | ||||
| -rw-r--r-- | arch/powerpc/boot/epapr.c | 4 | ||||
| -rw-r--r-- | arch/powerpc/boot/of.c | 16 | ||||
| -rwxr-xr-x | arch/powerpc/boot/wrapper | 9 |
5 files changed, 33 insertions, 9 deletions
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 6a15c968d214..15ca2255f438 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile | |||
| @@ -74,7 +74,7 @@ src-wlib-$(CONFIG_8xx) += mpc8xx.c planetcore.c | |||
| 74 | src-wlib-$(CONFIG_PPC_82xx) += pq2.c fsl-soc.c planetcore.c | 74 | src-wlib-$(CONFIG_PPC_82xx) += pq2.c fsl-soc.c planetcore.c |
| 75 | src-wlib-$(CONFIG_EMBEDDED6xx) += mv64x60.c mv64x60_i2c.c ugecon.c | 75 | src-wlib-$(CONFIG_EMBEDDED6xx) += mv64x60.c mv64x60_i2c.c ugecon.c |
| 76 | 76 | ||
| 77 | src-plat-y := of.c | 77 | src-plat-y := of.c epapr.c |
| 78 | src-plat-$(CONFIG_40x) += fixed-head.S ep405.c cuboot-hotfoot.c \ | 78 | src-plat-$(CONFIG_40x) += fixed-head.S ep405.c cuboot-hotfoot.c \ |
| 79 | treeboot-walnut.c cuboot-acadia.c \ | 79 | treeboot-walnut.c cuboot-acadia.c \ |
| 80 | cuboot-kilauea.c simpleboot.c \ | 80 | cuboot-kilauea.c simpleboot.c \ |
| @@ -97,7 +97,7 @@ src-plat-$(CONFIG_EMBEDDED6xx) += cuboot-pq2.c cuboot-mpc7448hpc2.c \ | |||
| 97 | prpmc2800.c | 97 | prpmc2800.c |
| 98 | src-plat-$(CONFIG_AMIGAONE) += cuboot-amigaone.c | 98 | src-plat-$(CONFIG_AMIGAONE) += cuboot-amigaone.c |
| 99 | src-plat-$(CONFIG_PPC_PS3) += ps3-head.S ps3-hvcall.S ps3.c | 99 | src-plat-$(CONFIG_PPC_PS3) += ps3-head.S ps3-hvcall.S ps3.c |
| 100 | src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c | 100 | src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c epapr-wrapper.c |
| 101 | 101 | ||
| 102 | src-wlib := $(sort $(src-wlib-y)) | 102 | src-wlib := $(sort $(src-wlib-y)) |
| 103 | src-plat := $(sort $(src-plat-y)) | 103 | src-plat := $(sort $(src-plat-y)) |
diff --git a/arch/powerpc/boot/epapr-wrapper.c b/arch/powerpc/boot/epapr-wrapper.c new file mode 100644 index 000000000000..c10191006673 --- /dev/null +++ b/arch/powerpc/boot/epapr-wrapper.c | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | extern void epapr_platform_init(unsigned long r3, unsigned long r4, | ||
| 2 | unsigned long r5, unsigned long r6, | ||
| 3 | unsigned long r7); | ||
| 4 | |||
| 5 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
| 6 | unsigned long r6, unsigned long r7) | ||
| 7 | { | ||
| 8 | epapr_platform_init(r3, r4, r5, r6, r7); | ||
| 9 | } | ||
diff --git a/arch/powerpc/boot/epapr.c b/arch/powerpc/boot/epapr.c index 06c1961bd124..02e91aa2194a 100644 --- a/arch/powerpc/boot/epapr.c +++ b/arch/powerpc/boot/epapr.c | |||
| @@ -48,8 +48,8 @@ static void platform_fixups(void) | |||
| 48 | fdt_addr, fdt_totalsize((void *)fdt_addr), ima_size); | 48 | fdt_addr, fdt_totalsize((void *)fdt_addr), ima_size); |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | 51 | void epapr_platform_init(unsigned long r3, unsigned long r4, unsigned long r5, |
| 52 | unsigned long r6, unsigned long r7) | 52 | unsigned long r6, unsigned long r7) |
| 53 | { | 53 | { |
| 54 | epapr_magic = r6; | 54 | epapr_magic = r6; |
| 55 | ima_size = r7; | 55 | ima_size = r7; |
diff --git a/arch/powerpc/boot/of.c b/arch/powerpc/boot/of.c index 61d9899aa0d0..62e2f43ec1df 100644 --- a/arch/powerpc/boot/of.c +++ b/arch/powerpc/boot/of.c | |||
| @@ -26,6 +26,9 @@ | |||
| 26 | 26 | ||
| 27 | static unsigned long claim_base; | 27 | static unsigned long claim_base; |
| 28 | 28 | ||
| 29 | void epapr_platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
| 30 | unsigned long r6, unsigned long r7); | ||
| 31 | |||
| 29 | static void *of_try_claim(unsigned long size) | 32 | static void *of_try_claim(unsigned long size) |
| 30 | { | 33 | { |
| 31 | unsigned long addr = 0; | 34 | unsigned long addr = 0; |
| @@ -61,7 +64,7 @@ static void of_image_hdr(const void *hdr) | |||
| 61 | } | 64 | } |
| 62 | } | 65 | } |
| 63 | 66 | ||
| 64 | void platform_init(unsigned long a1, unsigned long a2, void *promptr) | 67 | static void of_platform_init(unsigned long a1, unsigned long a2, void *promptr) |
| 65 | { | 68 | { |
| 66 | platform_ops.image_hdr = of_image_hdr; | 69 | platform_ops.image_hdr = of_image_hdr; |
| 67 | platform_ops.malloc = of_try_claim; | 70 | platform_ops.malloc = of_try_claim; |
| @@ -81,3 +84,14 @@ void platform_init(unsigned long a1, unsigned long a2, void *promptr) | |||
| 81 | loader_info.initrd_size = a2; | 84 | loader_info.initrd_size = a2; |
| 82 | } | 85 | } |
| 83 | } | 86 | } |
| 87 | |||
| 88 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
| 89 | unsigned long r6, unsigned long r7) | ||
| 90 | { | ||
| 91 | /* Detect OF vs. ePAPR boot */ | ||
| 92 | if (r5) | ||
| 93 | of_platform_init(r3, r4, (void *)r5); | ||
| 94 | else | ||
| 95 | epapr_platform_init(r3, r4, r5, r6, r7); | ||
| 96 | } | ||
| 97 | |||
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper index 6761c746048d..cd7af841ba05 100755 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper | |||
| @@ -148,18 +148,18 @@ make_space=y | |||
| 148 | 148 | ||
| 149 | case "$platform" in | 149 | case "$platform" in |
| 150 | pseries) | 150 | pseries) |
| 151 | platformo=$object/of.o | 151 | platformo="$object/of.o $object/epapr.o" |
| 152 | link_address='0x4000000' | 152 | link_address='0x4000000' |
| 153 | ;; | 153 | ;; |
| 154 | maple) | 154 | maple) |
| 155 | platformo=$object/of.o | 155 | platformo="$object/of.o $object/epapr.o" |
| 156 | link_address='0x400000' | 156 | link_address='0x400000' |
| 157 | ;; | 157 | ;; |
| 158 | pmac|chrp) | 158 | pmac|chrp) |
| 159 | platformo=$object/of.o | 159 | platformo="$object/of.o $object/epapr.o" |
| 160 | ;; | 160 | ;; |
| 161 | coff) | 161 | coff) |
| 162 | platformo="$object/crt0.o $object/of.o" | 162 | platformo="$object/crt0.o $object/of.o $object/epapr.o" |
| 163 | lds=$object/zImage.coff.lds | 163 | lds=$object/zImage.coff.lds |
| 164 | link_address='0x500000' | 164 | link_address='0x500000' |
| 165 | pie= | 165 | pie= |
| @@ -253,6 +253,7 @@ treeboot-iss4xx-mpic) | |||
| 253 | platformo="$object/treeboot-iss4xx.o" | 253 | platformo="$object/treeboot-iss4xx.o" |
| 254 | ;; | 254 | ;; |
| 255 | epapr) | 255 | epapr) |
| 256 | platformo="$object/epapr.o $object/epapr-wrapper.o" | ||
| 256 | link_address='0x20000000' | 257 | link_address='0x20000000' |
| 257 | pie=-pie | 258 | pie=-pie |
| 258 | ;; | 259 | ;; |
