[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT PATCHv4 11/43] arch/arm64: Add processor optimization GCC flags for arm64



On 10/07/18 08:02, Wei Chen wrote:
Hi Julien,
Hi Wei,

-----Original Message-----
From: Julien Grall <julien.grall@xxxxxxx>
Sent: 2018年7月9日 18:26
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 11/43] arch/arm64: Add processor
optimization GCC flags for arm64

On 09/07/18 10:17, Wei Chen wrote:
Hi Julien,

Hi,

-----Original Message-----
From: Julien Grall <julien.grall@xxxxxxx>
Sent: 2018年7月8日 5:59
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 11/43] arch/arm64: Add
processor
optimization GCC flags for arm64

Hi Wei,

On 07/06/2018 10:03 AM, Wei Chen wrote:
We added serval arm64 CPU models in support list. In this patch,

s/serval/several/


Oh, thanks again!

Cheers,

we check the GCC version and add optimization GCC flags for
selected processor.

Current supported arm64 CPU models:
native, generic, cortex-a53, cortex-a57, cortex-a72, cortex-a73,
cortex-a55 and cortex-a75.

Signed-off-by: Wei Chen <Wei.Chen@xxxxxxx>
---
    arch/arm/arm64/Compiler.uk |  6 ++++++
    arch/arm/arm64/Makefile.uk | 43 ++++++++++++++++++++++++++++++++++++++
    2 files changed, 49 insertions(+)
    create mode 100644 arch/arm/arm64/Compiler.uk
    create mode 100644 arch/arm/arm64/Makefile.uk

diff --git a/arch/arm/arm64/Compiler.uk b/arch/arm/arm64/Compiler.uk
new file mode 100644
index 0000000..4572013
--- /dev/null
+++ b/arch/arm/arm64/Compiler.uk
@@ -0,0 +1,6 @@
+# set cross compile
+ifeq ($(CONFIG_CROSS_COMPILE),)
+ifneq ($(CONFIG_UK_ARCH),$(HOSTARCH))
+       CONFIG_CROSS_COMPILE := aarch64-linux-gnu-
+endif
+endif
diff --git a/arch/arm/arm64/Makefile.uk b/arch/arm/arm64/Makefile.uk
new file mode 100644
index 0000000..f6aeeac
--- /dev/null
+++ b/arch/arm/arm64/Makefile.uk
@@ -0,0 +1,43 @@
+ASFLAGS  += -D__ARM_64__
+CFLAGS   += -D__ARM_64__ -fms-extensions
+CXXFLAGS += -D__ARM_64__ -fms-extensions

I would rather avoid to define yet another macro and re-use __aarch64__
defined by the aarch64 compiler.

It does make sense. But I am not sure if we keep __ARM_64__ here can improve
the compatibility for other libraries. Because for internal libraries we can
__aarch64__ uniformly. But for external libraries, we change them to
__aarch64__
Easily.

If other libraries are using __ARM_64__, then I would say go an fix your
libraries :). But I would expect most of them to use what's the compiler
provide.


Do you know from which version the GCC started to support __aarch64__ macro
by default? Or if we don't use GCC, does other compiler like LLVM still
provide __aarch64__ macro?

I don't know which GCC version that started to support __aarch64__, but I am ready to be this was there since the beginning as there are counterpart for other architectures [1].

Note that, we have been using that macro on Xen since that arm64 port was added (5 years ago).

For other compiler, while this is a GNU C extension, this is also at least defined by Clang. I would not be surprised if other supports that too as some headers will require to have different behavior depending on the architecture.

Cheers,

[1] https://sourceforge.net/p/predef/wiki/Architectures/

--
Julien Grall

_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.