linux/include/asm-i386/apic.h
<<
>>
Prefs
   1#ifndef __ASM_APIC_H
   2#define __ASM_APIC_H
   3
   4#include <linux/pm.h>
   5#include <linux/delay.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 apic_verbosity;
  21
  22/*
  23 * Define the default level of output to be very little
  24 * This can be turned up by using apic=verbose for more
  25 * information and apic=debug for _lots_ of information.
  26 * apic_verbosity is defined in apic.c
  27 */
  28#define apic_printk(v, s, a...) do {       \
  29                if ((v) <= apic_verbosity) \
  30                        printk(s, ##a);    \
  31        } while (0)
  32
  33
  34extern void generic_apic_probe(void);
  35
  36#ifdef CONFIG_X86_LOCAL_APIC
  37
  38/*
  39 * Basic functions accessing APICs.
  40 */
  41#ifdef CONFIG_PARAVIRT
  42#include <asm/paravirt.h>
  43#else
  44#define apic_write native_apic_write
  45#define apic_write_atomic native_apic_write_atomic
  46#define apic_read native_apic_read
  47#define setup_boot_clock setup_boot_APIC_clock
  48#define setup_secondary_clock setup_secondary_APIC_clock
  49#endif
  50
  51static __inline fastcall void native_apic_write(unsigned long reg,
  52                                                unsigned long v)
  53{
  54        *((volatile unsigned long *)(APIC_BASE+reg)) = v;
  55}
  56
  57static __inline fastcall void native_apic_write_atomic(unsigned long reg,
  58                                                       unsigned long v)
  59{
  60        xchg((volatile unsigned long *)(APIC_BASE+reg), v);
  61}
  62
  63static __inline fastcall unsigned long native_apic_read(unsigned long reg)
  64{
  65        return *((volatile unsigned long *)(APIC_BASE+reg));
  66}
  67
  68void apic_wait_icr_idle(void);
  69unsigned long safe_apic_wait_icr_idle(void);
  70int get_physical_broadcast(void);
  71
  72#ifdef CONFIG_X86_GOOD_APIC
  73# define FORCE_READ_AROUND_WRITE 0
  74# define apic_read_around(x)
  75# define apic_write_around(x,y) apic_write((x),(y))
  76#else
  77# define FORCE_READ_AROUND_WRITE 1
  78# define apic_read_around(x) apic_read(x)
  79# define apic_write_around(x,y) apic_write_atomic((x),(y))
  80#endif
  81
  82static inline void ack_APIC_irq(void)
  83{
  84        /*
  85         * ack_APIC_irq() actually gets compiled as a single instruction:
  86         * - a single rmw on Pentium/82489DX
  87         * - a single write on P6+ cores (CONFIG_X86_GOOD_APIC)
  88         * ... yummie.
  89         */
  90
  91        /* Docs say use 0 for future compatibility */
  92        apic_write_around(APIC_EOI, 0);
  93}
  94
  95extern int lapic_get_maxlvt(void);
  96extern void clear_local_APIC(void);
  97extern void connect_bsp_APIC (void);
  98extern void disconnect_bsp_APIC (int virt_wire_setup);
  99extern void disable_local_APIC (void);
 100extern void lapic_shutdown (void);
 101extern int verify_local_APIC (void);
 102extern void cache_APIC_registers (void);
 103extern void sync_Arb_IDs (void);
 104extern void init_bsp_APIC (void);
 105extern void setup_local_APIC (void);
 106extern void init_apic_mappings (void);
 107extern void smp_local_timer_interrupt (void);
 108extern void setup_boot_APIC_clock (void);
 109extern void setup_secondary_APIC_clock (void);
 110extern int APIC_init_uniprocessor (void);
 111
 112extern void enable_NMI_through_LVT0 (void * dummy);
 113
 114#define ARCH_APICTIMER_STOPS_ON_C3      1
 115
 116extern int timer_over_8254;
 117extern int local_apic_timer_c2_ok;
 118
 119extern int local_apic_timer_disabled;
 120
 121#else /* !CONFIG_X86_LOCAL_APIC */
 122static inline void lapic_shutdown(void) { }
 123
 124#endif /* !CONFIG_X86_LOCAL_APIC */
 125
 126#endif /* __ASM_APIC_H */
 127
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.