Module Name:    src
Committed By:   msaitoh
Date:           Fri Jun 14 05:59:40 UTC 2019

Modified Files:
        src/sys/arch/x86/include: i82489reg.h
        src/sys/arch/x86/pci: msipic.c
        src/sys/arch/x86/x86: lapic.c

Log Message:
No functional change:
- Rename macros:
  - ICR, LVT and MSIDATA can share the bit definitions. Remove redundant
    definitions and use the common macros.
  - Consistently use LAPIC_LVT_ for all local vector table's macro names.
- Use __BITS().
- Add definition for TSC-deadline (LAPIC_LVT_TMM_TSCDLT).


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/x86/include/i82489reg.h
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/x86/pci/msipic.c
cvs rdiff -u -r1.73 -r1.74 src/sys/arch/x86/x86/lapic.c

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.18 src/sys/arch/x86/include/i82489reg.h:1.19
--- src/sys/arch/x86/include/i82489reg.h:1.18	Thu Jun 13 15:10:27 2019
+++ src/sys/arch/x86/include/i82489reg.h	Fri Jun 14 05:59:39 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: i82489reg.h,v 1.18 2019/06/13 15:10:27 msaitoh Exp $	*/
+/*	$NetBSD: i82489reg.h,v 1.19 2019/06/14 05:59:39 msaitoh Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2008 The NetBSD Foundation, Inc.
@@ -79,63 +79,60 @@
 #define LAPIC_IRR	0x200	/* Interrupt Req RO */
 #define LAPIC_ESR	0x280	/* Err status. RW */
 
-#define LAPIC_LVT_CMCI	0x2f0	/* Loc.vec (CMCI) RW */
+/* Common definitions for ICR, LVT and MSIDATA */
+#define LAPIC_VECTOR_MASK    __BITS(7, 0)
+#define LAPIC_DLMODE_MASK    __BITS(10, 8)	/* Delivery Mode */
+#define LAPIC_DLMODE_FIXED   __SHIFTIN(0, LAPIC_DLMODE_MASK)
+#define LAPIC_DLMODE_LOW     __SHIFTIN(1, LAPIC_DLMODE_MASK) /* NA in x2APIC */
+#define LAPIC_DLMODE_SMI     __SHIFTIN(2, LAPIC_DLMODE_MASK)
+#define LAPIC_DLMODE_NMI     __SHIFTIN(4, LAPIC_DLMODE_MASK)
+#define LAPIC_DLMODE_INIT    __SHIFTIN(5, LAPIC_DLMODE_MASK)
+#define LAPIC_DLMODE_STARTUP __SHIFTIN(6, LAPIC_DLMODE_MASK) /* NA in LVT,MSI*/
+#define LAPIC_DLMODE_EXTINT  __SHIFTIN(7, LAPIC_DLMODE_MASK) /* NA in x2APIC */
+
+#define LAPIC_DLSTAT_BUSY    __BIT(12)	/* NA in x2APIC nor MSI */
+#define LAPIC_DLSTAT_IDLE    0x00000000
+
+#define LAPIC_LEVEL_MASK     __BIT(14)	/* LAPIC_LVT_LINT_RIRR in LVT LINT */
+#define LAPIC_LEVEL_ASSERT   LAPIC_LEVEL_MASK
+#define LAPIC_LEVEL_DEASSERT 0x00000000
+
+#define LAPIC_TRIGMODE_MASK   __BIT(15)
+#define LAPIC_TRIGMODE_EDGE   0x00000000
+#define LAPIC_TRIGMODE_LEVEL  LAPIC_TRIGMODE_MASK
+
+/* Common definitions for LVT */
+#define LAPIC_LVT_MASKED     __BIT(16)
 
+#define LAPIC_LVT_CMCI	0x2f0	/* Loc.vec (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	/* 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	/* N/A in x2APIC mode */
-
-#	define LAPIC_DSTMODE_PHYS	0x00000000
-#	define LAPIC_DSTMODE_LOG	0x00000800
-
-#	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
-#	define LAPIC_LEVEL_DEASSERT	0x00000000
-
-#	define LAPIC_TRIGGER_MASK	0x00008000
-#	define LAPIC_TRIGGER_EDGE	0x00000000
-#	define LAPIC_TRIGGER_LEVEL	0x00008000
-
-#	define LAPIC_DEST_MASK		0x000c0000
-#	define LAPIC_DEST_DEFAULT	0x00000000
-#	define LAPIC_DEST_SELF		0x00040000
-#	define LAPIC_DEST_ALLINCL	0x00080000
-#	define LAPIC_DEST_ALLEXCL	0x000c0000
+
+#	define LAPIC_DSTMODE_MASK	__BIT(11)
+#	define LAPIC_DSTMODE_PHYS	__SHIFTIN(0, LAPIC_DSTMODE_MASK)
+#	define LAPIC_DSTMODE_LOG	__SHIFTIN(1, LAPIC_DSTMODE_MASK)
+
+#	define LAPIC_DEST_MASK		__BITS(19, 18)
+#	define LAPIC_DEST_DEFAULT	__SHIFTIN(0, LAPIC_DEST_MASK)
+#	define LAPIC_DEST_SELF		__SHIFTIN(1, LAPIC_DEST_MASK)
+#	define LAPIC_DEST_ALLINCL	__SHIFTIN(2, LAPIC_DEST_MASK)
+#	define LAPIC_DEST_ALLEXCL	__SHIFTIN(3, LAPIC_DEST_MASK)
 
 #define LAPIC_ICRHI	0x310	/* Int. cmd. (xAPIC: RW, x2APIC: NA) */
 
-#define LAPIC_LVTT	0x320	/* Loc.vec.(timer) RW */
-#	define LAPIC_LVTT_VEC_MASK	0x000000ff
-#	define LAPIC_LVTT_DS		0x00001000
-#	define LAPIC_LVTT_M		0x00010000
-#	define LAPIC_LVTT_TM		0x00020000
-
-#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
-#	define LAPIC_INP_POL		0x00002000
-#	define LAPIC_PEND_SEND		0x00001000
+#define LAPIC_LVT_TIMER	0x320	/* Loc.vec.(timer) RW */
+#	define LAPIC_LVT_TMM		__BITS(18, 17)
+#	define LAPIC_LVT_TMM_ONESHOT	__SHIFTIN(0, LAPIC_LVT_TMM)
+#	define LAPIC_LVT_TMM_PERIODIC	__SHIFTIN(1, LAPIC_LVT_TMM)
+#	define LAPIC_LVT_TMM_TSCDLT	__SHIFTIN(2, LAPIC_LVT_TMM)
+
+#define LAPIC_LVT_THERM	0x330	/* Loc.vec (Thermal) RW */
+#define LAPIC_LVT_PCINT	0x340	/* Loc.vec (Perf Mon) RW */
+#define LAPIC_LVT_LINT0	0x350	/* Loc.vec (LINT0) RW */
+#	define LAPIC_LVT_LINT_INP_POL	__BIT(13)
+#	define LAPIC_LVT_LINT_RIRR	__BIT(14)
 
-#define LAPIC_LVINT1	0x360	/* Loc.vec (LINT1) RW */
-#define LAPIC_LVERR	0x370	/* Loc.vec (ERROR) RW */
+#define LAPIC_LVT_LINT1	0x360	/* Loc.vec (LINT1) RW */
+#define LAPIC_LVT_ERR	0x370	/* Loc.vec (ERROR) RW */
 #define LAPIC_ICR_TIMER	0x380	/* Initial count RW */
 #define LAPIC_CCR_TIMER	0x390	/* Current count RO */
 
@@ -159,25 +156,6 @@
 #define	LAPIC_MSIADDR_DM		__BIT(2)
 #define	LAPIC_MSIADDR_RSVD1_MASK	__BITS(1, 0)
 
-#define	LAPIC_MSIDATA_VECTOR_MASK	__BITS(7, 0)
-#define	LAPIC_MSIDATA_DM_MASK		__BITS(10, 8)
-#define	LAPIC_MSIDATA_DM_FIXED		__SHIFTIN(0, LAPIC_MSIDATA_DM_MASK)
-#define	LAPIC_MSIDATA_DM_LOPRI		__SHIFTIN(1, LAPIC_MSIDATA_DM_MASK)
-#define	LAPIC_MSIDATA_DM_SMI		__SHIFTIN(2, LAPIC_MSIDATA_DM_MASK)
-#define	LAPIC_MSIDATA_DM_RSVD0		__SHIFTIN(3, LAPIC_MSIDATA_DM_MASK)
-#define	LAPIC_MSIDATA_DM_NMI		__SHIFTIN(4, LAPIC_MSIDATA_DM_MASK)
-#define	LAPIC_MSIDATA_DM_INIT		__SHIFTIN(5, LAPIC_MSIDATA_DM_MASK)
-#define	LAPIC_MSIDATA_DM_RSVD1		__SHIFTIN(6, LAPIC_MSIDATA_DM_MASK)
-#define	LAPIC_MSIDATA_DM_EXTINT		__SHIFTIN(7, LAPIC_MSIDATA_DM_MASK)
-#define	LAPIC_MSIDATA_RSVD0_MASK	__BITS(13, 11)
-#define	LAPIC_MSIDATA_LEVEL_MASK	__BIT(14)
-#define	LAPIC_MSIDATA_LEVEL_DEASSERT	__SHIFTIN(0, LAPIC_MSIDATA_LEVEL_MASK)
-#define	LAPIC_MSIDATA_LEVEL_ASSERT	__SHIFTIN(1, LAPIC_MSIDATA_LEVEL_MASK)
-#define	LAPIC_MSIDATA_TRGMODE_MASK	__BIT(15)
-#define	LAPIC_MSIDATA_TRGMODE_EDGE	__SHIFTIN(0,LAPIC_MSIDATA_TRGMODE_MASK)
-#define	LAPIC_MSIDATA_TRGMODE_LEVEL	__SHIFTIN(1,LAPIC_MSIDATA_TRGMODE_MASK)
-#define	LAPIC_MSIDATA_RSVD1_MASK	__BITS(31, 16)
-
 #define LAPIC_BASE		0xfee00000
 
 #define LAPIC_IRQ_MASK(i)	(1 << ((i) + 1))

Index: src/sys/arch/x86/pci/msipic.c
diff -u src/sys/arch/x86/pci/msipic.c:1.12 src/sys/arch/x86/pci/msipic.c:1.13
--- src/sys/arch/x86/pci/msipic.c:1.12	Mon Apr  1 06:20:40 2019
+++ src/sys/arch/x86/pci/msipic.c	Fri Jun 14 05:59:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: msipic.c,v 1.12 2019/04/01 06:20:40 msaitoh Exp $	*/
+/*	$NetBSD: msipic.c,v 1.13 2019/06/14 05:59:40 msaitoh Exp $	*/
 
 /*
  * Copyright (c) 2015 Internet Initiative Japan Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: msipic.c,v 1.12 2019/04/01 06:20:40 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: msipic.c,v 1.13 2019/06/14 05:59:40 msaitoh Exp $");
 
 #include "opt_intrdebug.h"
 
@@ -384,8 +384,8 @@ msi_addroute(struct pic *pic, struct cpu
 	addr = LAPIC_MSIADDR_BASE | __SHIFTIN(ci->ci_cpuid,
 	    LAPIC_MSIADDR_DSTID_MASK);
 	/* If trigger mode is edge, it don't care level for trigger mode. */
-	data = __SHIFTIN(idt_vec, LAPIC_MSIDATA_VECTOR_MASK)
-		| LAPIC_MSIDATA_TRGMODE_EDGE | LAPIC_MSIDATA_DM_FIXED;
+	data = __SHIFTIN(idt_vec, LAPIC_VECTOR_MASK)
+		| LAPIC_TRIGMODE_EDGE | LAPIC_DLMODE_FIXED;
 
 	ctl = pci_conf_read(pc, tag, off + PCI_MSI_CTL);
 	if (ctl & PCI_MSI_CTL_64BIT_ADDR) {
@@ -550,8 +550,8 @@ msix_addroute(struct pic *pic, struct cp
 	addr = LAPIC_MSIADDR_BASE | __SHIFTIN(ci->ci_cpuid,
 	    LAPIC_MSIADDR_DSTID_MASK);
 	/* If trigger mode is edge, it don't care level for trigger mode. */
-	data = __SHIFTIN(idt_vec, LAPIC_MSIDATA_VECTOR_MASK)
-		| LAPIC_MSIDATA_TRGMODE_EDGE | LAPIC_MSIDATA_DM_FIXED;
+	data = __SHIFTIN(idt_vec, LAPIC_VECTOR_MASK)
+		| LAPIC_TRIGMODE_EDGE | LAPIC_DLMODE_FIXED;
 
 	bstag = pic->pic_msipic->mp_bstag;
 	bshandle = pic->pic_msipic->mp_bshandle;

Index: src/sys/arch/x86/x86/lapic.c
diff -u src/sys/arch/x86/x86/lapic.c:1.73 src/sys/arch/x86/x86/lapic.c:1.74
--- src/sys/arch/x86/x86/lapic.c:1.73	Thu Jun 13 07:42:45 2019
+++ src/sys/arch/x86/x86/lapic.c	Fri Jun 14 05:59:39 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: lapic.c,v 1.73 2019/06/13 07:42:45 msaitoh Exp $	*/
+/*	$NetBSD: lapic.c,v 1.74 2019/06/14 05:59:39 msaitoh Exp $	*/
 
 /*-
  * Copyright (c) 2000, 2008 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lapic.c,v 1.73 2019/06/13 07:42:45 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lapic.c,v 1.74 2019/06/14 05:59:39 msaitoh Exp $");
 
 #include "acpica.h"
 #include "ioapic.h"
@@ -423,9 +423,9 @@ lapic_set_lvt(void)
 #ifdef MULTIPROCESSOR
 	if (mp_verbose) {
 		apic_format_redir(device_xname(ci->ci_dev), "prelint", 0, 0,
-		    lapic_readreg(LAPIC_LVINT0));
+		    lapic_readreg(LAPIC_LVT_LINT0));
 		apic_format_redir(device_xname(ci->ci_dev), "prelint", 1, 0,
-		    lapic_readreg(LAPIC_LVINT1));
+		    lapic_readreg(LAPIC_LVT_LINT1));
 	}
 #endif
 
@@ -434,18 +434,18 @@ lapic_set_lvt(void)
 	 * the 8259A for interrupt delivery.  Otherwise request the LAPIC to
 	 * get external interrupts via LINT0 for the primary CPU.
 	 */
-	lint0 = LAPIC_LVT_DM_EXTINT;
+	lint0 = LAPIC_DLMODE_EXTINT;
 	if (nioapics > 0 || !CPU_IS_PRIMARY(curcpu()))
 		lint0 |= LAPIC_LVT_MASKED;
-	lapic_writereg(LAPIC_LVINT0, lint0);
+	lapic_writereg(LAPIC_LVT_LINT0, lint0);
 
 	/*
 	 * Non Maskable Interrupts are to be delivered to the primary CPU.
 	 */
-	lint1 = LAPIC_LVT_DM_NMI;
+	lint1 = LAPIC_DLMODE_NMI;
 	if (!CPU_IS_PRIMARY(curcpu()))
 		lint1 |= LAPIC_LVT_MASKED;
-	lapic_writereg(LAPIC_LVINT1, lint1);
+	lapic_writereg(LAPIC_LVT_LINT1, lint1);
 
 	for (i = 0; i < mp_nintr; i++) {
 		mpi = &mp_intrs[i];
@@ -456,9 +456,9 @@ lapic_set_lvt(void)
 				    "%s: WARNING: bad pin value %d\n",
 				    __func__, mpi->ioapic_pin);
 			if (mpi->ioapic_pin == 0)
-				lapic_writereg(LAPIC_LVINT0, mpi->redir);
+				lapic_writereg(LAPIC_LVT_LINT0, mpi->redir);
 			else
-				lapic_writereg(LAPIC_LVINT1, mpi->redir);
+				lapic_writereg(LAPIC_LVT_LINT1, mpi->redir);
 		}
 	}
 
@@ -588,10 +588,12 @@ lapic_initclocks(void)
 	 * then set divisor,
 	 * then unmask and set the vector.
 	 */
-	lapic_writereg(LAPIC_LVTT, LAPIC_LVTT_TM | LAPIC_LVTT_M);
+	lapic_writereg(LAPIC_LVT_TIMER,
+	    LAPIC_LVT_TMM_PERIODIC | LAPIC_LVT_MASKED);
 	lapic_writereg(LAPIC_DCR_TIMER, LAPIC_DCRT_DIV1);
 	lapic_writereg(LAPIC_ICR_TIMER, lapic_tval);
-	lapic_writereg(LAPIC_LVTT, LAPIC_LVTT_TM | LAPIC_TIMER_VECTOR);
+	lapic_writereg(LAPIC_LVT_TIMER,
+	    LAPIC_LVT_TMM_PERIODIC | LAPIC_TIMER_VECTOR);
 	lapic_eoi();
 }
 
@@ -627,7 +629,7 @@ lapic_calibrate_timer(struct cpu_info *c
 	 * Configure timer to one-shot, interrupt masked,
 	 * large positive number.
 	 */
-	lapic_writereg(LAPIC_LVTT, LAPIC_LVTT_M);
+	lapic_writereg(LAPIC_LVT_TIMER, LAPIC_LVT_MASKED);
 	lapic_writereg(LAPIC_DCR_TIMER, LAPIC_DCRT_DIV1);
 	lapic_writereg(LAPIC_ICR_TIMER, 0x80000000);
 
@@ -664,8 +666,8 @@ calibrate_done:
 		lapic_tval = (lapic_per_second * 2) / hz;
 		lapic_tval = (lapic_tval / 2) + (lapic_tval & 0x1);
 
-		lapic_writereg(LAPIC_LVTT, LAPIC_LVTT_TM | LAPIC_LVTT_M
-		    | LAPIC_TIMER_VECTOR);
+		lapic_writereg(LAPIC_LVT_TIMER, LAPIC_LVT_TMM_PERIODIC
+		    | LAPIC_LVT_MASKED | LAPIC_TIMER_VECTOR);
 		lapic_writereg(LAPIC_DCR_TIMER, LAPIC_DCRT_DIV1);
 		lapic_writereg(LAPIC_ICR_TIMER, lapic_tval);
 
@@ -790,7 +792,7 @@ i82489_ipi_init(int target)
 	i82489_icr_wait();
 	x86_delay(10000);
 	i82489_writereg(LAPIC_ICRLO,
-	    LAPIC_DLMODE_INIT | LAPIC_TRIGGER_LEVEL | LAPIC_LEVEL_DEASSERT);
+	    LAPIC_DLMODE_INIT | LAPIC_TRIGMODE_LEVEL | LAPIC_LEVEL_DEASSERT);
 	i82489_icr_wait();
 
 	if ((i82489_readreg(LAPIC_ICRLO) & LAPIC_DLSTAT_BUSY) != 0)
@@ -863,7 +865,7 @@ x2apic_ipi_init(int target)
 	x86_delay(10000);
 
 	x2apic_write_icr(0,
-	    LAPIC_DLMODE_INIT | LAPIC_TRIGGER_LEVEL | LAPIC_LEVEL_DEASSERT);
+	    LAPIC_DLMODE_INIT | LAPIC_TRIGMODE_LEVEL | LAPIC_LEVEL_DEASSERT);
 
 	return 0;
 }
@@ -911,7 +913,7 @@ x86_ipi_startup(int target, int vec)
 /*
  * Using 'pin numbers' as:
  * 0 - timer
- * 1 - unused
+ * 1 - thermal
  * 2 - PCINT
  * 3 - LVINT0
  * 4 - LVINT1
@@ -924,7 +926,7 @@ lapic_hwmask(struct pic *pic, int pin)
 	int reg;
 	uint32_t val;
 
-	reg = LAPIC_LVTT + (pin << 4);
+	reg = LAPIC_LVT_TIMER + (pin << 4);
 	val = lapic_readreg(reg);
 	val |= LAPIC_LVT_MASKED;
 	lapic_writereg(reg, val);
@@ -936,7 +938,7 @@ lapic_hwunmask(struct pic *pic, int pin)
 	int reg;
 	uint32_t val;
 
-	reg = LAPIC_LVTT + (pin << 4);
+	reg = LAPIC_LVT_TIMER + (pin << 4);
 	val = lapic_readreg(reg);
 	val &= ~LAPIC_LVT_MASKED;
 	lapic_writereg(reg, val);
@@ -952,13 +954,18 @@ void
 lapic_dump(void)
 {
 	struct cpu_info *ci = curcpu();
-	const char *xname = device_xname(ci->ci_dev);
 
-	apic_format_redir(xname, "cmci", 0, 0, lapic_readreg(LAPIC_LVT_CMCI));
-	apic_format_redir(xname, "timer", 0, 0, lapic_readreg(LAPIC_LVTT));
-	apic_format_redir(xname, "thermal", 0, 0, lapic_readreg(LAPIC_TMINT));
-	apic_format_redir(xname, "pcint", 0, 0, lapic_readreg(LAPIC_PCINT));
-	apic_format_redir(xname, "lint", 0, 0, lapic_readreg(LAPIC_LVINT0));
-	apic_format_redir(xname, "lint", 1, 0, lapic_readreg(LAPIC_LVINT1));
-	apic_format_redir(xname, "err", 0, 0, lapic_readreg(LAPIC_LVERR));
+#define APIC_LVT_PRINT(ci, where, idx, lvtreg)				\
+	apic_format_redir(device_xname(ci->ci_dev), where, (idx), 0,	\
+	    lapic_readreg(lvtreg))
+	
+	APIC_LVT_PRINT(ci, "cmci", 0, LAPIC_LVT_CMCI);
+	APIC_LVT_PRINT(ci, "timer", 0, LAPIC_LVT_TIMER);
+	APIC_LVT_PRINT(ci, "thermal", 0, LAPIC_LVT_THERM);
+	APIC_LVT_PRINT(ci, "pcint", 0, LAPIC_LVT_PCINT);
+	APIC_LVT_PRINT(ci, "lint", 0, LAPIC_LVT_LINT0);
+	APIC_LVT_PRINT(ci, "lint", 1, LAPIC_LVT_LINT1);
+	APIC_LVT_PRINT(ci, "err", 0, LAPIC_LVT_ERR);
+
+#undef APIC_LVT_PRIINT
 }

Reply via email to