~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/asm-i386/apic.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #ifndef __ASM_APIC_H
  2 #define __ASM_APIC_H
  3 
  4 #include <linux/config.h>
  5 #include <asm/apicdef.h>
  6 #include <asm/system.h>
  7 
  8 #define APIC_DEBUG 1
  9 
 10 #ifdef CONFIG_X86_LOCAL_APIC
 11 
 12 #if APIC_DEBUG
 13 #define Dprintk(x...) printk(x)
 14 #else
 15 #define Dprintk(x...)
 16 #endif
 17 
 18 /*
 19  * Basic functions accessing APICs.
 20  */
 21 
 22 extern __inline void apic_write(unsigned long reg, unsigned long v)
 23 {
 24         *((volatile unsigned long *)(APIC_BASE+reg)) = v;
 25 }
 26 
 27 extern __inline void apic_write_atomic(unsigned long reg, unsigned long v)
 28 {
 29         xchg((volatile unsigned long *)(APIC_BASE+reg), v);
 30 }
 31 
 32 extern __inline unsigned long apic_read(unsigned long reg)
 33 {
 34         return *((volatile unsigned long *)(APIC_BASE+reg));
 35 }
 36 
 37 static __inline__ void apic_wait_icr_idle(void)
 38 {
 39         do { } while ( apic_read( APIC_ICR ) & APIC_ICR_BUSY );
 40 }
 41 
 42 extern unsigned int apic_timer_irqs [NR_CPUS];
 43 
 44 #ifdef CONFIG_X86_GOOD_APIC
 45 # define FORCE_READ_AROUND_WRITE 0
 46 # define apic_read_around(x)
 47 # define apic_write_around(x,y) apic_write((x),(y))
 48 #else
 49 # define FORCE_READ_AROUND_WRITE 1
 50 # define apic_read_around(x) apic_read(x)
 51 # define apic_write_around(x,y) apic_write_atomic((x),(y))
 52 #endif
 53 
 54 extern inline void ack_APIC_irq(void)
 55 {
 56         /*
 57          * ack_APIC_irq() actually gets compiled as a single instruction:
 58          * - a single rmw on Pentium/82489DX
 59          * - a single write on P6+ cores (CONFIG_X86_GOOD_APIC)
 60          * ... yummie.
 61          */
 62 
 63         /* Docs say use 0 for future compatibility */
 64         apic_write_around(APIC_EOI, 0);
 65 }
 66 
 67 extern int get_maxlvt(void);
 68 extern void connect_bsp_APIC (void);
 69 extern void disconnect_bsp_APIC (void);
 70 extern void disable_local_APIC (void);
 71 extern int verify_local_APIC (void);
 72 extern void cache_APIC_registers (void);
 73 extern void sync_Arb_IDs(void);
 74 extern void setup_local_APIC (void);
 75 extern void init_apic_mappings(void);
 76 extern void smp_local_timer_interrupt(struct pt_regs * regs);
 77 extern void setup_APIC_clocks(void);
 78 #endif
 79 
 80 #endif
 81 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.