Module Name: src Committed By: jmcneill Date: Wed Aug 8 19:00:53 UTC 2018
Modified Files: src/sys/arch/aarch64/include: armreg.h Log Message: Add GICv3 system registers To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/arch/aarch64/include/armreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/aarch64/include/armreg.h diff -u src/sys/arch/aarch64/include/armreg.h:1.14 src/sys/arch/aarch64/include/armreg.h:1.15 --- src/sys/arch/aarch64/include/armreg.h:1.14 Sun Aug 5 07:49:02 2018 +++ src/sys/arch/aarch64/include/armreg.h Wed Aug 8 19:00:53 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: armreg.h,v 1.14 2018/08/05 07:49:02 skrll Exp $ */ +/* $NetBSD: armreg.h,v 1.15 2018/08/08 19:00:53 jmcneill Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -66,6 +66,11 @@ reg_##regname##_write(uint64_t __val) #define AARCH64REG_WRITEIMM_INLINE(regname) \ AARCH64REG_WRITEIMM_INLINE2(regname, regname) + +#define AARCH64REG_READWRITE_INLINE2(regname, regdesc) \ + AARCH64REG_READ_INLINE2(regname, regdesc) \ + AARCH64REG_WRITE_INLINE2(regname, regdesc) + /* * System registers available at EL0 (user) */ @@ -951,17 +956,69 @@ AARCH64REG_WRITE_INLINE(cntvct_el0) #define ID_AA64PFR0_EL1_EL0_64 1 #define ID_AA64PFR0_EL1_EL0_64_32 2 +/* + * GICv3 system registers + */ +AARCH64REG_READWRITE_INLINE2(icc_sre_el1, s3_0_c12_c12_5) +AARCH64REG_READWRITE_INLINE2(icc_ctlr_el1, s3_0_c12_c12_4) +AARCH64REG_READWRITE_INLINE2(icc_pmr_el1, s3_0_c4_c6_0) +AARCH64REG_READWRITE_INLINE2(icc_bpr0_el1, s3_0_c12_c8_3) +AARCH64REG_READWRITE_INLINE2(icc_bpr1_el1, s3_0_c12_c12_3) +AARCH64REG_READWRITE_INLINE2(icc_igrpen0_el1, s3_0_c12_c12_6) +AARCH64REG_READWRITE_INLINE2(icc_igrpen1_el1, s3_0_c12_c12_7) +AARCH64REG_READWRITE_INLINE2(icc_eoir0_el1, s3_0_c12_c8_1) +AARCH64REG_READWRITE_INLINE2(icc_eoir1_el1, s3_0_c12_c12_1) +AARCH64REG_READWRITE_INLINE2(icc_sgi1r_el1, s3_0_c12_c11_5) +AARCH64REG_READ_INLINE2(icc_iar1_el1, s3_0_c12_c12_0) + // ICC_SRE_EL1: Interrupt Controller System Register Enable register -#define ICC_SRE_EL1_SRE __BIT(0) -#define ICC_SRE_EL1_DFB __BIT(1) -#define ICC_SRE_EL1_DIB __BIT(2) - -// ICC_SRE_EL2: Interrupt Controller System Register Enable register -#define ICC_SRE_EL2_SRE __BIT(0) -#define ICC_SRE_EL2_DFB __BIT(1) -#define ICC_SRE_EL2_DIB __BIT(2) -#define ICC_SRE_EL2_EN __BIT(3) +#define ICC_SRE_EL1_DIB __BIT(2) +#define ICC_SRE_EL1_DFB __BIT(1) +#define ICC_SRE_EL1_SRE __BIT(0) + +// ICC_BPR[01]_EL1: Interrupt Controller Binary Point Register 0/1 +#define ICC_BPR_EL1_BinaryPoint __BITS(2,0) + +// ICC_CTLR_EL1: Interrupt Controller Control Register +#define ICC_CTLR_EL1_A3V __BIT(15) +#define ICC_CTLR_EL1_SEIS __BIT(14) +#define ICC_CTLR_EL1_IDbits __BITS(13,11) +#define ICC_CTLR_EL1_PRIbits __BITS(10,8) +#define ICC_CTLR_EL1_PMHE __BIT(6) +#define ICC_CTLR_EL1_EOImode __BIT(1) +#define ICC_CTLR_EL1_CBPR __BIT(0) + +// ICC_IGRPEN[01]_EL1: Interrupt Controller Interrupt Group 0/1 Enable register +#define ICC_IGRPEN_EL1_Enable __BIT(0) + +// ICC_SGI[01]R_EL1: Interrupt Controller Software Generated Interrupt Group 0/1 Register +#define ICC_SGIR_EL1_Aff3 __BITS(55,48) +#define ICC_SGIR_EL1_IRM __BIT(40) +#define ICC_SGIR_EL1_Aff2 __BITS(39,32) +#define ICC_SGIR_EL1_INTID __BITS(27,24) +#define ICC_SGIR_EL1_Aff1 __BITS(23,16) +#define ICC_SGIR_EL1_TargetList __BITS(15,0) +#define ICC_SGIR_EL1_Aff (ICC_SGIR_EL1_Aff3|ICC_SGIR_EL1_Aff2|ICC_SGIR_EL1_Aff1) + +// ICC_IAR[01]_EL1: Interrupt Controller Interrupt Acknowledge Register 0/1 +#define ICC_IAR_INTID __BITS(23,0) +#define ICC_IAR_INTID_SPURIOUS 1023 + +/* + * GICv3 REGISTER ACCESS + */ +#define icc_sre_read reg_icc_sre_el1_read +#define icc_sre_write reg_icc_sre_el1_write +#define icc_pmr_write reg_icc_pmr_el1_write +#define icc_bpr0_write reg_icc_bpr0_el1_write +#define icc_bpr1_write reg_icc_bpr1_el1_write +#define icc_ctlr_read reg_icc_ctlr_el1_read +#define icc_ctlr_write reg_icc_ctlr_el1_write +#define icc_igrpen1_write reg_icc_igrpen1_el1_write +#define icc_sgi1r_write reg_icc_sgi1r_el1_write +#define icc_iar1_read reg_icc_iar1_el1_read +#define icc_eoi1r_write reg_icc_eoir1_el1_write /* * GENERIC TIMER REGISTER ACCESS