Module Name:    src
Committed By:   nonaka
Date:           Sat Apr 22 04:23:17 UTC 2017

Modified Files:
        src/sys/arch/x86/include: i82489reg.h specialreg.h

Log Message:
Add x2APIC register definitions.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/x86/include/i82489reg.h
cvs rdiff -u -r1.95 -r1.96 src/sys/arch/x86/include/specialreg.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/x86/include/i82489reg.h
diff -u src/sys/arch/x86/include/i82489reg.h:1.13 src/sys/arch/x86/include/i82489reg.h:1.14
--- src/sys/arch/x86/include/i82489reg.h:1.13	Fri Jul 17 05:16:09 2015
+++ src/sys/arch/x86/include/i82489reg.h	Sat Apr 22 04:23:17 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: i82489reg.h,v 1.13 2015/07/17 05:16:09 msaitoh Exp $	*/
+/*	$NetBSD: i82489reg.h,v 1.14 2017/04/22 04:23:17 nonaka Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2008 The NetBSD Foundation, Inc.
@@ -35,29 +35,30 @@
  * "local" APIC.
  */
 
-#define	LAPIC_ID		0x020	/* ID. RW */
+#define	LAPIC_ID		0x020	/* ID. (xAPIC: RW, x2APIC: RO) */
 #	define LAPIC_ID_MASK		0xff000000
 #	define LAPIC_ID_SHIFT		24
 
-#define LAPIC_VERS		0x030	/* Version. R */
+#define LAPIC_VERS		0x030	/* Version. RO */
 #	define LAPIC_VERSION_MASK	0x000000ff
 #	define LAPIC_VERSION_LVT_MASK	0x00ff0000
 #	define LAPIC_VERSION_LVT_SHIFT	16
+#	define LAPIC_VERSION_DIRECTED_EOI 0x01000000
 
 #define LAPIC_TPRI		0x080	/* Task Prio. RW */
 #	define LAPIC_TPRI_MASK		0x000000ff
 #	define LAPIC_TPRI_INT_MASK	0x000000f0
 #	define LAPIC_TPRI_SUB_MASK	0x0000000f
 
-#define LAPIC_APRI		0x090	/* Arbitration prio R */
+#define LAPIC_APRI		0x090	/* Arbitration prio (xAPIC: RO, x2APIC: NA) */
 #	define LAPIC_APRI_MASK		0x000000ff
 
-#define LAPIC_PPRI		0x0a0	/* Processor prio. R */
+#define LAPIC_PPRI		0x0a0	/* Processor prio. RO */
 #define LAPIC_EOI		0x0b0	/* End Int. W */
-#define LAPIC_RRR		0x0c0	/* Remote read R */
-#define LAPIC_LDR		0x0d0	/* Logical dest. RW */
+#define LAPIC_RRR		0x0c0	/* Remote read (xAPIC: RO, x2APIC: NA) */
+#define LAPIC_LDR		0x0d0	/* Logical dest. (xAPIC: RW, x2APIC: RO) */
 
-#define LAPIC_DFR		0x0e0	/* Dest. format RW */
+#define LAPIC_DFR		0x0e0	/* Dest. format (xAPIC: RW, x2APIC: NA) */
 #	define LAPIC_DFR_MASK		0xf0000000
 #	define LAPIC_DFR_FLAT		0xf0000000
 #	define LAPIC_DFR_CLUSTER	0x00000000
@@ -70,27 +71,30 @@
 #	define LAPIC_SVR_SWEN		0x00000100
 #	define LAPIC_SVR_FOCUS		0x00000200
 #	define LAPIC_SVR_FDIS		0x00000200
+#	define LAPIC_SVR_EOI_BC_DIS	0x00001000
 
-#define LAPIC_ISR	0x100		/* In-Service Status */
-#define LAPIC_TMR	0x180		/* Trigger Mode */
-#define LAPIC_IRR	0x200		/* Interrupt Req */
-#define LAPIC_ESR	0x280		/* Err status. R */
+#define LAPIC_ISR	0x100		/* In-Service Status RO */
+#define LAPIC_TMR	0x180		/* Trigger Mode RO */
+#define LAPIC_IRR	0x200		/* Interrupt Req RO */
+#define LAPIC_ESR	0x280		/* Err status. RW */
 
-#define LAPIC_ICRLO	0x300		/* Int. cmd. RW */
-#	define LAPIC_DLMODE_MASK	0x00000700
+#define LAPIC_LVT_CMCI	0x2f0		/* LVT CMCI RW */
+
+#define LAPIC_ICRLO	0x300		/* Int. cmd. (xAPIC: RW, x2APIC: RW64) */
+#	define LAPIC_DLMODE_MASK	0x00000700	/* Delivery Mode */
 #	define LAPIC_DLMODE_FIXED	0x00000000
-#	define LAPIC_DLMODE_LOW		0x00000100
+#	define LAPIC_DLMODE_LOW		0x00000100	/* N/A in x2APIC mode */
 #	define LAPIC_DLMODE_SMI		0x00000200
 #	define LAPIC_DLMODE_NMI		0x00000400
 #	define LAPIC_DLMODE_INIT	0x00000500
 #	define LAPIC_DLMODE_STARTUP	0x00000600
-#	define LAPIC_DLMODE_EXTINT	0x00000700
+#	define LAPIC_DLMODE_EXTINT	0x00000700	/* N/A in x2APIC mode */
 
 #	define LAPIC_DSTMODE_PHYS	0x00000000
 #	define LAPIC_DSTMODE_LOG	0x00000800
 
-#	define LAPIC_DLSTAT_BUSY	0x00001000
-#	define LAPIC_DLSTAT_IDLE	0x00000000
+#	define LAPIC_DLSTAT_BUSY	0x00001000	/* N/A in x2APIC mode */
+#	define LAPIC_DLSTAT_IDLE	0x00000000	/* N/A in x2APIC mode */
 
 #	define LAPIC_LEVEL_MASK		0x00004000
 #	define LAPIC_LEVEL_ASSERT	0x00004000
@@ -106,8 +110,7 @@
 #	define LAPIC_DEST_ALLINCL	0x00080000
 #	define LAPIC_DEST_ALLEXCL	0x000c0000
 
-
-#define LAPIC_ICRHI	0x310		/* Int. cmd. RW */
+#define LAPIC_ICRHI	0x310		/* Int. cmd. (xAPIC: RW, x2APIC: NA) */
 
 #define LAPIC_LVTT	0x320		/* Loc.vec.(timer) RW */
 #	define LAPIC_LVTT_VEC_MASK	0x000000ff
@@ -115,9 +118,15 @@
 #	define LAPIC_LVTT_M		0x00010000
 #	define LAPIC_LVTT_TM		0x00020000
 
-#define LAPIC_TMINT	0x330		/* Loc.vec (Thermal) */
-#define LAPIC_PCINT	0x340		/* Loc.vec (Perf Mon) */
+#define LAPIC_TMINT	0x330		/* Loc.vec (Thermal) RW */
+#define LAPIC_PCINT	0x340		/* Loc.vec (Perf Mon) RW */
 #define LAPIC_LVINT0	0x350		/* Loc.vec (LINT0) RW */
+#	define LAPIC_LVT_DM_MASK	0x00000700
+#	define LAPIC_LVT_DM_FIXED	0x00000000
+#	define LAPIC_LVT_DM_SMI		0x00000200
+#	define LAPIC_LVT_DM_NMI		0x00000400
+#	define LAPIC_LVT_DM_INIT	0x00000500
+#	define LAPIC_LVT_DM_EXTINT	0x00000700
 #	define LAPIC_LVT_MASKED		0x00010000
 #	define LAPIC_LVT_LEVTRIG	0x00008000
 #	define LAPIC_LVT_REMOTE_IRR	0x00004000
@@ -129,7 +138,7 @@
 #define LAPIC_ICR_TIMER	0x380		/* Initial count RW */
 #define LAPIC_CCR_TIMER	0x390		/* Current count RO */
 
-#define LAPIC_DCR_TIMER	0x3e0		/* Divisor config register */
+#define LAPIC_DCR_TIMER	0x3e0		/* Divisor config RW */
 #	define LAPIC_DCRT_DIV1		0x0b
 #	define LAPIC_DCRT_DIV2		0x00
 #	define LAPIC_DCRT_DIV4		0x01
@@ -139,6 +148,9 @@
 #	define LAPIC_DCRT_DIV64		0x09
 #	define LAPIC_DCRT_DIV128	0x0a
 
+#define LAPIC_SELF_IPI	0x3f0		/* SELF IPI (xAPIC: NA, x2APIC: W) */
+#	define LAPIC_SELF_IPI_VEC_MASK	0x000000ff
+
 #define LAPIC_MSIADDR_BASE		0xfee00000
 #define	LAPIC_MSIADDR_DSTID_MASK	__BITS(19, 12)
 #define	LAPIC_MSIADDR_RSVD0_MASK	__BITS(11, 4)
@@ -220,4 +232,3 @@
 #	define	LAPIC_MSR_ENABLE_x2	0x00000400	/* x2APIC mode */
 #	define	LAPIC_MSR_ENABLE	0x00000800	/* software enable */
 #	define	LAPIC_MSR_ADDR		0xfffff000	/* physical address */
-

Index: src/sys/arch/x86/include/specialreg.h
diff -u src/sys/arch/x86/include/specialreg.h:1.95 src/sys/arch/x86/include/specialreg.h:1.96
--- src/sys/arch/x86/include/specialreg.h:1.95	Sat Mar 11 10:33:46 2017
+++ src/sys/arch/x86/include/specialreg.h	Sat Apr 22 04:23:17 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: specialreg.h,v 1.95 2017/03/11 10:33:46 maxv Exp $	*/
+/*	$NetBSD: specialreg.h,v 1.96 2017/04/22 04:23:17 nonaka Exp $	*/
 
 /*-
  * Copyright (c) 1991 The Regents of the University of California.
@@ -660,6 +660,30 @@
 #define MSR_MC4_ADDR		0x412
 #define MSR_MC4_MISC		0x413
 				/* 0x480 - 0x490 VMX */
+#define MSR_X2APIC_BASE		0x800	/* 0x800 - 0xBFF */
+#define  MSR_X2APIC_ID			0x002	/* x2APIC ID. (RO) */
+#define  MSR_X2APIC_VERS		0x003	/* Version. (RO) */
+#define  MSR_X2APIC_TPRI		0x008	/* Task Prio. (RW) */
+#define  MSR_X2APIC_PPRI		0x00a	/* Processor prio. (RO) */
+#define  MSR_X2APIC_EOI			0x00b	/* End Int. (W) */
+#define  MSR_X2APIC_LDR			0x00d	/* Logical dest. (RO) */
+#define  MSR_X2APIC_SVR			0x00f	/* Spurious intvec (RW) */
+#define  MSR_X2APIC_ISR			0x010	/* In-Service Status (RO) */
+#define  MSR_X2APIC_TMR			0x018	/* Trigger Mode (RO) */
+#define  MSR_X2APIC_IRR			0x020	/* Interrupt Req (RO) */
+#define  MSR_X2APIC_ESR			0x028	/* Err status. (RW) */
+#define  MSR_X2APIC_LVT_CMCI		0x02f	/* LVT CMCI (RW) */
+#define  MSR_X2APIC_ICRLO		0x030	/* Int. cmd. (RW64) */
+#define  MSR_X2APIC_LVTT		0x032	/* Loc.vec.(timer) (RW) */
+#define  MSR_X2APIC_TMINT		0x033	/* Loc.vec (Thermal) (RW) */
+#define  MSR_X2APIC_PCINT		0x034	/* Loc.vec (Perf Mon) (RW) */
+#define  MSR_X2APIC_LVINT0		0x035	/* Loc.vec (LINT0) (RW) */
+#define  MSR_X2APIC_LVINT1		0x036	/* Loc.vec (LINT1) (RW) */
+#define  MSR_X2APIC_LVERR		0x037	/* Loc.vec (ERROR) (RW) */
+#define  MSR_X2APIC_ICR_TIMER		0x038	/* Initial count (RW) */
+#define  MSR_X2APIC_CCR_TIMER		0x039	/* Current count (RO) */
+#define  MSR_X2APIC_DCR_TIMER		0x03e	/* Divisor config (RW) */
+#define  MSR_X2APIC_SELF_IPI		0x03f	/* SELF IPI (W) */
 
 /*
  * VIA "Nehemiah" MSRs

Reply via email to