Subversion Repositories shark

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
422 giacomo 1
#ifndef __ASM_MPSPEC_H
2
#define __ASM_MPSPEC_H
3
 
4
#include <linux/cpumask.h>
5
#include <asm/mpspec_def.h>
6
#include <mach_mpspec.h>
7
 
8
extern int mp_bus_id_to_type [MAX_MP_BUSSES];
9
extern int mp_bus_id_to_node [MAX_MP_BUSSES];
10
extern int mp_bus_id_to_local [MAX_MP_BUSSES];
11
extern int quad_local_to_mp_bus_id [NR_CPUS/4][4];
12
extern int mp_bus_id_to_pci_bus [MAX_MP_BUSSES];
13
 
14
extern unsigned int boot_cpu_physical_apicid;
15
extern int smp_found_config;
16
extern void find_smp_config (void);
17
extern void get_smp_config (void);
18
extern int nr_ioapics;
19
extern int apic_version [MAX_APICS];
20
extern int mp_bus_id_to_type [MAX_MP_BUSSES];
21
extern int mp_irq_entries;
22
extern struct mpc_config_intsrc mp_irqs [MAX_IRQ_SOURCES];
23
extern int mpc_default_type;
24
extern int mp_bus_id_to_pci_bus [MAX_MP_BUSSES];
25
extern int mp_current_pci_id;
26
extern unsigned long mp_lapic_addr;
27
extern int pic_mode;
28
extern int using_apic_timer;
29
 
30
#ifdef CONFIG_X86_SUMMIT
31
extern void setup_summit (void);
32
#endif
33
 
34
#ifdef CONFIG_ACPI_BOOT
35
extern void mp_register_lapic (u8 id, u8 enabled);
36
extern void mp_register_lapic_address (u64 address);
37
extern void mp_register_ioapic (u8 id, u32 address, u32 irq_base);
38
extern void mp_override_legacy_irq (u8 bus_irq, u8 polarity, u8 trigger, u32 global_irq);
39
extern void mp_config_acpi_legacy_irqs (void);
40
extern void mp_parse_prt (void);
41
 
42
#ifdef CONFIG_X86_IO_APIC
43
extern void mp_config_ioapic_for_sci(int irq);
44
#else
45
static inline void mp_config_ioapic_for_sci(int irq)
46
{ }
47
#endif
48
#endif /*CONFIG_ACPI_BOOT*/
49
 
50
#define PHYSID_ARRAY_SIZE       BITS_TO_LONGS(MAX_APICS)
51
 
52
struct physid_mask
53
{
54
        unsigned long mask[PHYSID_ARRAY_SIZE];
55
};
56
 
57
typedef struct physid_mask physid_mask_t;
58
 
59
#define physid_set(physid, map)                 set_bit(physid, (map).mask)
60
#define physid_clear(physid, map)               clear_bit(physid, (map).mask)
61
#define physid_isset(physid, map)               test_bit(physid, (map).mask)
62
#define physid_test_and_set(physid, map)        test_and_set_bit(physid, (map).mask)
63
 
64
#define physids_and(dst, src1, src2)            bitmap_and((dst).mask, (src1).mask, (src2).mask, MAX_APICS)
65
#define physids_or(dst, src1, src2)             bitmap_or((dst).mask, (src1).mask, (src2).mask, MAX_APICS)
66
#define physids_clear(map)                      bitmap_clear((map).mask, MAX_APICS)
67
#define physids_complement(map)                 bitmap_complement((map).mask, MAX_APICS)
68
#define physids_empty(map)                      bitmap_empty((map).mask, MAX_APICS)
69
#define physids_equal(map1, map2)               bitmap_equal((map1).mask, (map2).mask, MAX_APICS)
70
#define physids_weight(map)                     bitmap_weight((map).mask, MAX_APICS)
71
#define physids_shift_right(d, s, n)            bitmap_shift_right((d).mask, (s).mask, n, MAX_APICS)
72
#define physids_shift_left(d, s, n)             bitmap_shift_left((d).mask, (s).mask, n, MAX_APICS)
73
#define physids_coerce(map)                     ((map).mask[0])
74
 
75
#define physids_promote(physids)                                                \
76
        ({                                                                      \
77
                physid_mask_t __physid_mask = PHYSID_MASK_NONE;                 \
78
                __physid_mask.mask[0] = physids;                                \
79
                __physid_mask;                                                  \
80
        })
81
 
82
#define physid_mask_of_physid(physid)                                           \
83
        ({                                                                      \
84
                physid_mask_t __physid_mask = PHYSID_MASK_NONE;                 \
85
                physid_set(physid, __physid_mask);                              \
86
                __physid_mask;                                                  \
87
        })
88
 
89
#define PHYSID_MASK_ALL         { {[0 ... PHYSID_ARRAY_SIZE-1] = ~0UL} }
90
#define PHYSID_MASK_NONE        { {[0 ... PHYSID_ARRAY_SIZE-1] = 0UL} }
91
 
92
extern physid_mask_t phys_cpu_present_map;
93
 
94
#endif
95