[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCHv4 03/43] arch: Reorganize arch folder to reflect the CPU family schema
Hi Wei, On 07/06/2018 10:03 AM, Wei Chen wrote: As we have introduced UK_FAMILY for build scipts. In order to s/scipts/scripts/ reflect the CPU family schema, we modify the "arch/UK_ARCH" to "arch/UK_FAMILY/UK_ARCH". The "arch/UK_FAMILY" can be used to store the common codes and build scripts for the architectures of same family. For individual architectures, it might make sense to use forward declarations in Compiler.uk and Makefile.uk to include a corresponding file in a subfolder. For instance arm/Makefile.uk includes arm/arm/Makefile.uk when an ARM32 architecture was selected. Signed-off-by: Wei Chen <Wei.Chen@xxxxxxx> --- Makefile | 12 ++++++------ arch/Config.uk | 4 ++-- arch/arm/Compiler.uk | 7 ++----- arch/arm/Makefile.uk | 23 ++++------------------- arch/arm/arm/Compiler.uk | 6 ++++++ arch/arm/{ => arm}/Config.uk | 0 arch/arm/arm/Makefile.uk | 19 +++++++++++++++++++ arch/arm/{ => arm}/divsi3.S | 17 ++++++++--------- arch/arm/{ => arm}/ldivmod.S | 2 +- arch/arm/{ => arm}/ldivmod_helper.c | 0 arch/arm/{ => arm}/qdivrem.c | 0 arch/x86/Compiler.uk | 4 ++++ arch/x86/Makefile.uk | 4 ++++ arch/{ => x86}/x86_64/Compiler.uk | 0 arch/{ => x86}/x86_64/Config.uk | 0 arch/{ => x86}/x86_64/Makefile.uk | 0 16 files changed, 56 insertions(+), 42 deletions(-) create mode 100644 arch/arm/arm/Compiler.uk rename arch/arm/{ => arm}/Config.uk (100%) create mode 100644 arch/arm/arm/Makefile.uk rename arch/arm/{ => arm}/divsi3.S (97%) rename arch/arm/{ => arm}/ldivmod.S (99%) rename arch/arm/{ => arm}/ldivmod_helper.c (100%) rename arch/arm/{ => arm}/qdivrem.c (100%) create mode 100644 arch/x86/Compiler.uk create mode 100644 arch/x86/Makefile.uk rename arch/{ => x86}/x86_64/Compiler.uk (100%) rename arch/{ => x86}/x86_64/Config.uk (100%) rename arch/{ => x86}/x86_64/Makefile.uk (100%) diff --git a/Makefile b/Makefile index 178ebbc..d10f53b 100644 --- a/Makefile +++ b/Makefile @@ -350,12 +350,12 @@ export UK_FAMILY ?= $(shell echo "$(CONFIG_UK_ARCH)" | \# Quick-check if architecture existsifeq ($(filter $(null_targets) print-vars,$(MAKECMDGOALS)),) -ifeq ($(wildcard $(CONFIG_UK_BASE)/arch/$(ARCH)/Makefile.uk),) -$(error Target architecture ($(ARCH)) is currently not supported (could not find $(CONFIG_UK_BASE)/arch/$(ARCH)/Makefile.uk).) +ifeq ($(wildcard $(CONFIG_UK_BASE)/arch/$(UK_FAMILY)/$(ARCH)/Makefile.uk),) +$(error Target architecture ($(ARCH)) is currently not supported (could not find $(CONFIG_UK_BASE)/arch/$(UK_FAMILY)/$(ARCH)/Makefile.uk).) endif-ifeq ($(wildcard arch/$(ARCH)/Compiler.uk),)-$(error Target architecture ($(ARCH)) is currently not supported (could not find $(CONFIG_UK_BASE)/arch/$(ARCH)/Compiler.uk).) +ifeq ($(wildcard $(CONFIG_UK_BASE)/arch/$(UK_FAMILY)/$(ARCH)/Compiler.uk),) +$(error Target architecture ($(ARCH)) is currently not supported (could not find $(CONFIG_UK_BASE)/arch/$(UK_FAMILY)/$(ARCH)/Compiler.uk).) endif endif@@ -394,7 +394,7 @@ unexport MACHINE# Note: Some architectures assign CONFIG_CROSS_COMPILE in their arch/*/Makefile.uk CONFIG_CROSS_COMPILE := $(CROSS_COMPILE:"%"=%)-include $(CONFIG_UK_BASE)/arch/$(CONFIG_UK_ARCH)/Compiler.uk+include $(CONFIG_UK_BASE)/arch/$(UK_FAMILY)/Compiler.uk# Make variables (CC, etc...)LD := $(CONFIG_CROSS_COMPILE)gcc @@ -456,7 +456,7 @@ endif $(foreach E,$(ELIB_DIR), \ $(eval $(call _import_lib,$(E))); \ ) -$(eval $(call _import_lib,$(CONFIG_UK_BASE)/arch/$(CONFIG_UK_ARCH))) # architecture libraries +$(eval $(call _import_lib,$(CONFIG_UK_BASE)/arch/$(UK_FAMILY))) # architecture libraries include $(CONFIG_UK_BASE)/plat/Makefile.uk # platform libraries include $(CONFIG_UK_BASE)/lib/Makefile.uk # libraries include $(CONFIG_UK_BASE)/Makefile.uk # Unikraft base diff --git a/arch/Config.uk b/arch/Config.uk index 36df8d1..9236273 100644 --- a/arch/Config.uk +++ b/arch/Config.uk @@ -13,8 +13,8 @@ config ARCH_ARM_32 endchoiceif (ARCH_X86_64)- source "arch/x86_64/Config.uk" + source "arch/x86/x86_64/Config.uk" endif if (ARCH_ARM_32) - source "arch/arm/Config.uk" + source "arch/arm/arm/Config.uk" endif diff --git a/arch/arm/Compiler.uk b/arch/arm/Compiler.uk index 44a497d..147f662 100644 --- a/arch/arm/Compiler.uk +++ b/arch/arm/Compiler.uk @@ -1,6 +1,3 @@ -# set cross compile -ifeq ($(CONFIG_CROSS_COMPILE),) -ifneq ($(CONFIG_UK_ARCH),$(HOSTARCH)) - CONFIG_CROSS_COMPILE := arm-linux-gnueabihf- -endif +ifeq ($(CONFIG_UK_ARCH),arm) + include $(CONFIG_UK_BASE)/arch/arm/arm/Compiler.uk endif diff --git a/arch/arm/Makefile.uk b/arch/arm/Makefile.uk index b746f70..e59b2a3 100644 --- a/arch/arm/Makefile.uk +++ b/arch/arm/Makefile.uk @@ -1,19 +1,4 @@ -ASFLAGS += -D__ARM_32__ -ASFLAGS += -marm -CFLAGS += -D__ARM_32__ -CFLAGS += -marm -fms-extensions -CXXFLAGS += -D__ARM_32__ -CXXFLAGS += -marm -fms-extensions - -#-march=armv7-a - -CFLAGS-$(CONFIG_MARCH_A20NEON) += -mcpu=cortex-a7 -mtune=cortex-a7 -mfpu=vfpv4-d16 -mfpu=neon-vfpv4 -funsafe-math-optimizations -CXXFLAGS-$(CONFIG_MARCH_A20NEON) += -mcpu=cortex-a7 -mtune=cortex-a7 -mfpu=vfpv4-d16 -mfpu=neon-vfpv4 -funsafe-math-optimizations -CFLAGS-$(CONFIG_MARCH_CORTEXA7) += -mcpu=cortex-a7 -mtune=cortex-a7 -CXXFLAGS-$(CONFIG_MARCH_CORTEXA7) += -mcpu=cortex-a7 -mtune=cortex-a - -$(eval $(call addlib,libarmmath)) -LIBARMMATH_SRCS-$(CONFIG_ARCH_ARM_32) += $(CONFIG_UK_BASE)/arch/arm/divsi3.S -LIBARMMATH_SRCS-$(CONFIG_ARCH_ARM_32) += $(CONFIG_UK_BASE)/arch/arm/ldivmod.S -LIBARMMATH_SRCS-$(CONFIG_ARCH_ARM_32) += $(CONFIG_UK_BASE)/arch/arm/ldivmod_helper.c -LIBARMMATH_SRCS-$(CONFIG_ARCH_ARM_32) += $(CONFIG_UK_BASE)/arch/arm/qdivrem.c +# Include corresponding Makefiles for specified architechtures +ifeq ($(CONFIG_UK_ARCH),arm) + include $(CONFIG_UK_BASE)/arch/arm/arm/Makefile.uk +endif diff --git a/arch/arm/arm/Compiler.uk b/arch/arm/arm/Compiler.uk new file mode 100644 index 0000000..44a497d --- /dev/null +++ b/arch/arm/arm/Compiler.uk @@ -0,0 +1,6 @@ +# set cross compile +ifeq ($(CONFIG_CROSS_COMPILE),) +ifneq ($(CONFIG_UK_ARCH),$(HOSTARCH)) + CONFIG_CROSS_COMPILE := arm-linux-gnueabihf- +endif +endif diff --git a/arch/arm/Config.uk b/arch/arm/arm/Config.uk similarity index 100% rename from arch/arm/Config.uk rename to arch/arm/arm/Config.uk diff --git a/arch/arm/arm/Makefile.uk b/arch/arm/arm/Makefile.uk new file mode 100644 index 0000000..b746f70 --- /dev/null +++ b/arch/arm/arm/Makefile.uk @@ -0,0 +1,19 @@ +ASFLAGS += -D__ARM_32__ +ASFLAGS += -marm +CFLAGS += -D__ARM_32__ +CFLAGS += -marm -fms-extensions +CXXFLAGS += -D__ARM_32__ +CXXFLAGS += -marm -fms-extensions + +#-march=armv7-a + +CFLAGS-$(CONFIG_MARCH_A20NEON) += -mcpu=cortex-a7 -mtune=cortex-a7 -mfpu=vfpv4-d16 -mfpu=neon-vfpv4 -funsafe-math-optimizations +CXXFLAGS-$(CONFIG_MARCH_A20NEON) += -mcpu=cortex-a7 -mtune=cortex-a7 -mfpu=vfpv4-d16 -mfpu=neon-vfpv4 -funsafe-math-optimizations +CFLAGS-$(CONFIG_MARCH_CORTEXA7) += -mcpu=cortex-a7 -mtune=cortex-a7 +CXXFLAGS-$(CONFIG_MARCH_CORTEXA7) += -mcpu=cortex-a7 -mtune=cortex-a + +$(eval $(call addlib,libarmmath)) +LIBARMMATH_SRCS-$(CONFIG_ARCH_ARM_32) += $(CONFIG_UK_BASE)/arch/arm/divsi3.S +LIBARMMATH_SRCS-$(CONFIG_ARCH_ARM_32) += $(CONFIG_UK_BASE)/arch/arm/ldivmod.S +LIBARMMATH_SRCS-$(CONFIG_ARCH_ARM_32) += $(CONFIG_UK_BASE)/arch/arm/ldivmod_helper.c +LIBARMMATH_SRCS-$(CONFIG_ARCH_ARM_32) += $(CONFIG_UK_BASE)/arch/arm/qdivrem.c diff --git a/arch/arm/divsi3.S b/arch/arm/arm/divsi3.S similarity index 97% rename from arch/arm/divsi3.S rename to arch/arm/arm/divsi3.S I understand that you reorganize the folder, and this should just be a pure renaming. So why does the code is modified? index fa92233..23edbf7 100644 --- a/arch/arm/divsi3.S +++ b/arch/arm/arm/divsi3.S @@ -20,7 +20,7 @@#define END(symbol) -/*+/* * stack is aligned as there's a possibility of branching to L_overflow * which makes a C call */ @@ -55,9 +55,9 @@ ENTRY_NP(__aeabi_uidivmod) #endif ENTRY_NP(__udivsi3) .L_udivide: /* r0 = r0 / r1; r1 = r0 % r1 */ - eor r0, r1, r0 - eor r1, r0, r1 - eor r0, r1, r0 + eor r0, r1, r0 + eor r1, r0, r1 + eor r0, r1, r0 /* r0 = r1 / r0; r1 = r1 % r0 */ cmp r0, #1 bcc .L_overflow @@ -86,9 +86,9 @@ ENTRY_NP(__aeabi_idivmod) #endif ENTRY_NP(__divsi3) .L_divide: /* r0 = r0 / r1; r1 = r0 % r1 */ - eor r0, r1, r0 - eor r1, r0, r1 - eor r0, r1, r0 + eor r0, r1, r0 + eor r1, r0, r1 + eor r0, r1, r0 /* r0 = r1 / r0; r1 = r1 % r0 */ cmp r0, #1 bcc .L_overflow @@ -107,7 +107,7 @@ ENTRY_NP(__divsi3)/** If the highest bit of the dividend is set, we have to be - * careful when shifting the divisor. Test this. + * careful when shifting the divisor. Test this. */ movs r1,r1 bpl .L_old_code @@ -401,4 +401,3 @@ ENTRY_NP(__divsi3) END(__aeabi_idiv) END(__aeabi_idivmod) END(__divsi3) - diff --git a/arch/arm/ldivmod.S b/arch/arm/arm/ldivmod.S similarity index 99% rename from arch/arm/ldivmod.S rename to arch/arm/arm/ldivmod.S Same here. index 3c3083b..180227c 100644 --- a/arch/arm/ldivmod.S +++ b/arch/arm/arm/ldivmod.S @@ -34,7 +34,7 @@/** These calculate: - * q = n / m + * q = n / m * With a remainer r. * * They take n in {r0, r1} and m in {r2, r3} then pass them into the diff --git a/arch/arm/ldivmod_helper.c b/arch/arm/arm/ldivmod_helper.c similarity index 100% rename from arch/arm/ldivmod_helper.c rename to arch/arm/arm/ldivmod_helper.c diff --git a/arch/arm/qdivrem.c b/arch/arm/arm/qdivrem.c similarity index 100% rename from arch/arm/qdivrem.c rename to arch/arm/arm/qdivrem.c diff --git a/arch/x86/Compiler.uk b/arch/x86/Compiler.uk new file mode 100644 index 0000000..5f88bd3 --- /dev/null +++ b/arch/x86/Compiler.uk @@ -0,0 +1,4 @@ +# Include forward declarations by corresponding architecutes +ifeq ($(CONFIG_ARCH_X86_64),y) + include $(CONFIG_UK_BASE)/arch/x86/x86_64/Compiler.uk +endif diff --git a/arch/x86/Makefile.uk b/arch/x86/Makefile.uk new file mode 100644 index 0000000..cd0dfb9 --- /dev/null +++ b/arch/x86/Makefile.uk @@ -0,0 +1,4 @@ +# Include forward declarations by corresponding architecutes +ifeq ($(CONFIG_ARCH_X86_64),y) + include $(CONFIG_UK_BASE)/arch/x86/x86_64/Makefile.uk +endif diff --git a/arch/x86_64/Compiler.uk b/arch/x86/x86_64/Compiler.uk similarity index 100% rename from arch/x86_64/Compiler.uk rename to arch/x86/x86_64/Compiler.uk diff --git a/arch/x86_64/Config.uk b/arch/x86/x86_64/Config.uk similarity index 100% rename from arch/x86_64/Config.uk rename to arch/x86/x86_64/Config.uk diff --git a/arch/x86_64/Makefile.uk b/arch/x86/x86_64/Makefile.uk similarity index 100% rename from arch/x86_64/Makefile.uk rename to arch/x86/x86_64/Makefile.uk Cheers, -- Julien Grall _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |