#define LAPIC_ID 0x020
# define LAPIC_ID_MASK 0xff000000
# define LAPIC_ID_SHIFT 24
#define LAPIC_VERS 0x030
# 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_VERSION_EXTAPIC_SPACE 0x80000000
#define LAPIC_TPRI 0x080
# define LAPIC_TPRI_MASK 0x000000ff
# define LAPIC_TPRI_INT_MASK 0x000000f0
# define LAPIC_TPRI_SUB_MASK 0x0000000f
#define LAPIC_APRI 0x090
# define LAPIC_APRI_MASK 0x000000ff
#define LAPIC_PPRI 0x0a0
#define LAPIC_EOI 0x0b0
#define LAPIC_RRR 0x0c0
#define LAPIC_LDR 0x0d0
#define LAPIC_DFR 0x0e0
# define LAPIC_DFR_MASK 0xf0000000
# define LAPIC_DFR_FLAT 0xf0000000
# define LAPIC_DFR_CLUSTER 0x00000000
#define LAPIC_SVR 0x0f0
# define LAPIC_SVR_VECTOR_MASK 0x000000ff
# define LAPIC_SVR_VEC_FIX 0x0000000f
# define LAPIC_SVR_VEC_PROG 0x000000f0
# define LAPIC_SVR_ENABLE 0x00000100
# 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
#define LAPIC_TMR 0x180
#define LAPIC_IRR 0x200
#define LAPIC_ESR 0x280
#define LAPIC_VECTOR_MASK __BITS(7, 0)
#define LAPIC_DLMODE_MASK __BITS(10, 8)
#define LAPIC_DLMODE_FIXED __SHIFTIN(0, LAPIC_DLMODE_MASK)
#define LAPIC_DLMODE_LOW __SHIFTIN(1, LAPIC_DLMODE_MASK)
#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)
#define LAPIC_DLMODE_EXTINT __SHIFTIN(7, LAPIC_DLMODE_MASK)
#define LAPIC_DLSTAT_BUSY __BIT(12)
#define LAPIC_DLSTAT_IDLE 0x00000000
#define LAPIC_LEVEL_MASK __BIT(14)
#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
#define LAPIC_LVT_MASKED __BIT(16)
#define LAPIC_LVT_CMCI 0x2f0
#define LAPIC_ICRLO 0x300
# 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
#define LAPIC_LVT_TIMER 0x320
# 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
#define LAPIC_LVT_PCINT 0x340
#define LAPIC_LVT_LINT0 0x350
# define LAPIC_LVT_LINT_INP_POL __BIT(13)
# define LAPIC_LVT_LINT_RIRR __BIT(14)
#define LAPIC_LVT_LINT1 0x360
#define LAPIC_LVT_ERR 0x370
#define LAPIC_ICR_TIMER 0x380
#define LAPIC_CCR_TIMER 0x390
#define LAPIC_DCR_TIMER 0x3e0
# define LAPIC_DCRT_DIV1 0x0b
# define LAPIC_DCRT_DIV2 0x00
# define LAPIC_DCRT_DIV4 0x01
# define LAPIC_DCRT_DIV8 0x02
# define LAPIC_DCRT_DIV16 0x03
# define LAPIC_DCRT_DIV32 0x08
# define LAPIC_DCRT_DIV64 0x09
# define LAPIC_DCRT_DIV128 0x0a
#define LAPIC_SELF_IPI 0x3f0
# 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)
#define LAPIC_MSIADDR_RH __BIT(3)
#define LAPIC_MSIADDR_DM __BIT(2)
#define LAPIC_MSIADDR_RSVD1_MASK __BITS(1, 0)
#define LAPIC_BASE 0xfee00000
#define LAPIC_IRQ_MASK(i) (1 << ((i) + 1))
#define LEAPIC_FR 0x400
# define LEAPIC_FR_ELC __BITS(23,16)
# define LEAPIC_FR_EIDCAP __BIT(2)
# define LEAPIC_FR_SEIOCAP __BIT(1)
# define LEAPIC_FR_IERCAP __BIT(0)
#define LEAPIC_CR 0x410
# define LEAPIC_CR_EID_ENABLE __BIT(2)
# define LEAPIC_CR_SEOI_ENABLE __BIT(1)
# define LEAPIC_CR_IER_ENABLE __BIT(0)
#define LEAPIC_SEOIR 0x420
# define LEAPIC_SEOI_VEC __BITS(7,0)
#define LEAPIC_IER_480 0x480
#define LEAPIC_IER_490 0x490
#define LEAPIC_IER_4B0 0x4B0
#define LEAPIC_IER_4C0 0x4C0
#define LEAPIC_IER_4D0 0x4D0
#define LEAPIC_IER_4E0 0x4E0
#define LEAPIC_IER_4F0 0x4F0
#define LEAPIC_LVTR_500 0x500
#define LEAPIC_LVTR_504 0x504
#define LEAPIC_LVTR_508 0x508
#define LEAPIC_LVTR_50C 0x50C
#define LEAPIC_LVTR_510 0x510
#define LEAPIC_LVTR_514 0x514
#define LEAPIC_LVTR_518 0x518
#define LEAPIC_LVTR_51C 0x51C
#define LEAPIC_LVTR_520 0x520
#define LEAPIC_LVTR_524 0x524
#define LEAPIC_LVTR_528 0x528
#define LEAPIC_LVTR_52C 0x52C
#define LEAPIC_LVTR_530 0x530
# define LEAPIC_LVTR_MASK __BIT(16)
# define LEAPIC_LVTR_DSTAT __BIT(12)
# define LEAPIC_LVTR_MSGTYPE __BITS(10,8)
# define LEAPIC_LVTR_VEC __BITS(7,0)