mbox series

[v3,00/10] arm64: Get rid of READ/WRITE_SYSREG32

Message ID 20210505074308.11016-1-michal.orzel@arm.com (mailing list archive)
Headers show
Series arm64: Get rid of READ/WRITE_SYSREG32 | expand

Message

Michal Orzel May 5, 2021, 7:42 a.m. UTC
The purpose of this patch series is to remove usage of 32bit helper
macros READ/WRITE_SYSREG32 on arm64 as the idea of them is
not following the latest ARMv8 specification and mrs/msr instructions
are expecting 64bit values.
According to ARM DDI 0487G.a all the AArch64 system registers
are 64bit wide even though many of them have upper 32bit reserved.
This does not mean that in the newer versions of ARMv8 or in the next
architecture, some of the sysregs will get widen.
Also when dealing with system registers we should use register_t
type.

This patch series removes the use of READ/WRITE_SYSREG32
and replaces these calls with READ/WRITE_SYSREG. The change was
splited into several small patches to make the review proces easier.

This patch series focuses on removing READ/WRITE_SYSREG32.
The next thing to do is to also get rid of vreg_emulate_sysreg32
and other parts related to it like TVM_REG macro.
The final part will be to completely remove macros READ/WRITE_SYSREG32.

Michal Orzel (10):
  arm64/vfp: Get rid of READ/WRITE_SYSREG32
  arm/domain: Get rid of READ/WRITE_SYSREG32
  arm: Modify type of actlr to register_t
  arm/gic: Remove member hcr of structure gic_v3
  arm/gic: Get rid of READ/WRITE_SYSREG32
  arm/p2m: Get rid of READ/WRITE_SYSREG32
  xen/arm: Always access SCTLR_EL2 using READ/WRITE_SYSREG()
  arm/page: Get rid of READ/WRITE_SYSREG32
  arm/time,vtimer: Get rid of READ/WRITE_SYSREG32
  arm64: Change type of hsr, cpsr, spsr_el1 to uint64_t

 xen/arch/arm/arm64/entry.S            |  4 +-
 xen/arch/arm/arm64/traps.c            |  2 +-
 xen/arch/arm/arm64/vfp.c              | 12 ++--
 xen/arch/arm/arm64/vsysreg.c          |  3 +-
 xen/arch/arm/domain.c                 | 22 +++---
 xen/arch/arm/gic-v3-lpi.c             |  2 +-
 xen/arch/arm/gic-v3.c                 | 98 ++++++++++++++-------------
 xen/arch/arm/mm.c                     |  2 +-
 xen/arch/arm/p2m.c                    |  8 +--
 xen/arch/arm/time.c                   | 28 ++++----
 xen/arch/arm/traps.c                  | 34 ++++++----
 xen/arch/arm/vcpreg.c                 | 13 ++--
 xen/arch/arm/vtimer.c                 | 10 +--
 xen/include/asm-arm/arm64/processor.h | 11 +--
 xen/include/asm-arm/arm64/vfp.h       |  6 +-
 xen/include/asm-arm/domain.h          |  6 +-
 xen/include/asm-arm/gic.h             |  6 +-
 xen/include/asm-arm/gic_v3_defs.h     |  2 +
 xen/include/asm-arm/hsr.h             |  2 +-
 xen/include/asm-arm/page.h            |  4 +-
 xen/include/asm-arm/processor.h       |  5 +-
 xen/include/public/arch-arm.h         |  4 +-
 xen/include/public/domctl.h           |  2 +-
 xen/include/public/vm_event.h         |  3 +-
 24 files changed, 153 insertions(+), 136 deletions(-)

Comments

Julien Grall May 10, 2021, 5:19 p.m. UTC | #1
Hi Michal,

On 05/05/2021 08:42, Michal Orzel wrote:
> The purpose of this patch series is to remove usage of 32bit helper
> macros READ/WRITE_SYSREG32 on arm64 as the idea of them is
> not following the latest ARMv8 specification and mrs/msr instructions
> are expecting 64bit values.
> According to ARM DDI 0487G.a all the AArch64 system registers
> are 64bit wide even though many of them have upper 32bit reserved.
> This does not mean that in the newer versions of ARMv8 or in the next
> architecture, some of the sysregs will get widen.
> Also when dealing with system registers we should use register_t
> type.
> 
> This patch series removes the use of READ/WRITE_SYSREG32
> and replaces these calls with READ/WRITE_SYSREG. The change was
> splited into several small patches to make the review proces easier.
> 
> This patch series focuses on removing READ/WRITE_SYSREG32.
> The next thing to do is to also get rid of vreg_emulate_sysreg32
> and other parts related to it like TVM_REG macro.
> The final part will be to completely remove macros READ/WRITE_SYSREG32.
> 
> Michal Orzel (10):
>    arm64/vfp: Get rid of READ/WRITE_SYSREG32
>    arm/domain: Get rid of READ/WRITE_SYSREG32
>    arm: Modify type of actlr to register_t
>    arm/gic: Remove member hcr of structure gic_v3
>    arm/gic: Get rid of READ/WRITE_SYSREG32
>    arm/p2m: Get rid of READ/WRITE_SYSREG32
>    xen/arm: Always access SCTLR_EL2 using READ/WRITE_SYSREG()
>    arm/page: Get rid of READ/WRITE_SYSREG32
>    arm/time,vtimer: Get rid of READ/WRITE_SYSREG32

I have merged the first 9 patches. It looks like...

>    arm64: Change type of hsr, cpsr, spsr_el1 to uint64_t

... this one needs an answer from you at least.

Cheers,