mbox series

[RFC,0/7] Build XEN with ARM Compiler 6.6.3

Message ID 1573031953-12894-1-git-send-email-andrii.anisov@gmail.com (mailing list archive)
Headers show
Series Build XEN with ARM Compiler 6.6.3 | expand

Message

Andrii Anisov Nov. 6, 2019, 9:19 a.m. UTC
From: Andrii Anisov <andrii_anisov@epam.com>

Dear All,

Here are patches to make XEN (hypervisor only) being able to be compiled for
ARMv8 with ARM Compiler 6.6.3 Long Term Maintenance. ARM compiler of that
version is safety certified, that is the reason for the choice. The chosen
compiler has a number of bugs and deviations from GNU Compiler, which required
correspondent workarounds. These patches are published for those who are
interested in XEN being built by this specific compiler. Also, these patches are
WIP and there is a lot of room for improvement.

Here is the list of ARM Compiler 6.6.3 bugs and deviations affected XEN build:
 - ARM Linker scatter file is pretty primitive, it has no feature to define
   symbols
 - ARM Linker defined symbols are not counted as referred if only mentioned
   in a steering file for rename or resolve
 - C style shift operators are missed among supported scatter file expressions,
   so some needed values are hardcoded in scatter file
 - ARM Compiler tools are not able to rename sections
 - armclang compiles data only C files with SoftVFP attributes
 - static data symbols, moved to an init section, becomes global
 - armclang fails to process .rept assembler directive with an expression as a
   parameter.

The latest issue is addressed in a very primitive way: these patches are ported
on top of commit f11fda966365db591d280ac1522993409e20fd8c, prior to commit
introduced `.rept` directive usage.:

Andrii Anisov (5):
  arm64:armds: ARM Compiler 6.6 does not accept `rx` registers naming
    for AArch64
  arm/gic: Drop pointless assertions
  WIP:arm64:armds: Build XEN with ARM Compiler 6.6
  arm: Introduce dummy empty functions for data only C files
  arm/gic-v3: add GIC version suffix to iomem range variables

Artem Mygaiev (1):
  WIP: Compilation with ARM DS-6 compiler

Julien Grall (1):
  xen: clang: Support correctly cross-compile

 Config.mk                                  |   8 +-
 config/StdGNU.mk                           |  20 ++-
 config/arm32.mk                            |  10 +-
 config/arm64.mk                            |   6 +-
 xen/Rules.mk                               |   8 +
 xen/arch/arm/Makefile                      |  24 +++
 xen/arch/arm/Rules.mk                      |   8 +
 xen/arch/arm/gic-v3.c                      |  68 ++++----
 xen/arch/arm/gic.c                         |   6 -
 xen/arch/arm/platforms/brcm-raspberry-pi.c |   2 +
 xen/arch/arm/platforms/thunderx.c          |   2 +
 xen/arch/arm/xen.scat.S                    | 266 +++++++++++++++++++++++++++++
 xen/arch/arm/xen.steer                     |   5 +
 xen/include/asm-arm/armds.h                |  91 ++++++++++
 xen/include/asm-arm/smccc.h                |  60 +++++++
 xen/xsm/flask/gen-policy.py                |   4 +
 16 files changed, 539 insertions(+), 49 deletions(-)
 create mode 100644 xen/arch/arm/xen.scat.S
 create mode 100644 xen/arch/arm/xen.steer
 create mode 100644 xen/include/asm-arm/armds.h