diff --git a/Makefile b/Makefile index 38f18d8..3c3b046 100644 --- a/Makefile +++ b/Makefile @@ -57,9 +57,9 @@ endif export platform_subdir=$(PLATFORM) export platform_src_dir=$(platform_parent_dir)/$(platform_subdir) export platform_build_dir=$(build_dir)/platform/$(platform_subdir) -export platform_common_src_dir=$(src_dir)/platform/common export include_dir=$(CURDIR)/include export libsbi_dir=$(CURDIR)/lib/sbi +export libsbiutils_dir=$(CURDIR)/lib/utils export firmware_dir=$(CURDIR)/firmware # Find library version @@ -98,9 +98,9 @@ endif # Setup list of objects.mk files ifdef PLATFORM platform-object-mks=$(shell if [ -d $(platform_src_dir)/ ]; then find $(platform_src_dir) -iname "objects.mk" | sort -r; fi) -platform-common-object-mks=$(shell if [ -d $(platform_common_src_dir) ]; then find $(platform_common_src_dir) -iname "objects.mk" | sort -r; fi) endif libsbi-object-mks=$(shell if [ -d $(libsbi_dir) ]; then find $(libsbi_dir) -iname "objects.mk" | sort -r; fi) +libsbiutils-object-mks=$(shell if [ -d $(libsbiutils_dir) ]; then find $(libsbiutils_dir) -iname "objects.mk" | sort -r; fi) firmware-object-mks=$(shell if [ -d $(firmware_dir) ]; then find $(firmware_dir) -iname "objects.mk" | sort -r; fi) # Include platform specifig config.mk @@ -111,17 +111,17 @@ endif # Include all object.mk files ifdef PLATFORM include $(platform-object-mks) -include $(platform-common-object-mks) endif include $(libsbi-object-mks) +include $(libsbiutils-object-mks) include $(firmware-object-mks) # Setup list of objects libsbi-objs-path-y=$(foreach obj,$(libsbi-objs-y),$(build_dir)/lib/sbi/$(obj)) +libsbiutils-objs-path-y=$(foreach obj,$(libsbiutils-objs-y),$(build_dir)/lib/utils/$(obj)) ifdef PLATFORM platform-objs-path-y=$(foreach obj,$(platform-objs-y),$(platform_build_dir)/$(obj)) platform-dtb-path-y=$(foreach obj,$(platform-dtb-y),$(platform_build_dir)/$(obj)) -platform-common-objs-path-y=$(foreach obj,$(platform-common-objs-y),$(build_dir)/platform/common/$(obj)) firmware-bins-path-y=$(foreach bin,$(firmware-bins-y),$(platform_build_dir)/firmware/$(bin)) endif firmware-elfs-path-y=$(firmware-bins-path-y:.bin=.elf) @@ -129,8 +129,8 @@ firmware-objs-path-y=$(firmware-bins-path-y:.bin=.o) # Setup list of deps files for objects deps-y=$(platform-objs-path-y:.o=.dep) -deps-y+=$(platform-common-objs-path-y:.o=.dep) deps-y+=$(libsbi-objs-path-y:.o=.dep) +deps-y+=$(libsbiutils-objs-path-y:.o=.dep) deps-y+=$(firmware-objs-path-y:.o=.dep) # Setup platform ABI, ISA and Code Model @@ -150,9 +150,8 @@ endif # Setup compilation commands flags GENFLAGS = -I$(platform_src_dir)/include -GENFLAGS += -I$(platform_common_src_dir)/include GENFLAGS += -I$(include_dir) -GENFLAGS += $(platform-common-genflags-y) +GENFLAGS += $(libsbiutils-genflags-y) GENFLAGS += $(platform-genflags-y) GENFLAGS += $(firmware-genflags-y) @@ -254,6 +253,7 @@ compile_dts = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \ $(DTC) $(DTCFLAGS) -o $(1) $(2) targets-y = $(build_dir)/lib/libsbi.a +targets-y += $(build_dir)/lib/libsbiutils.a ifdef PLATFORM targets-y += $(platform_build_dir)/lib/libplatsbi.a targets-y += $(platform-dtb-path-y) @@ -279,7 +279,10 @@ $(platform_build_dir)/%.ld: $(src_dir)/%.ldS $(build_dir)/lib/libsbi.a: $(libsbi-objs-path-y) $(call compile_ar,$@,$^) -$(platform_build_dir)/lib/libplatsbi.a: $(libsbi-objs-path-y) $(platform-common-objs-path-y) $(platform-objs-path-y) +$(build_dir)/lib/libsbiutils.a: $(libsbi-objs-path-y) $(libsbiutils-objs-path-y) + $(call compile_ar,$@,$^) + +$(platform_build_dir)/lib/libplatsbi.a: $(libsbi-objs-path-y) $(libsbiutils-objs-path-y) $(platform-objs-path-y) $(call compile_ar,$@,$^) $(build_dir)/%.dep: $(src_dir)/%.c @@ -359,6 +362,7 @@ endif endif install_targets-y = install_libsbi +install_targets-y += install_libsbiutils ifdef PLATFORM install_targets-y += install_libplatsbi install_targets-y += install_firmwares @@ -373,12 +377,17 @@ install_libsbi: $(build_dir)/lib/libsbi.a $(call inst_header_dir,$(install_dir)/include,$(include_dir)/sbi) $(call inst_file,$(install_dir)/lib/libsbi.a,$(build_dir)/lib/libsbi.a) +.PHONY: install_libsbiutils +install_libsbiutils: $(build_dir)/lib/libsbiutils.a + $(call inst_header_dir,$(install_dir)/include,$(include_dir)/sbi_utils) + $(call inst_file,$(install_dir)/lib/libsbiutils.a,$(build_dir)/lib/libsbiutils.a) + .PHONY: install_libplatsbi -install_libplatsbi: $(platform_build_dir)/lib/libplatsbi.a $(build_dir)/lib/libsbi.a +install_libplatsbi: $(platform_build_dir)/lib/libplatsbi.a $(build_dir)/lib/libsbi.a $(build_dir)/lib/libsbiutils.a $(call inst_file,$(install_dir)/platform/$(platform_subdir)/lib/libplatsbi.a,$(platform_build_dir)/lib/libplatsbi.a) .PHONY: install_firmwares -install_firmwares: $(platform_build_dir)/lib/libplatsbi.a $(build_dir)/lib/libsbi.a $(firmware-bins-path-y) +install_firmwares: $(platform_build_dir)/lib/libplatsbi.a $(build_dir)/lib/libsbi.a $(build_dir)/lib/libsbiutils.a $(firmware-bins-path-y) $(call inst_file_list,$(install_dir),$(build_dir),platform/$(platform_subdir)/firmware,$(firmware-elfs-path-y)) $(call inst_file_list,$(install_dir),$(build_dir),platform/$(platform_subdir)/firmware,$(firmware-bins-path-y)) diff --git a/platform/common/include/plat/irqchip/plic.h b/include/sbi_utils/irqchip/plic.h similarity index 100% rename from platform/common/include/plat/irqchip/plic.h rename to include/sbi_utils/irqchip/plic.h diff --git a/platform/common/include/plat/serial/sifive-uart.h b/include/sbi_utils/serial/sifive-uart.h similarity index 100% rename from platform/common/include/plat/serial/sifive-uart.h rename to include/sbi_utils/serial/sifive-uart.h diff --git a/platform/common/include/plat/serial/uart8250.h b/include/sbi_utils/serial/uart8250.h similarity index 100% rename from platform/common/include/plat/serial/uart8250.h rename to include/sbi_utils/serial/uart8250.h diff --git a/platform/common/include/plat/sys/clint.h b/include/sbi_utils/sys/clint.h similarity index 100% rename from platform/common/include/plat/sys/clint.h rename to include/sbi_utils/sys/clint.h diff --git a/platform/common/include/plat/tinyfdt.h b/include/sbi_utils/tinyfdt.h similarity index 100% rename from platform/common/include/plat/tinyfdt.h rename to include/sbi_utils/tinyfdt.h diff --git a/platform/common/irqchip/objects.mk b/lib/utils/irqchip/objects.mk similarity index 71% rename from platform/common/irqchip/objects.mk rename to lib/utils/irqchip/objects.mk index 041834d..fa7c937 100644 --- a/platform/common/irqchip/objects.mk +++ b/lib/utils/irqchip/objects.mk @@ -7,4 +7,4 @@ # Anup Patel # -platform-common-objs-$(PLATFORM_IRQCHIP_PLIC) += irqchip/plic.o +libsbiutils-objs-$(PLATFORM_IRQCHIP_PLIC) += irqchip/plic.o diff --git a/platform/common/irqchip/plic.c b/lib/utils/irqchip/plic.c similarity index 97% rename from platform/common/irqchip/plic.c rename to lib/utils/irqchip/plic.c index e3cdb17..2131707 100644 --- a/platform/common/irqchip/plic.c +++ b/lib/utils/irqchip/plic.c @@ -11,8 +11,8 @@ #include #include #include -#include -#include +#include +#include #define PLIC_PRIORITY_BASE 0x0 #define PLIC_PENDING_BASE 0x1000 diff --git a/platform/common/libfdt/.clang-format b/lib/utils/libfdt/.clang-format similarity index 100% rename from platform/common/libfdt/.clang-format rename to lib/utils/libfdt/.clang-format diff --git a/platform/common/libfdt/Makefile.libfdt b/lib/utils/libfdt/Makefile.libfdt similarity index 100% rename from platform/common/libfdt/Makefile.libfdt rename to lib/utils/libfdt/Makefile.libfdt diff --git a/platform/common/libfdt/TODO b/lib/utils/libfdt/TODO similarity index 100% rename from platform/common/libfdt/TODO rename to lib/utils/libfdt/TODO diff --git a/platform/common/libfdt/fdt.c b/lib/utils/libfdt/fdt.c similarity index 100% rename from platform/common/libfdt/fdt.c rename to lib/utils/libfdt/fdt.c diff --git a/platform/common/libfdt/fdt.h b/lib/utils/libfdt/fdt.h similarity index 100% rename from platform/common/libfdt/fdt.h rename to lib/utils/libfdt/fdt.h diff --git a/platform/common/libfdt/fdt_addresses.c b/lib/utils/libfdt/fdt_addresses.c similarity index 100% rename from platform/common/libfdt/fdt_addresses.c rename to lib/utils/libfdt/fdt_addresses.c diff --git a/platform/common/libfdt/fdt_empty_tree.c b/lib/utils/libfdt/fdt_empty_tree.c similarity index 100% rename from platform/common/libfdt/fdt_empty_tree.c rename to lib/utils/libfdt/fdt_empty_tree.c diff --git a/platform/common/libfdt/fdt_overlay.c b/lib/utils/libfdt/fdt_overlay.c similarity index 100% rename from platform/common/libfdt/fdt_overlay.c rename to lib/utils/libfdt/fdt_overlay.c diff --git a/platform/common/libfdt/fdt_ro.c b/lib/utils/libfdt/fdt_ro.c similarity index 100% rename from platform/common/libfdt/fdt_ro.c rename to lib/utils/libfdt/fdt_ro.c diff --git a/platform/common/libfdt/fdt_rw.c b/lib/utils/libfdt/fdt_rw.c similarity index 100% rename from platform/common/libfdt/fdt_rw.c rename to lib/utils/libfdt/fdt_rw.c diff --git a/platform/common/libfdt/fdt_strerror.c b/lib/utils/libfdt/fdt_strerror.c similarity index 100% rename from platform/common/libfdt/fdt_strerror.c rename to lib/utils/libfdt/fdt_strerror.c diff --git a/platform/common/libfdt/fdt_sw.c b/lib/utils/libfdt/fdt_sw.c similarity index 100% rename from platform/common/libfdt/fdt_sw.c rename to lib/utils/libfdt/fdt_sw.c diff --git a/platform/common/libfdt/fdt_wip.c b/lib/utils/libfdt/fdt_wip.c similarity index 100% rename from platform/common/libfdt/fdt_wip.c rename to lib/utils/libfdt/fdt_wip.c diff --git a/platform/common/libfdt/libfdt.h b/lib/utils/libfdt/libfdt.h similarity index 100% rename from platform/common/libfdt/libfdt.h rename to lib/utils/libfdt/libfdt.h diff --git a/platform/common/libfdt/libfdt_env.h b/lib/utils/libfdt/libfdt_env.h similarity index 99% rename from platform/common/libfdt/libfdt_env.h rename to lib/utils/libfdt/libfdt_env.h index adcd315..c2b0c34 100644 --- a/platform/common/libfdt/libfdt_env.h +++ b/lib/utils/libfdt/libfdt_env.h @@ -58,8 +58,6 @@ #define INT_MAX ((int)(~0U >> 1)) #define UINT_MAX ((unsigned int)~0U) -#include - #ifdef __CHECKER__ #define FDT_FORCE __attribute__((force)) #define FDT_BITWISE __attribute__((bitwise)) diff --git a/platform/common/libfdt/libfdt_internal.h b/lib/utils/libfdt/libfdt_internal.h similarity index 100% rename from platform/common/libfdt/libfdt_internal.h rename to lib/utils/libfdt/libfdt_internal.h diff --git a/platform/common/libfdt/objects.mk b/lib/utils/libfdt/objects.mk similarity index 55% rename from platform/common/libfdt/objects.mk rename to lib/utils/libfdt/objects.mk index 1adee2b..205ea2c 100644 --- a/platform/common/libfdt/objects.mk +++ b/lib/utils/libfdt/objects.mk @@ -10,7 +10,7 @@ libfdt_files = fdt.o fdt_ro.o fdt_wip.o fdt_rw.o fdt_sw.o fdt_strerror.o \ fdt_empty_tree.o $(foreach file, $(libfdt_files), \ - $(eval CFLAGS_$(file) = -I$(src)/../../common/libfdt)) + $(eval CFLAGS_$(file) = -I$(src)/../../utils/libfdt)) -platform-common-objs-$(PLATFORM_INCLUDE_LIBFDT) += $(addprefix libfdt/,$(libfdt_files)) -platform-common-genflags-$(PLATFORM_INCLUDE_LIBFDT) += -I$(platform_common_src_dir)/libfdt/ +libsbiutils-objs-$(PLATFORM_INCLUDE_LIBFDT) += $(addprefix libfdt/,$(libfdt_files)) +libsbiutils-genflags-$(PLATFORM_INCLUDE_LIBFDT) += -I$(libsbiutils_dir)/libfdt/ diff --git a/platform/common/libfdt/version.lds b/lib/utils/libfdt/version.lds similarity index 100% rename from platform/common/libfdt/version.lds rename to lib/utils/libfdt/version.lds diff --git a/platform/common/objects.mk b/lib/utils/objects.mk similarity index 82% rename from platform/common/objects.mk rename to lib/utils/objects.mk index 49e9631..95ecd42 100644 --- a/platform/common/objects.mk +++ b/lib/utils/objects.mk @@ -7,4 +7,4 @@ # Anup Patel # -platform-common-objs-y += tinyfdt.o +libsbiutils-objs-y += tinyfdt.o diff --git a/platform/common/serial/objects.mk b/lib/utils/serial/objects.mk similarity index 52% rename from platform/common/serial/objects.mk rename to lib/utils/serial/objects.mk index 67f85b4..fba056b 100644 --- a/platform/common/serial/objects.mk +++ b/lib/utils/serial/objects.mk @@ -7,5 +7,5 @@ # Anup Patel # -platform-common-objs-$(PLATFORM_SERIAL_UART8250) += serial/uart8250.o -platform-common-objs-$(PLATFORM_SERIAL_SIFIVE_UART) += serial/sifive-uart.o +libsbiutils-objs-$(PLATFORM_SERIAL_UART8250) += serial/uart8250.o +libsbiutils-objs-$(PLATFORM_SERIAL_SIFIVE_UART) += serial/sifive-uart.o diff --git a/platform/common/serial/sifive-uart.c b/lib/utils/serial/sifive-uart.c similarity index 98% rename from platform/common/serial/sifive-uart.c rename to lib/utils/serial/sifive-uart.c index de00272..fd6f28d 100644 --- a/platform/common/serial/sifive-uart.c +++ b/lib/utils/serial/sifive-uart.c @@ -9,7 +9,7 @@ #include #include -#include +#include /* clang-format off */ diff --git a/platform/common/serial/uart8250.c b/lib/utils/serial/uart8250.c similarity index 98% rename from platform/common/serial/uart8250.c rename to lib/utils/serial/uart8250.c index ceefb53..eace061 100644 --- a/platform/common/serial/uart8250.c +++ b/lib/utils/serial/uart8250.c @@ -8,7 +8,7 @@ */ #include -#include +#include /* clang-format off */ diff --git a/platform/common/sys/clint.c b/lib/utils/sys/clint.c similarity index 99% rename from platform/common/sys/clint.c rename to lib/utils/sys/clint.c index eba056f..055a513 100644 --- a/platform/common/sys/clint.c +++ b/lib/utils/sys/clint.c @@ -10,7 +10,7 @@ #include #include #include -#include +#include static u32 clint_ipi_hart_count; static volatile void *clint_ipi_base; diff --git a/platform/common/sys/objects.mk b/lib/utils/sys/objects.mk similarity index 73% rename from platform/common/sys/objects.mk rename to lib/utils/sys/objects.mk index 5cb9886..3c13b9b 100644 --- a/platform/common/sys/objects.mk +++ b/lib/utils/sys/objects.mk @@ -7,4 +7,4 @@ # Anup Patel # -platform-common-objs-$(PLATFORM_SYS_CLINT) += sys/clint.o +libsbiutils-objs-$(PLATFORM_SYS_CLINT) += sys/clint.o diff --git a/platform/common/tinyfdt.c b/lib/utils/tinyfdt.c similarity index 99% rename from platform/common/tinyfdt.c rename to lib/utils/tinyfdt.c index 73dd131..da5c0f7 100644 --- a/platform/common/tinyfdt.c +++ b/lib/utils/tinyfdt.c @@ -8,7 +8,7 @@ */ #include -#include +#include #define FDT_MAGIC 0xd00dfeed #define FDT_VERSION 17 diff --git a/platform/kendryte/k210/platform.c b/platform/kendryte/k210/platform.c index 136e58e..299b343 100644 --- a/platform/kendryte/k210/platform.c +++ b/platform/kendryte/k210/platform.c @@ -12,8 +12,8 @@ #include #include #include -#include -#include +#include +#include #include "platform.h" #include "uarths.h" diff --git a/platform/qemu/sifive_u/platform.c b/platform/qemu/sifive_u/platform.c index 470da35..e20d89d 100644 --- a/platform/qemu/sifive_u/platform.c +++ b/platform/qemu/sifive_u/platform.c @@ -11,9 +11,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include /* clang-format off */ diff --git a/platform/qemu/virt/platform.c b/platform/qemu/virt/platform.c index 96e375d..697549f 100644 --- a/platform/qemu/virt/platform.c +++ b/platform/qemu/virt/platform.c @@ -13,9 +13,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include /* clang-format off */ diff --git a/platform/sifive/fu540/platform.c b/platform/sifive/fu540/platform.c index ee2e5a4..9e16562 100644 --- a/platform/sifive/fu540/platform.c +++ b/platform/sifive/fu540/platform.c @@ -15,9 +15,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include /* clang-format off */ diff --git a/scripts/create-binary-archive.sh b/scripts/create-binary-archive.sh index be8cfe1..d5890fc 100755 --- a/scripts/create-binary-archive.sh +++ b/scripts/create-binary-archive.sh @@ -103,10 +103,13 @@ esac # Ensure output directory is present mkdir -p "${BUILD_OUTPUT_PATH}" +# Do a clean build first +make distclean + # Build and install generic library echo "Build and install generic library XLEN=${BUILD_RISCV_XLEN}" echo "" -make -C "${BUILD_OPENSBI_SOURCE_PATH}" O="${BUILD_OUTPUT_PATH}" I="${BUILD_OUTPUT_PATH}/${BUILD_ARCHIVE_NAME}" PLATFORM_RISCV_XLEN="${BUILD_RISCV_XLEN}" install_libsbi -j "${BUILD_NUM_THREADS}" +make -C "${BUILD_OPENSBI_SOURCE_PATH}" O="${BUILD_OUTPUT_PATH}" I="${BUILD_OUTPUT_PATH}/${BUILD_ARCHIVE_NAME}" PLATFORM_RISCV_XLEN="${BUILD_RISCV_XLEN}" install_libsbi install_libsbiutils -j "${BUILD_NUM_THREADS}" echo "" # Build and install relevant platforms