17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  *  <Insert copyright here : it must be BSD-like so everyone can use it>
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  *  Author:  Erich Boleyn  <erich@uruk.org>   http://www.uruk.org/~erich/
57c478bd9Sstevel@tonic-gate  *
67c478bd9Sstevel@tonic-gate  *  Header file for Intel Architecture local and I/O APIC definitions.
77c478bd9Sstevel@tonic-gate  *
87c478bd9Sstevel@tonic-gate  *  This file was created from information in the Intel Pentium Pro
97c478bd9Sstevel@tonic-gate  *  Family Developer's Manual, Volume 3: Operating System Writer's
107c478bd9Sstevel@tonic-gate  *  Manual, order number 242692-001, which can be ordered from the
117c478bd9Sstevel@tonic-gate  *  Intel literature center.
127c478bd9Sstevel@tonic-gate  */
137c478bd9Sstevel@tonic-gate 
147c478bd9Sstevel@tonic-gate #ifndef _APIC_H
157c478bd9Sstevel@tonic-gate #define _APIC_H
167c478bd9Sstevel@tonic-gate 
177c478bd9Sstevel@tonic-gate /*
187c478bd9Sstevel@tonic-gate  *  APIC Defines.
197c478bd9Sstevel@tonic-gate  */
207c478bd9Sstevel@tonic-gate 
217c478bd9Sstevel@tonic-gate #define APIC_BROADCAST_ID		       	0xFF
227c478bd9Sstevel@tonic-gate 
237c478bd9Sstevel@tonic-gate /*
247c478bd9Sstevel@tonic-gate  *  APIC register definitions
257c478bd9Sstevel@tonic-gate  */
267c478bd9Sstevel@tonic-gate 
277c478bd9Sstevel@tonic-gate /*
287c478bd9Sstevel@tonic-gate  *  Shared defines for I/O and local APIC definitions
297c478bd9Sstevel@tonic-gate  */
307c478bd9Sstevel@tonic-gate /* APIC version register */
317c478bd9Sstevel@tonic-gate #define	APIC_VERSION(x)				((x) & 0xFF)
327c478bd9Sstevel@tonic-gate /* if the APIC version is equal or greater than APIC_VER_NEW, it
337c478bd9Sstevel@tonic-gate    is a "new" APIC */
347c478bd9Sstevel@tonic-gate #define APIC_VER_NEW				0x10
357c478bd9Sstevel@tonic-gate /* this next one is used in all cases but an old local APIC, which has
367c478bd9Sstevel@tonic-gate    2 entries in it's LVT */
377c478bd9Sstevel@tonic-gate #define	APIC_MAXREDIR(x)			(((x) >> 16) & 0xFF)
387c478bd9Sstevel@tonic-gate /* APIC id register */
397c478bd9Sstevel@tonic-gate #define	APIC_OLD_ID(x)				((x) >> 24)
407c478bd9Sstevel@tonic-gate #define	APIC_NEW_ID(x)				(((x) >> 24) & 0xF)
417c478bd9Sstevel@tonic-gate 
427c478bd9Sstevel@tonic-gate #define IOAPIC_REGSEL				0
437c478bd9Sstevel@tonic-gate #define IOAPIC_RW				0x10
447c478bd9Sstevel@tonic-gate #define		IOAPIC_ID			0
457c478bd9Sstevel@tonic-gate #define		IOAPIC_VER			1
467c478bd9Sstevel@tonic-gate #define		IOAPIC_REDIR			0x10
477c478bd9Sstevel@tonic-gate #define LAPIC_ID				0x20
487c478bd9Sstevel@tonic-gate #define LAPIC_VER				0x30
497c478bd9Sstevel@tonic-gate #define LAPIC_TPR				0x80
507c478bd9Sstevel@tonic-gate #define LAPIC_APR				0x90
517c478bd9Sstevel@tonic-gate #define LAPIC_PPR				0xA0
527c478bd9Sstevel@tonic-gate #define LAPIC_EOI				0xB0
537c478bd9Sstevel@tonic-gate #define LAPIC_LDR				0xD0
547c478bd9Sstevel@tonic-gate #define LAPIC_DFR				0xE0
557c478bd9Sstevel@tonic-gate #define LAPIC_SPIV				0xF0
567c478bd9Sstevel@tonic-gate #define		LAPIC_SPIV_ENABLE_APIC		0x100
577c478bd9Sstevel@tonic-gate #define LAPIC_ISR				0x100
587c478bd9Sstevel@tonic-gate #define LAPIC_TMR				0x180
597c478bd9Sstevel@tonic-gate #define LAPIC_IRR				0x200
607c478bd9Sstevel@tonic-gate #define LAPIC_ESR				0x280
617c478bd9Sstevel@tonic-gate #define LAPIC_ICR				0x300
627c478bd9Sstevel@tonic-gate #define		LAPIC_DEST_MASK			0xFFFFFF
637c478bd9Sstevel@tonic-gate #define LAPIC_LVTT				0x320
647c478bd9Sstevel@tonic-gate #define LAPIC_LVTPC		       		0x340
657c478bd9Sstevel@tonic-gate #define LAPIC_LVT0				0x350
667c478bd9Sstevel@tonic-gate #define LAPIC_LVT1				0x360
677c478bd9Sstevel@tonic-gate #define LAPIC_LVTE				0x370
687c478bd9Sstevel@tonic-gate #define LAPIC_TICR				0x380
697c478bd9Sstevel@tonic-gate #define LAPIC_TCCR				0x390
707c478bd9Sstevel@tonic-gate #define LAPIC_TDCR				0x3E0
717c478bd9Sstevel@tonic-gate 
727c478bd9Sstevel@tonic-gate #endif /* _APIC_H */
73