Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.16 147 lines 3.7 kB view raw
1#ifndef __ASM_APIC_H 2#define __ASM_APIC_H 3 4#include <linux/config.h> 5#include <linux/pm.h> 6#include <asm/fixmap.h> 7#include <asm/apicdef.h> 8#include <asm/processor.h> 9#include <asm/system.h> 10 11#define Dprintk(x...) 12 13/* 14 * Debugging macros 15 */ 16#define APIC_QUIET 0 17#define APIC_VERBOSE 1 18#define APIC_DEBUG 2 19 20extern int enable_local_apic; 21extern int apic_verbosity; 22 23static inline void lapic_disable(void) 24{ 25 enable_local_apic = -1; 26 clear_bit(X86_FEATURE_APIC, boot_cpu_data.x86_capability); 27} 28 29static inline void lapic_enable(void) 30{ 31 enable_local_apic = 1; 32} 33 34/* 35 * Define the default level of output to be very little 36 * This can be turned up by using apic=verbose for more 37 * information and apic=debug for _lots_ of information. 38 * apic_verbosity is defined in apic.c 39 */ 40#define apic_printk(v, s, a...) do { \ 41 if ((v) <= apic_verbosity) \ 42 printk(s, ##a); \ 43 } while (0) 44 45 46#ifdef CONFIG_X86_LOCAL_APIC 47 48/* 49 * Basic functions accessing APICs. 50 */ 51 52static __inline void apic_write(unsigned long reg, unsigned long v) 53{ 54 *((volatile unsigned long *)(APIC_BASE+reg)) = v; 55} 56 57static __inline void apic_write_atomic(unsigned long reg, unsigned long v) 58{ 59 xchg((volatile unsigned long *)(APIC_BASE+reg), v); 60} 61 62static __inline unsigned long apic_read(unsigned long reg) 63{ 64 return *((volatile unsigned long *)(APIC_BASE+reg)); 65} 66 67static __inline__ void apic_wait_icr_idle(void) 68{ 69 while ( apic_read( APIC_ICR ) & APIC_ICR_BUSY ) 70 cpu_relax(); 71} 72 73int get_physical_broadcast(void); 74 75#ifdef CONFIG_X86_GOOD_APIC 76# define FORCE_READ_AROUND_WRITE 0 77# define apic_read_around(x) 78# define apic_write_around(x,y) apic_write((x),(y)) 79#else 80# define FORCE_READ_AROUND_WRITE 1 81# define apic_read_around(x) apic_read(x) 82# define apic_write_around(x,y) apic_write_atomic((x),(y)) 83#endif 84 85static inline void ack_APIC_irq(void) 86{ 87 /* 88 * ack_APIC_irq() actually gets compiled as a single instruction: 89 * - a single rmw on Pentium/82489DX 90 * - a single write on P6+ cores (CONFIG_X86_GOOD_APIC) 91 * ... yummie. 92 */ 93 94 /* Docs say use 0 for future compatibility */ 95 apic_write_around(APIC_EOI, 0); 96} 97 98extern void (*wait_timer_tick)(void); 99 100extern int get_maxlvt(void); 101extern void clear_local_APIC(void); 102extern void connect_bsp_APIC (void); 103extern void disconnect_bsp_APIC (int virt_wire_setup); 104extern void disable_local_APIC (void); 105extern void lapic_shutdown (void); 106extern int verify_local_APIC (void); 107extern void cache_APIC_registers (void); 108extern void sync_Arb_IDs (void); 109extern void init_bsp_APIC (void); 110extern void setup_local_APIC (void); 111extern void init_apic_mappings (void); 112extern void smp_local_timer_interrupt (struct pt_regs * regs); 113extern void setup_boot_APIC_clock (void); 114extern void setup_secondary_APIC_clock (void); 115extern void setup_apic_nmi_watchdog (void); 116extern int reserve_lapic_nmi(void); 117extern void release_lapic_nmi(void); 118extern void disable_timer_nmi_watchdog(void); 119extern void enable_timer_nmi_watchdog(void); 120extern void nmi_watchdog_tick (struct pt_regs * regs); 121extern int APIC_init_uniprocessor (void); 122extern void disable_APIC_timer(void); 123extern void enable_APIC_timer(void); 124 125extern void enable_NMI_through_LVT0 (void * dummy); 126 127extern unsigned int nmi_watchdog; 128#define NMI_NONE 0 129#define NMI_IO_APIC 1 130#define NMI_LOCAL_APIC 2 131#define NMI_INVALID 3 132 133extern int disable_timer_pin_1; 134 135void smp_send_timer_broadcast_ipi(struct pt_regs *regs); 136void switch_APIC_timer_to_ipi(void *cpumask); 137void switch_ipi_to_APIC_timer(void *cpumask); 138#define ARCH_APICTIMER_STOPS_ON_C3 1 139 140extern int timer_over_8254; 141 142#else /* !CONFIG_X86_LOCAL_APIC */ 143static inline void lapic_shutdown(void) { } 144 145#endif /* !CONFIG_X86_LOCAL_APIC */ 146 147#endif /* __ASM_APIC_H */