1/*
2 *  <Insert copyright here : it must be BSD-like so everyone can use it>
3 *
4 *  Author:  Erich Boleyn  <erich@uruk.org>   http://www.uruk.org/~erich/
5 *
6 *  Header file for Intel Architecture local and I/O APIC definitions.
7 *
8 *  This file was created from information in the Intel Pentium Pro
9 *  Family Developer's Manual, Volume 3: Operating System Writer's
10 *  Manual, order number 242692-001, which can be ordered from the
11 *  Intel literature center.
12 */
13
14#ifndef _APIC_H
15#define _APIC_H
16
17/*
18 *  APIC Defines.
19 */
20
21#define APIC_BROADCAST_ID		       	0xFF
22
23/*
24 *  APIC register definitions
25 */
26
27/*
28 *  Shared defines for I/O and local APIC definitions
29 */
30/* APIC version register */
31#define	APIC_VERSION(x)				((x) & 0xFF)
32/* if the APIC version is equal or greater than APIC_VER_NEW, it
33   is a "new" APIC */
34#define APIC_VER_NEW				0x10
35/* this next one is used in all cases but an old local APIC, which has
36   2 entries in it's LVT */
37#define	APIC_MAXREDIR(x)			(((x) >> 16) & 0xFF)
38/* APIC id register */
39#define	APIC_OLD_ID(x)				((x) >> 24)
40#define	APIC_NEW_ID(x)				(((x) >> 24) & 0xF)
41
42#define IOAPIC_REGSEL				0
43#define IOAPIC_RW				0x10
44#define		IOAPIC_ID			0
45#define		IOAPIC_VER			1
46#define		IOAPIC_REDIR			0x10
47#define LAPIC_ID				0x20
48#define LAPIC_VER				0x30
49#define LAPIC_TPR				0x80
50#define LAPIC_APR				0x90
51#define LAPIC_PPR				0xA0
52#define LAPIC_EOI				0xB0
53#define LAPIC_LDR				0xD0
54#define LAPIC_DFR				0xE0
55#define LAPIC_SPIV				0xF0
56#define		LAPIC_SPIV_ENABLE_APIC		0x100
57#define LAPIC_ISR				0x100
58#define LAPIC_TMR				0x180
59#define LAPIC_IRR				0x200
60#define LAPIC_ESR				0x280
61#define LAPIC_ICR				0x300
62#define		LAPIC_DEST_MASK			0xFFFFFF
63#define LAPIC_LVTT				0x320
64#define LAPIC_LVTPC		       		0x340
65#define LAPIC_LVT0				0x350
66#define LAPIC_LVT1				0x360
67#define LAPIC_LVTE				0x370
68#define LAPIC_TICR				0x380
69#define LAPIC_TCCR				0x390
70#define LAPIC_TDCR				0x3E0
71
72#endif /* _APIC_H */
73