With these changes applied, barebox can now generate images that can be booted on qemu/tinyemu virt32 and virt64 machines. The boards have clocksource, virtio, cfi-flash, reboot and poweroff support. This can also be pulled from Github: https://github.com/a3f/barebox/tree/multi-image-riscv-v3 v2 -> v3: - reworded some commit titles - added new header format for barebox images - added filetype detection for new barebox image format - fixed use of uninitialized sp in Erizo ENTRY_POINT (Antony) - Replaced assembly entry point of generic DT image with customized version of new header format macro - early exit relocation if runtime offset == 0 - remove note about TLSF error that's now fixed after Antony's bisection - replace 2 line assembly function in entry_ll.S with inline code v1 -> v2: - moved compressed dtb helpers into common header for both ARM and RISC-V to use - relocate_to_adr(fixed_base) can now be called multiple times in a row - removed some extra spaces (Antony) - as arch is DT only, bumped pr_debug to pr_err if dt is not found. no panic, because with debug_ll you might still be able to boot to shell for further debugging - rename Makefile.erizo to Makefile.riscv. Let's just build all board images out of the same Makefile now - HAS_ARCH_SJLJ selected for 64-bit as well - don't require compiler to support atomics or floating point on rv64 (Rouven) - added RISCV timer for SBI and rdcycle mode. This is used on tinyemu virt. rdcycle mode could be used on erizo as well if suitable timerbase chosen. - activate first console because Tinyemu only describes virtio mmio region for console and no stdout-path Cheers, Ahmad Fatoum (19): partitions: don't allocate dma capable memory images: make BOARD_ARM_GENERIC_DT available for other arches ARM: make ARM_USE_COMPRESSED_DTB available for other arches ARM: aarch64: omit unused label in assembly serial: virtio-console: depend on, but don't select VIRTIO RISC-V: <asm/unaligned.h>: don't do unaligned accesses RISC-V: debug_ll: ns16550: align C access size with assembly's RISC-V: drop duplicate or unneeded cflags RISC-V: add cacheless HAS_DMA support RISC-V: erizo: move to arch/riscv/boards/erizo RISC-V: import Linux' optimized string functions filetype: detect RISC-V images RISC-V: implement PBL image header RISC-V: implement PBL and relocation support RISC-V: erizo: migrate to PBL RISC-V: support symbol names in barebox image RISC-V: add generic DT image clocksource: add driver for RISC-V and CLINT timers power: reset: add drivers for generic syscon reset and poweroff Rouven Czerwinski (2): RISC-V: add 64-bit support RISC-V: add Qemu virt support Documentation/boards/riscv.rst | 72 ++++++- Makefile | 1 + arch/arm/Kconfig | 7 +- arch/arm/cpu/start.c | 20 +- arch/arm/include/asm/barebox-arm.h | 7 - arch/arm/lib64/runtime-offset.S | 2 +- arch/riscv/Kconfig | 81 +++++-- arch/riscv/Makefile | 35 ++- arch/riscv/boards/Makefile | 2 + arch/riscv/boards/erizo/Makefile | 3 + arch/riscv/boards/erizo/lowlevel.c | 18 ++ arch/riscv/boot/Makefile | 5 +- arch/riscv/boot/board-dt-2nd.c | 36 ++++ arch/riscv/boot/dtb.c | 25 --- arch/riscv/boot/entry.c | 29 +++ arch/riscv/boot/entry.h | 15 ++ arch/riscv/boot/main_entry.c | 35 --- arch/riscv/boot/start.S | 68 ------ arch/riscv/boot/start.c | 185 ++++++++++++++++ arch/riscv/boot/uncompress.c | 74 +++++++ arch/riscv/configs/erizo_generic_defconfig | 5 - arch/riscv/configs/virt32_defconfig | 116 ++++++++++ arch/riscv/configs/virt64_defconfig | 117 ++++++++++ arch/riscv/cpu/Makefile | 3 + arch/riscv/cpu/core.c | 50 +++++ arch/riscv/cpu/time.c | 38 ++++ arch/riscv/dts/Makefile | 9 +- arch/riscv/dts/erizo.dtsi | 2 +- arch/riscv/include/asm/barebox-riscv-head.h | 36 ++++ arch/riscv/include/asm/barebox-riscv.h | 105 +++++++++ arch/riscv/include/asm/common.h | 10 +- arch/riscv/include/asm/csr.h | 211 +++++++++++++++++++ arch/riscv/include/asm/debug_ll_ns16550.h | 16 +- arch/riscv/include/asm/dma.h | 44 ++++ arch/riscv/include/asm/elf.h | 8 +- arch/riscv/include/asm/image.h | 65 ++++++ arch/riscv/include/asm/linkage.h | 4 + arch/riscv/include/asm/sbi.h | 153 ++++++++++++++ arch/riscv/include/asm/sections.h | 15 ++ arch/riscv/include/asm/string.h | 21 +- arch/riscv/include/asm/timer.h | 9 + arch/riscv/include/asm/types.h | 8 +- arch/riscv/include/asm/unaligned.h | 16 +- arch/riscv/lib/Makefile | 6 +- arch/riscv/lib/barebox.lds.S | 55 +++-- arch/riscv/lib/dtb.c | 30 +++ arch/riscv/lib/memcpy.S | 108 ++++++++++ arch/riscv/lib/memmove.S | 64 ++++++ arch/riscv/lib/memset.S | 113 ++++++++++ arch/riscv/lib/pbl.lds.S | 85 ++++++++ arch/riscv/lib/reloc.c | 66 ++++++ arch/riscv/lib/runtime-offset.S | 12 ++ arch/riscv/lib/sections.c | 9 + arch/riscv/lib/setupc.S | 55 +++++ arch/riscv/mach-virt/Makefile | 3 + arch/riscv/mach-virt/include/mach/debug_ll.h | 25 +++ common/Kconfig | 8 +- common/filetype.c | 6 + common/partitions.c | 5 +- common/partitions/dos.c | 7 +- common/partitions/efi.c | 1 - drivers/clocksource/Kconfig | 15 ++ drivers/clocksource/Makefile | 2 + drivers/clocksource/timer-clint.c | 93 ++++++++ drivers/clocksource/timer-riscv.c | 66 ++++++ drivers/power/reset/Kconfig | 14 ++ drivers/power/reset/Makefile | 2 + drivers/power/reset/syscon-poweroff.c | 76 +++++++ drivers/power/reset/syscon-reboot.c | 92 ++++++++ drivers/serial/Kconfig | 2 +- images/.gitignore | 1 + images/Makefile | 8 +- images/Makefile.riscv | 12 ++ include/compressed-dtb.h | 33 +++ include/dma.h | 1 + include/filetype.h | 2 + pbl/Kconfig | 6 +- scripts/.gitignore | 1 + scripts/Makefile | 1 + scripts/Makefile.lib | 11 + scripts/prelink-riscv.c | 122 +++++++++++ scripts/prelink-riscv.inc | 123 +++++++++++ 82 files changed, 2853 insertions(+), 269 deletions(-) create mode 100644 arch/riscv/boards/Makefile create mode 100644 arch/riscv/boards/erizo/Makefile create mode 100644 arch/riscv/boards/erizo/lowlevel.c create mode 100644 arch/riscv/boot/board-dt-2nd.c delete mode 100644 arch/riscv/boot/dtb.c create mode 100644 arch/riscv/boot/entry.c create mode 100644 arch/riscv/boot/entry.h delete mode 100644 arch/riscv/boot/main_entry.c delete mode 100644 arch/riscv/boot/start.S create mode 100644 arch/riscv/boot/start.c create mode 100644 arch/riscv/boot/uncompress.c create mode 100644 arch/riscv/configs/virt32_defconfig create mode 100644 arch/riscv/configs/virt64_defconfig create mode 100644 arch/riscv/cpu/Makefile create mode 100644 arch/riscv/cpu/core.c create mode 100644 arch/riscv/cpu/time.c create mode 100644 arch/riscv/include/asm/barebox-riscv-head.h create mode 100644 arch/riscv/include/asm/barebox-riscv.h create mode 100644 arch/riscv/include/asm/csr.h create mode 100644 arch/riscv/include/asm/dma.h create mode 100644 arch/riscv/include/asm/image.h create mode 100644 arch/riscv/include/asm/sbi.h create mode 100644 arch/riscv/include/asm/timer.h create mode 100644 arch/riscv/lib/dtb.c create mode 100644 arch/riscv/lib/memcpy.S create mode 100644 arch/riscv/lib/memmove.S create mode 100644 arch/riscv/lib/memset.S create mode 100644 arch/riscv/lib/pbl.lds.S create mode 100644 arch/riscv/lib/reloc.c create mode 100644 arch/riscv/lib/runtime-offset.S create mode 100644 arch/riscv/lib/sections.c create mode 100644 arch/riscv/lib/setupc.S create mode 100644 arch/riscv/mach-virt/Makefile create mode 100644 arch/riscv/mach-virt/include/mach/debug_ll.h create mode 100644 drivers/clocksource/timer-clint.c create mode 100644 drivers/clocksource/timer-riscv.c create mode 100644 drivers/power/reset/syscon-poweroff.c create mode 100644 drivers/power/reset/syscon-reboot.c create mode 100644 images/Makefile.riscv create mode 100644 include/compressed-dtb.h create mode 100644 scripts/prelink-riscv.c create mode 100644 scripts/prelink-riscv.inc -- 2.29.2 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox