4
#include <linux/config.h>
5
#include <asm/ptrace.h>
6
#include <asm/apicdef.h>
7
#include <asm/system.h>
9
#ifdef CONFIG_X86_LOCAL_APIC
14
#define Dprintk(x...) printk(x)
20
* Basic functions accessing APICs.
23
static __inline void apic_write(unsigned long reg, unsigned long v)
25
*((volatile unsigned long *)(APIC_BASE+reg)) = v;
28
static __inline void apic_write_atomic(unsigned long reg, unsigned long v)
30
xchg((volatile unsigned long *)(APIC_BASE+reg), v);
33
static __inline unsigned long apic_read(unsigned long reg)
35
return *((volatile unsigned long *)(APIC_BASE+reg));
38
static __inline__ void apic_wait_icr_idle(void)
40
do { } while ( apic_read( APIC_ICR ) & APIC_ICR_BUSY );
43
#ifdef CONFIG_X86_GOOD_APIC
44
# define FORCE_READ_AROUND_WRITE 0
45
# define apic_read_around(x)
46
# define apic_write_around(x,y) apic_write((x),(y))
48
# define FORCE_READ_AROUND_WRITE 1
49
# define apic_read_around(x) apic_read(x)
50
# define apic_write_around(x,y) apic_write_atomic((x),(y))
53
static inline void ack_APIC_irq(void)
56
* ack_APIC_irq() actually gets compiled as a single instruction:
57
* - a single rmw on Pentium/82489DX
58
* - a single write on P6+ cores (CONFIG_X86_GOOD_APIC)
62
/* Docs say use 0 for future compatibility */
63
apic_write_around(APIC_EOI, 0);
66
extern int get_maxlvt(void);
67
extern void connect_bsp_APIC (void);
68
extern void disconnect_bsp_APIC (void);
69
extern void disable_local_APIC (void);
70
extern int verify_local_APIC (void);
71
extern void sync_Arb_IDs (void);
72
extern void init_bsp_APIC (void);
73
extern void setup_local_APIC (void);
74
extern void init_apic_mappings (void);
75
extern void setup_APIC_clocks (void);
76
extern void setup_apic_nmi_watchdog (void);
77
extern inline void nmi_watchdog_tick (struct pt_regs * regs);
78
extern int APIC_init_uniprocessor (void);
79
extern void disable_APIC_timer(void);
80
extern void enable_APIC_timer(void);
82
//extern struct pm_dev *apic_pm_register(pm_dev_t, unsigned long, pm_callback);
83
//extern void apic_pm_unregister(struct pm_dev*);
85
extern unsigned int watchdog_on;
87
extern unsigned int apic_timer_irqs [NR_CPUS];
88
extern int check_nmi_watchdog (void);
90
extern unsigned int nmi_watchdog;
93
#define NMI_LOCAL_APIC 2
96
#endif /* CONFIG_X86_LOCAL_APIC */
98
#endif /* __ASM_APIC_H */