LCOV - code coverage report
Current view: top level - zephyr/arch/arm/cortex_a_r - cpu.h Coverage Total Hit
Test: new.info Lines: 0.0 % 69 0
Test Date: 2025-09-05 20:47:19

            Line data    Source code
       1            0 : /*
       2              :  * Copyright (c) 2018 Lexmark International, Inc.
       3              :  * Copyright 2024 Arm Limited and/or its affiliates <open-source-office@arm.com>
       4              :  *
       5              :  * SPDX-License-Identifier: Apache-2.0
       6              :  */
       7              : 
       8              : #ifndef ZEPHYR_INCLUDE_ARCH_ARM_CORTEX_A_R_CPU_H_
       9              : #define ZEPHYR_INCLUDE_ARCH_ARM_CORTEX_A_R_CPU_H_
      10              : 
      11              : #if defined(CONFIG_ARM_MPU)
      12              : #include <zephyr/arch/arm/cortex_a_r/mpu.h>
      13              : #endif
      14              : 
      15              : /*
      16              :  * SCTLR register bit assignments
      17              :  */
      18            0 : #define SCTLR_MPU_ENABLE        (1 << 0)
      19              : 
      20            0 : #define MODE_USR        0x10
      21            0 : #define MODE_FIQ        0x11
      22            0 : #define MODE_IRQ        0x12
      23            0 : #define MODE_SVC        0x13
      24            0 : #define MODE_ABT        0x17
      25            0 : #define MODE_HYP        0x1a
      26            0 : #define MODE_UND        0x1b
      27            0 : #define MODE_SYS        0x1f
      28            0 : #define MODE_MASK       0x1f
      29              : 
      30            0 : #define E_BIT   (1 << 9)
      31            0 : #define A_BIT   (1 << 8)
      32            0 : #define I_BIT   (1 << 7)
      33            0 : #define F_BIT   (1 << 6)
      34            0 : #define T_BIT   (1 << 5)
      35              : 
      36            0 : #define HIVECS  (1 << 13)
      37              : 
      38            0 : #define CPACR_NA        (0U)
      39            0 : #define CPACR_FA        (3U)
      40              : 
      41            0 : #define CPACR_CP10(r)   (r << 20)
      42            0 : #define CPACR_CP11(r)   (r << 22)
      43              : 
      44            0 : #define FPEXC_EN        (1 << 30)
      45              : 
      46            0 : #define DFSR_DOMAIN_SHIFT       (4)
      47            0 : #define DFSR_DOMAIN_MASK        (0xf)
      48            0 : #define DFSR_FAULT_4_MASK       (1 << 10)
      49            0 : #define DFSR_WRITE_MASK         (1 << 11)
      50            0 : #define DFSR_AXI_SLAVE_MASK     (1 << 12)
      51              : 
      52              : /* Armv8-R AArch32 architecture profile */
      53            0 : #define VBAR_MASK               (0xFFFFFFE0U)
      54            0 : #define SCTLR_M_BIT             BIT(0)
      55            0 : #define SCTLR_A_BIT             BIT(1)
      56            0 : #define SCTLR_C_BIT             BIT(2)
      57            0 : #define SCTLR_I_BIT             BIT(12)
      58              : 
      59              : /* Armv8-R Cortex-R52 Cache Segregation Control Register */
      60            0 : #define IMP_CSCTLR_DFLW_SHIFT   (0)
      61            0 : #define IMP_CSCTLR_IFLW_SHIFT   (8)
      62            0 : #define IMP_CSCTLR(iway, dway)  ((iway << IMP_CSCTLR_IFLW_SHIFT) | \
      63              :                                 ((dway << IMP_CSCTLR_DFLW_SHIFT)))
      64              : 
      65              : /* Hyp System Control Register */
      66            0 : #define HSCTLR_RES1             (BIT(29) | BIT(28) | BIT(23) | \
      67              :                                  BIT(22) | BIT(18) | BIT(16) | \
      68              :                                  BIT(11) | BIT(4)  | BIT(3))
      69              : 
      70              : /* Hyp Auxiliary Control Register */
      71            0 : #define HACTLR_CPUACTLR         BIT(0)
      72            0 : #define HACTLR_CDBGDCI          BIT(1)
      73            0 : #define HACTLR_FLASHIFREGIONR   BIT(7)
      74            0 : #define HACTLR_PERIPHPREGIONR   BIT(8)
      75            0 : #define HACTLR_QOSR_BIT         BIT(9)
      76            0 : #define HACTLR_BUSTIMEOUTR_BIT  BIT(10)
      77            0 : #define HACTLR_INTMONR_BIT      BIT(12)
      78            0 : #define HACTLR_ERR_BIT          BIT(13)
      79              : 
      80            0 : #define HACTLR_INIT (HACTLR_ERR_BIT | HACTLR_INTMONR_BIT | \
      81              :                      HACTLR_BUSTIMEOUTR_BIT | HACTLR_QOSR_BIT | \
      82              :                      HACTLR_PERIPHPREGIONR | HACTLR_FLASHIFREGIONR | \
      83              :                      HACTLR_CDBGDCI | HACTLR_CPUACTLR)
      84              : /* ARMv8 Timer */
      85            0 : #define CNTV_CTL_ENABLE_BIT     BIT(0)
      86            0 : #define CNTV_CTL_IMASK_BIT      BIT(1)
      87              : 
      88              : /* Interrupt Controller System Register Enable Register */
      89            0 : #define ICC_SRE_ELx_SRE_BIT     BIT(0)
      90            0 : #define ICC_SRE_ELx_DFB_BIT     BIT(1)
      91            0 : #define ICC_SRE_ELx_DIB_BIT     BIT(2)
      92            0 : #define ICC_SRE_EL3_EN_BIT      BIT(3)
      93              : 
      94              : /* MPIDR mask to extract Aff0, Aff1, and Aff2 */
      95            0 : #define MPIDR_AFFLVL_MASK (0xffffff)
      96              : 
      97            0 : #define MPIDR_AFF0_SHIFT        (0)
      98            0 : #define MPIDR_AFF1_SHIFT        (8)
      99            0 : #define MPIDR_AFF2_SHIFT        (16)
     100              : 
     101            0 : #define MPIDR_AFFLVL(mpidr, aff_level) \
     102              :                 (((mpidr) >> MPIDR_AFF##aff_level##_SHIFT) & MPIDR_AFFLVL_MASK)
     103              : 
     104            0 : #define GET_MPIDR()             read_sysreg(mpidr)
     105            0 : #define MPIDR_TO_CORE(mpidr)    MPIDR_AFFLVL(mpidr, 0)
     106              : 
     107              : /* ICC SGI macros */
     108            0 : #define SGIR_TGT_MASK           (0xffff)
     109            0 : #define SGIR_AFF1_SHIFT         (16)
     110            0 : #define SGIR_AFF2_SHIFT         (32)
     111            0 : #define SGIR_AFF3_SHIFT         (48)
     112            0 : #define SGIR_AFF_MASK           (0xff)
     113            0 : #define SGIR_INTID_SHIFT        (24)
     114            0 : #define SGIR_INTID_MASK         (0xf)
     115            0 : #define SGIR_IRM_SHIFT          (40)
     116            0 : #define SGIR_IRM_MASK           (0x1)
     117            0 : #define SGIR_IRM_TO_AFF         (0)
     118              : 
     119            0 : #define GICV3_SGIR_VALUE(_aff3, _aff2, _aff1, _intid, _irm, _tgt)       \
     120              :         ((((uint64_t) (_aff3) & SGIR_AFF_MASK) << SGIR_AFF3_SHIFT) |  \
     121              :          (((uint64_t) (_irm) & SGIR_IRM_MASK) << SGIR_IRM_SHIFT) |    \
     122              :          (((uint64_t) (_aff2) & SGIR_AFF_MASK) << SGIR_AFF2_SHIFT) |  \
     123              :          (((_intid) & SGIR_INTID_MASK) << SGIR_INTID_SHIFT) |         \
     124              :          (((_aff1) & SGIR_AFF_MASK) << SGIR_AFF1_SHIFT) |             \
     125              :          ((_tgt) & SGIR_TGT_MASK))
     126              : 
     127              : #endif /* ZEPHYR_INCLUDE_ARCH_ARM_CORTEX_A_R_CPU_H_ */
        

Generated by: LCOV version 2.0-1