Module Name:    src
Committed By:   jmcneill
Date:           Wed Aug  8 19:01:55 UTC 2018

Modified Files:
        src/sys/arch/arm/cortex: gic_reg.h

Log Message:
Update for GICv3


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/cortex/gic_reg.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/arm/cortex/gic_reg.h
diff -u src/sys/arch/arm/cortex/gic_reg.h:1.6 src/sys/arch/arm/cortex/gic_reg.h:1.7
--- src/sys/arch/arm/cortex/gic_reg.h:1.6	Thu Jun 22 07:02:14 2017
+++ src/sys/arch/arm/cortex/gic_reg.h	Wed Aug  8 19:01:54 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: gic_reg.h,v 1.6 2017/06/22 07:02:14 skrll Exp $	*/
+/*	$NetBSD: gic_reg.h,v 1.7 2018/08/08 19:01:54 jmcneill Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -133,11 +133,20 @@
 
 #define	GICD_ITARGETSRn(n)	(0x800+4*(n)) // Interrupt Processor Targets Registers
 #define	GICD_ICFGRn(n)		(0xC00+4*(n)) // Interrupt Configuration Registers
+#define	GICD_IGRPMODRn(n)	(0xD00+4*(n)) // Interrupt Group Modifier Registers
 #define	GICD_NSACRn(n)		(0xE00+4*(n)) // Non-secure Access Control Registers, optional
 #define	GICD_SGIR		0xF00 // Software Generated Interrupt Register
 #define	GICD_CPENDSGIR(n)	(0xF10+4*(n)) // SGI Clear-Pending Registers
 #define	GICD_SPENDSGIR(n)	(0xF20+4*(n)) // SGI Set-Pending Registers
+#define	GICD_IROUTER(n)		(0x6100+8*(n)) // Interrupt Routing Registers
 
+#define	GICD_CTRL_RWP			__BIT(31)	// GICv3
+#define	GICD_CTRL_E1NWF			__BIT(7)	// GICv3
+#define	GICD_CTRL_DS			__BIT(6)	// GICv3
+#define	GICD_CTRL_ARE_NS		__BIT(5)	// GICv3
+#define	GICD_CTRL_ARE_S			__BIT(4)	// GICv3
+#define	GICD_CTRL_EnableGrp1S		__BIT(2)	// GICv3
+#define	GICD_CTRL_EnableGrp1NS		__BIT(1)	// GICv3
 #define	GICD_CTRL_Enable		__BIT(0)
 
 #define	GICD_TYPER_LSPI			__BITS(15,11)
@@ -175,6 +184,61 @@
 #define	GICD_SGIR_NSATT			__BIT(15)
 #define	GICD_SGIR_SGIINTID		__BITS(3,0)
 
+#define	GICD_IROUTER_Aff3		__BITS(39,32)
+#define	GICD_IROUTER_Interrupt_Routing_mode __BIT(31)
+#define	GICD_IROUTER_Aff2		__BITS(23,16)
+#define	GICD_IROUTER_Aff1		__BITS(15,8)
+#define	GICD_IROUTER_Aff0		__BITS(7,0)
+
+#define	GICR_CTRL		0x0000	// Redistributor Control Register
+#define	GICR_IIDR		0x0004	// Implementor Identification Register
+#define	GICR_TYPER		0x0008	// Redistributor Type Register
+#define	GICR_STATUSR		0x0010	// Error Reporting Status Register, optional
+#define	GICR_WAKER		0x0014	// Redistributor Wake Register
+#define	GICR_SETLPIR		0x0040	// Set LPI Pending Register
+#define	GICR_CLRLPIR		0x0048	// Clear LPI Pending Register
+#define	GICR_PROPBASER		0x0070	// Redistributor Properties Base Address Register
+#define	GICR_PENDBASER		0x0078	// Redistributor LPI Pending Table Base Address Register
+#define	GICR_INVLPIR		0x00A0	// Redistributor Invalidate LPI Register
+#define	GICR_INVALLR		0x00B0	// Redistributor Invalidate All Register
+#define	GICR_SYNCR		0x00C0	// Redistributor Synchronize Register
+
+#define	GICR_IGROUPR0		0x10080	// Interrupt Group Register 0
+#define	GICR_ISENABLER0		0x10100	// Interrupt Set-Enable Register 0
+#define	GICR_ICENABLER0		0x10180	// Interrupt Clear-Enable Register 0
+#define	GICR_ISPENDR0		0x10200	// Interrupt Set-Pend Register 0
+#define	GICR_ICPENDR0		0x10280	// Interrupt Clear-Pend Register 0
+#define	GICR_ISACTIVER0		0x10300	// Interrupt Set-Active Register 0
+#define	GICR_ICACTIVER0		0x10380	// Interrupt Clear-Active Register 0
+#define	GICR_IPRIORITYRn(n)	(0x10400+4*(n)) // Interrupt Priority Registers
+#define	GICR_ICFGRn(n)		(0x10C00+4*(n)) // SGI (0) / PPI (1) Configuration Register
+#define	GICR_IGRPMODR0		0x10D00	// Interrupt Group Modifier Register 0
+#define	GICR_NSACR		0x10E00	// Non-Secure Access Control Register
+
+#define	GICR_CTRL_UWP			__BIT(31)
+#define	GICR_CTRL_DPG1S			__BIT(26)
+#define	GICR_CTRL_DPG1NS		__BIT(25)
+#define	GICR_CTRL_DPG0			__BIT(24)
+#define	GICR_CTRL_RWP			__BIT(3)
+#define	GICR_CTRL_Enable_LPIs		__BIT(0)
+
+#define	GICR_TYPER_Affinity_Value	__BITS(63,32)
+#define	GICR_TYPER_Affinity_Value_Aff3	__BITS(63,56)
+#define	GICR_TYPER_Affinity_Value_Aff2	__BITS(55,48)
+#define	GICR_TYPER_Affinity_Value_Aff1	__BITS(47,40)
+#define	GICR_TYPER_Affinity_Value_Aff0	__BITS(39,32)
+#define	GICR_TYPER_CommonLPIAff		__BITS(25,24)
+#define	GICR_TYPER_Processor_Number	__BITS(23,8)
+#define	GICR_TYPER_DPGS			__BIT(5)
+#define	GICR_TYPER_Last			__BIT(4)
+#define	GICR_TYPER_DirectLPI		__BIT(3)
+#define	GICR_TYPER_VLPIS		__BIT(1)
+#define	GICR_TYPER_PLPIS		__BIT(0)
+
+#define	GICR_WAKER_ChildrenAsleep	__BIT(2)
+#define	GICR_WAKER_ProcessorSleep	__BIT(1)
+
+
 /*
  * GICv1 names
  */

Reply via email to