VirtualBox

Changeset 99733 in vbox


Ignore:
Timestamp:
May 10, 2023 5:26:48 PM (19 months ago)
Author:
vboxsync
Message:

iprt/armv8.h: Some more definitions related to GIC, bugref:10404

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/armv8.h

    r99711 r99733  
    396396/** ICC_IGRPEN1_EL1 register - RW. */
    397397#define ARMV8_AARCH64_SYSREG_ICC_IGRPEN1_EL1        ARMV8_AARCH64_SYSREG_ID_CREATE(3, 0, 12, 12, 7)
     398
     399/** CNTV_CTL_EL0 register - RW. */
     400#define ARMV8_AARCH64_SYSREG_CNTV_CTL_EL0           ARMV8_AARCH64_SYSREG_ID_CREATE(3, 3, 14,  3, 1)
    398401/** @} */
    399402
     
    990993
    991994
     995/** @name ICC_PMR_EL1 -
     996 * @{ */
     997/** Bit 0 - 7 - Priority - The priority mask level for the CPU interface. */
     998#define ARMV8_ICC_PMR_EL1_AARCH64_PRIORITY                      UINT64_C(0xff)
     999#define ARMV8_ICC_PMR_EL1_AARCH64_PRIORITY_GET(a_Pmr)           ((a_Pmr) & ARMV8_ICC_PMR_EL1_AARCH64_PRIORITY)
     1000#define ARMV8_ICC_PMR_EL1_AARCH64_PRIORITY_SET(a_Prio)          ((a_Prio) & ARMV8_ICC_PMR_EL1_AARCH64_PRIORITY)
     1001/** @} */
     1002
     1003
     1004/** @name ICC_BPR0_EL1 - The group priority for Group 0 interrupts.
     1005 * @{ */
     1006/** Bit 0 - 2 - BinaryPoint - Controls how the 8-bit interrupt priority field is split into a group priority and subpriority field. */
     1007#define ARMV8_ICC_BPR0_EL1_AARCH64_BINARYPOINT                  (RT_BIT_64(0) | RT_BIT_64(1) | RT_BIT_64(2))
     1008#define ARMV8_ICC_BPR0_EL1_AARCH64_BINARYPOINT_GET(a_Bpr0)      ((a_Bpr0) & ARMV8_ICC_BPR0_EL1_AARCH64_BINARYPOINT)
     1009#define ARMV8_ICC_BPR0_EL1_AARCH64_BINARYPOINT_SET(a_BinaryPt)  ((a_BinaryPt) & ARMV8_ICC_BPR0_EL1_AARCH64_BINARYPOINT)
     1010/** @} */
     1011
     1012
     1013/** @name ICC_BPR1_EL1 - The group priority for Group 1 interrupts.
     1014 * @{ */
     1015/** Bit 0 - 2 - BinaryPoint - Controls how the 8-bit interrupt priority field is split into a group priority and subpriority field. */
     1016#define ARMV8_ICC_BPR1_EL1_AARCH64_BINARYPOINT                  (RT_BIT_64(0) | RT_BIT_64(1) | RT_BIT_64(2))
     1017#define ARMV8_ICC_BPR1_EL1_AARCH64_BINARYPOINT_GET(a_Bpr1)      ((a_Bpr1) & ARMV8_ICC_BPR1_EL1_AARCH64_BINARYPOINT)
     1018#define ARMV8_ICC_BPR1_EL1_AARCH64_BINARYPOINT_SET(a_BinaryPt)  ((a_BinaryPt) & ARMV8_ICC_BPR1_EL1_AARCH64_BINARYPOINT)
     1019/** @} */
     1020
     1021
     1022/** @name ICC_CTLR_EL1 - Interrupt Controller Control Register (EL1)
     1023 * @{ */
     1024/** Bit 0 - Common Binary Pointer Register - RW. */
     1025#define ARMV8_ICC_CTLR_EL1_AARCH64_CBPR                         RT_BIT_64(0)
     1026#define ARMV8_ICC_CTLR_EL1_AARCH64_CBPR_BIT                     0
     1027/** Bit 1 - EOI mode for current security state, when set ICC_DIR_EL1 provides interrupt deactivation functionality - RW. */
     1028#define ARMV8_ICC_CTLR_EL1_AARCH64_EOIMODE                      RT_BIT_64(1)
     1029#define ARMV8_ICC_CTLR_EL1_AARCH64_EOIMODE_BIT                  1
     1030/** Bit 7 - Priority Mask Hint Enable - RW (under circumstances). */
     1031#define ARMV8_ICC_CTLR_EL1_AARCH64_PMHE                         RT_BIT_64(7)
     1032#define ARMV8_ICC_CTLR_EL1_AARCH64_PMHE_BIT                     7
     1033/** Bit 8 - 10 - Priority bits - RO. */
     1034#define ARMV8_ICC_CTLR_EL1_AARCH64_PRIBITS                      (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10))
     1035#define ARMV8_ICC_CTLR_EL1_AARCH64_PRIBITS_SET(a_PriBits)       (((a_PriBits) << 8) & ARMV8_ICC_CTLR_EL1_AARCH64_PRIBITS)
     1036/** Bit 11 - 13 - Interrupt identifier bits - RO. */
     1037#define ARMV8_ICC_CTLR_EL1_AARCH64_IDBITS                       (RT_BIT_64(11) | RT_BIT_64(12) | RT_BIT_64(13))
     1038#define ARMV8_ICC_CTLR_EL1_AARCH64_IDBITS_SET(a_IdBits)         (((a_IdBits) << 11) & ARMV8_ICC_CTLR_EL1_AARCH64_IDBITS)
     1039/** INTIDS are 16-bit wide. */
     1040# define ARMV8_ICC_CTLR_EL1_AARCH64_IDBITS_16BITS               0
     1041/** INTIDS are 24-bit wide. */
     1042# define ARMV8_ICC_CTLR_EL1_AARCH64_IDBITS_24BITS               1
     1043/** Bit 14 - SEI Supported - RO. */
     1044#define ARMV8_ICC_CTLR_EL1_AARCH64_SEIS                         RT_BIT_64(14)
     1045#define ARMV8_ICC_CTLR_EL1_AARCH64_SEIS_BIT                     14
     1046/** Bit 15 - Affinity 3 Valid - RO. */
     1047#define ARMV8_ICC_CTLR_EL1_AARCH64_A3V                          RT_BIT_64(15)
     1048#define ARMV8_ICC_CTLR_EL1_AARCH64_A3V_BIT                      15
     1049/** Bit 18 - Range Selector Support - RO. */
     1050#define ARMV8_ICC_CTLR_EL1_AARCH64_RSS                          RT_BIT_64(18)
     1051#define ARMV8_ICC_CTLR_EL1_AARCH64_RSS_BIT                      18
     1052/** Bit 19 - Extended INTID range supported - RO. */
     1053#define ARMV8_ICC_CTLR_EL1_AARCH64_EXTRANGE                     RT_BIT_64(19)
     1054#define ARMV8_ICC_CTLR_EL1_AARCH64_EXTRANGE_BIT                 19
     1055/** All RW bits. */
     1056#define ARMV8_ICC_CTLR_EL1_RW                                   (ARMV8_ICC_CTLR_EL1_AARCH64_CBPR | ARMV8_ICC_CTLR_EL1_AARCH64_EOIMODE | ARMV8_ICC_CTLR_EL1_AARCH64_PMHE)
     1057/** All RO bits (including Res0). */
     1058#define ARMV8_ICC_CTLR_EL1_RO                                   ~ARMV8_ICC_CTLR_EL1_RW
     1059/** @} */
     1060
     1061
     1062/** @name ICC_IGRPEN0_EL1 - Interrupt Controller Interrupt Group 0 Enable Register (EL1)
     1063 * @{ */
     1064/** Bit 0 - Enables Group 0 interrupts for the current Security state. */
     1065#define ARMV8_ICC_IGRPEN0_EL1_AARCH64_ENABLE                    RT_BIT_64(0)
     1066#define ARMV8_ICC_IGRPEN0_EL1_AARCH64_ENABLE_BIT                0
     1067/** @} */
     1068
     1069/** @name ICC_IGRPEN1_EL1 - Interrupt Controller Interrupt Group 1 Enable Register (EL1)
     1070 * @{ */
     1071/** Bit 0 - Enables Group 1 interrupts for the current Security state. */
     1072#define ARMV8_ICC_IGRPEN1_EL1_AARCH64_ENABLE                    RT_BIT_64(0)
     1073#define ARMV8_ICC_IGRPEN1_EL1_AARCH64_ENABLE_BIT                0
     1074/** @} */
     1075
     1076
     1077
     1078/** @name CNTV_CTL_EL0 - Counter-timer Virtual Timer Control register.
     1079 * @{ */
     1080/** Bit 0 - Enables the timer. */
     1081#define ARMV8_CNTV_CTL_EL0_AARCH64_ENABLE                       RT_BIT_64(0)
     1082#define ARMV8_CNTV_CTL_EL0_AARCH64_ENABLE_BIT                   0
     1083/** Bit 1 - Timer interrupt mask bit. */
     1084#define ARMV8_CNTV_CTL_EL0_AARCH64_IMASK                        RT_BIT_64(1)
     1085#define ARMV8_CNTV_CTL_EL0_AARCH64_IMASK_BIT                    1
     1086/** Bit 2 - Timer status bit. */
     1087#define ARMV8_CNTV_CTL_EL0_AARCH64_ISTATUS                      RT_BIT_64(2)
     1088#define ARMV8_CNTV_CTL_EL0_AARCH64_ISTATUS_BIT                  2
     1089/** @} */
     1090
     1091
    9921092/** @} */
    9931093
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette