Excerpts from Paul Mackerras's message of June 18, 2021 1:49 pm: > From: Joel Stanley <j...@jms.id.au> > > This allows microwatt's kernel to be built with an embedded device tree. > > Load to arch/powerpc/boot/dtbImage.microwatt to 0x500000: > > mw_debug -b fpga stop load arch/powerpc/boot/dtbImage.microwatt 500000 start > > Signed-off-by: Joel Stanley <j...@jms.id.au> > Signed-off-by: Paul Mackerras <pau...@ozlabs.org>
Thanks for folding and commenting that change. Ack for this and the rest of the platform and dt and interrupt handling patches FWIW, but I don't know much about any of these areas to give an informed review. Thanks, Nick > --- > arch/powerpc/boot/Makefile | 4 ++++ > arch/powerpc/boot/microwatt.c | 24 ++++++++++++++++++++++++ > arch/powerpc/boot/wrapper | 5 +++++ > 3 files changed, 33 insertions(+) > create mode 100644 arch/powerpc/boot/microwatt.c > > diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile > index 2b8da923ceca..dfaa4094fcae 100644 > --- a/arch/powerpc/boot/Makefile > +++ b/arch/powerpc/boot/Makefile > @@ -163,6 +163,8 @@ src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S > src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S > src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c > > +src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c > + > src-wlib := $(sort $(src-wlib-y)) > src-plat := $(sort $(src-plat-y)) > src-boot := $(src-wlib) $(src-plat) empty.c > @@ -355,6 +357,8 @@ image-$(CONFIG_MVME5100) += dtbImage.mvme5100 > # Board port in arch/powerpc/platform/amigaone/Kconfig > image-$(CONFIG_AMIGAONE) += cuImage.amigaone > > +image-$(CONFIG_PPC_MICROWATT) += dtbImage.microwatt > + > # For 32-bit powermacs, build the COFF and miboot images > # as well as the ELF images. > ifdef CONFIG_PPC32 > diff --git a/arch/powerpc/boot/microwatt.c b/arch/powerpc/boot/microwatt.c > new file mode 100644 > index 000000000000..ca9d83617fc1 > --- /dev/null > +++ b/arch/powerpc/boot/microwatt.c > @@ -0,0 +1,24 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later > + > +#include <stddef.h> > +#include "stdio.h" > +#include "types.h" > +#include "io.h" > +#include "ops.h" > + > +BSS_STACK(8192); > + > +void platform_init(unsigned long r3, unsigned long r4, unsigned long r5) > +{ > + unsigned long heapsize = 16*1024*1024 - (unsigned long)_end; > + > + /* > + * Disable interrupts and turn off MSR_RI, since we'll > + * shortly be overwriting the interrupt vectors. > + */ > + __asm__ volatile("mtmsrd %0,1" : : "r" (0)); > + > + simple_alloc_init(_end, heapsize, 32, 64); > + fdt_init(_dtb_start); > + serial_console_init(); > +} > diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper > index 41fa0a8715e3..ae48fffa1e13 100755 > --- a/arch/powerpc/boot/wrapper > +++ b/arch/powerpc/boot/wrapper > @@ -342,6 +342,11 @@ gamecube|wii) > link_address='0x600000' > platformo="$object/$platform-head.o $object/$platform.o" > ;; > +microwatt) > + link_address='0x500000' > + platformo="$object/fixed-head.o $object/$platform.o" > + binary=y > + ;; > treeboot-currituck) > link_address='0x1000000' > ;; > -- > 2.31.1 > >