37#ifndef _RTEMS_OPENPIC_H
38#define _RTEMS_OPENPIC_H
43#define OPENPIC_MAX_SOURCES 2048
44#define OPENPIC_MAX_PROCESSORS 32
46#define OPENPIC_NUM_TIMERS 4
47#define OPENPIC_NUM_IPI 4
48#define OPENPIC_NUM_PRI 16
49#define OPENPIC_NUM_VECTORS 256
55#define OPENPIC_VEC_SOURCE 0x10
56#define OPENPIC_VEC_TIMER 0x40
57#define OPENPIC_VEC_IPI 0x50
58#define OPENPIC_VEC_SPURIOUS 99
77 unsigned int IPI0_Dispatch_Shadow;
79 unsigned int IPI0_Vector_Priority_Shadow;
190#define OPENPIC_CURRENT_TASK_PRIORITY_MASK 0x0000000f
196#define OPENPIC_WHO_AM_I_ID_MASK 0x0000001f
202#define OPENPIC_FEATURE_LAST_SOURCE_MASK 0x07ff0000
203#define OPENPIC_FEATURE_LAST_SOURCE_SHIFT 16
204#define OPENPIC_FEATURE_LAST_PROCESSOR_MASK 0x00001f00
205#define OPENPIC_FEATURE_LAST_PROCESSOR_SHIFT 8
206#define OPENPIC_FEATURE_VERSION_MASK 0x000000ff
212#define OPENPIC_CONFIG_RESET 0x80000000
213#define OPENPIC_CONFIG_8259_PASSTHROUGH_DISABLE 0x20000000
214#define OPENPIC_CONFIG_BASE_MASK 0x000fffff
220#define OPENPIC_VENDOR_ID_STEPPING_MASK 0x00ff0000
221#define OPENPIC_VENDOR_ID_STEPPING_SHIFT 16
222#define OPENPIC_VENDOR_ID_DEVICE_ID_MASK 0x0000ff00
223#define OPENPIC_VENDOR_ID_DEVICE_ID_SHIFT 8
224#define OPENPIC_VENDOR_ID_VENDOR_ID_MASK 0x000000ff
230#define OPENPIC_MASK 0x80000000
231#define OPENPIC_ACTIVITY 0x40000000
232#define OPENPIC_PRIORITY_MASK 0x000f0000
233#define OPENPIC_PRIORITY_SHIFT 16
234#define OPENPIC_VECTOR_MASK 0x000000ff
240#define OPENPIC_SENSE_POLARITY 0x00800000
241#define OPENPIC_SENSE_LEVEL 0x00400000
247#define OPENPIC_COUNT_MASK 0x7fffffff
248#define OPENPIC_TIMER_TOGGLE 0x80000000
249#define OPENPIC_TIMER_COUNT_INHIBIT 0x80000000
256#define IPI_Dispatch(i) _IPI_Dispatch[i].Reg
257#define Current_Task_Priority _Current_Task_Priority.Reg
258#define Interrupt_Acknowledge _Interrupt_Acknowledge.Reg
262#define Feature_Reporting0 _Feature_Reporting0.Reg
263#define Feature_Reporting1 _Feature_Reporting1.Reg
264#define Global_Configuration0 _Global_Configuration0.Reg
265#define Global_Configuration1 _Global_Configuration1.Reg
266#define Vendor_Specific(i) _Vendor_Specific[i].Reg
267#define Vendor_Identification _Vendor_Identification.Reg
268#define Processor_Initialization _Processor_Initialization.Reg
269#define IPI_Vector_Priority(i) _IPI_Vector_Priority[i].Reg
270#define Spurious_Vector _Spurious_Vector.Reg
271#define Timer_Frequency _Timer_Frequency.Reg
274#define Current_Count _Current_Count.Reg
275#define Base_Count _Base_Count.Reg
276#define Vector_Priority _Vector_Priority.Reg
277#define Destination _Destination.Reg
280#define Vector_Priority _Vector_Priority.Reg
281#define Destination _Destination.Reg
287#define OPENPIC_VENDOR_ID_APPLE 0x14
288#define OPENPIC_DEVICE_ID_APPLE_HYDRA 0x46
323extern unsigned openpic_set_eoi_delay(
unsigned tb_cycles);
347extern void openpic_init(
int main_pic,
unsigned char *polarities,
unsigned char *senses,
int num_sources,
int source_offset,
unsigned long epic_freq);
349extern void openpic_reset(
void);
350extern void openpic_enable_8259_pass_through(
void);
351extern void openpic_disable_8259_pass_through(
void);
352extern unsigned int openpic_irq(
unsigned int cpu);
353extern void openpic_eoi(
unsigned int cpu);
354extern unsigned int openpic_get_priority(
unsigned int cpu);
355extern void openpic_set_priority(
unsigned int cpu,
unsigned int pri);
356extern unsigned int openpic_get_spurious(
void);
357extern void openpic_set_spurious(
unsigned int vector);
358extern void openpic_init_processor(
unsigned int cpumask);
361extern void openpic_initipi(
unsigned int ipi,
unsigned int pri,
unsigned int vector);
362extern void openpic_cause_IPI(
unsigned int cpu,
unsigned int ipi,
unsigned int cpumask);
365extern void openpic_inittimer(
unsigned int timer,
unsigned int pri,
unsigned int vector);
366extern void openpic_settimer(
unsigned int timer,
unsigned int base_count,
int irq_enable);
367extern unsigned int openpic_gettimer(
unsigned int timer);
368extern void openpic_maptimer(
unsigned int timer,
unsigned int cpumask);
371extern void openpic_enable_irq(
unsigned int irq);
372extern int openpic_disable_irq(
unsigned int irq);
373extern void openpic_initirq(
unsigned int irq,
unsigned int pri,
unsigned int vector,
int polarity,
375extern void openpic_mapirq(
unsigned int irq,
unsigned int cpumask);
376extern void openpic_set_sense(
unsigned int irq,
int sense);
377extern unsigned int openpic_get_source_priority(
unsigned int irq);
378extern void openpic_set_source_priority(
unsigned int irq,
unsigned int pri);
Definition: openpic.h:168
Definition: openpic.h:116
Definition: openpic.h:159
Definition: openpic.h:105