15b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/*
25b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  <Insert copyright here : it must be BSD-like so everyone can use it>
35b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *
45b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  Author:  Erich Boleyn  <erich@uruk.org>   http://www.uruk.org/~erich/
55b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *
65b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  Header file for Intel Architecture local and I/O APIC definitions.
75b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *
85b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  This file was created from information in the Intel Pentium Pro
95b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  Family Developer's Manual, Volume 3: Operating System Writer's
105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  Manual, order number 242692-001, which can be ordered from the
115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  Intel literature center.
125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */
135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef _APIC_H
155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define _APIC_H
165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/*
185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  APIC Defines.
195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */
205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define APIC_BROADCAST_ID		       	0xFF
225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/*
245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  APIC register definitions
255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */
265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/*
285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  Shared defines for I/O and local APIC definitions
295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */
305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* APIC version register */
315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	APIC_VERSION(x)				((x) & 0xFF)
325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* if the APIC version is equal or greater than APIC_VER_NEW, it
335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project   is a "new" APIC */
345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define APIC_VER_NEW				0x10
355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* this next one is used in all cases but an old local APIC, which has
365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project   2 entries in it's LVT */
375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	APIC_MAXREDIR(x)			(((x) >> 16) & 0xFF)
385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* APIC id register */
395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	APIC_OLD_ID(x)				((x) >> 24)
405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	APIC_NEW_ID(x)				(((x) >> 24) & 0xF)
415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IOAPIC_REGSEL				0
435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IOAPIC_RW				0x10
445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define		IOAPIC_ID			0
455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define		IOAPIC_VER			1
465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define		IOAPIC_REDIR			0x10
475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_ID				0x20
485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_VER				0x30
495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_TPR				0x80
505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_APR				0x90
515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_PPR				0xA0
525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_EOI				0xB0
535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_LDR				0xD0
545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_DFR				0xE0
555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_SPIV				0xF0
565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define		LAPIC_SPIV_ENABLE_APIC		0x100
575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_ISR				0x100
585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_TMR				0x180
595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_IRR				0x200
605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_ESR				0x280
615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_ICR				0x300
625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define		LAPIC_DEST_MASK			0xFFFFFF
635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_LVTT				0x320
645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_LVTPC		       		0x340
655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_LVT0				0x350
665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_LVT1				0x360
675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_LVTE				0x370
685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_TICR				0x380
695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_TCCR				0x390
705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LAPIC_TDCR				0x3E0
715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif /* _APIC_H */
73