[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 Julien, > -----Original Message----- > From: Julien Grall <julien.grall@xxxxxxx> > Sent: 2018年7月8日 5:44 > To: Wei Chen <Wei.Chen@xxxxxxx>; minios-devel@xxxxxxxxxxxxxxxxxxxx; > simon.kuenzer@xxxxxxxxx > Cc: Kaly Xin <Kaly.Xin@xxxxxxx>; nd <nd@xxxxxxx> > Subject: 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/ Thanks, > > > 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 exists > > ifeq ($(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 > > endchoice > > > > if (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? > I was curious about this before. Because in this file, there are space characters at the end of lines in these files. > > 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 |