Coverage Report

Created: 2017-10-25 09:10

/root/src/xen/xen/include/asm/mpspec.h
Line
Count
Source (jump to first uncovered line)
1
#ifndef __ASM_MPSPEC_H
2
#define __ASM_MPSPEC_H
3
4
#include <xen/cpumask.h>
5
#include <asm/mpspec_def.h>
6
#include <mach_mpspec.h>
7
8
extern unsigned char mp_bus_id_to_type[MAX_MP_BUSSES];
9
10
extern bool def_to_bigsmp;
11
extern unsigned int boot_cpu_physical_apicid;
12
extern bool smp_found_config;
13
extern void find_smp_config (void);
14
extern void get_smp_config (void);
15
extern unsigned char apic_version [MAX_APICS];
16
extern int mp_irq_entries;
17
extern struct mpc_config_intsrc mp_irqs [MAX_IRQ_SOURCES];
18
extern int mpc_default_type;
19
extern unsigned long mp_lapic_addr;
20
extern bool pic_mode;
21
22
#ifdef CONFIG_ACPI
23
extern int mp_register_lapic(u32 id, bool enabled, bool hotplug);
24
extern void mp_unregister_lapic(uint32_t apic_id, uint32_t cpu);
25
extern void mp_register_lapic_address (u64 address);
26
extern void mp_register_ioapic (u8 id, u32 address, u32 gsi_base);
27
extern void mp_override_legacy_irq (u8 bus_irq, u8 polarity, u8 trigger, u32 gsi);
28
extern void mp_config_acpi_legacy_irqs (void);
29
extern int mp_register_gsi (u32 gsi, int edge_level, int active_high_low);
30
#endif /* CONFIG_ACPI */
31
32
#define PHYSID_ARRAY_SIZE BITS_TO_LONGS(MAX_APICS)
33
34
struct physid_mask
35
{
36
  unsigned long mask[PHYSID_ARRAY_SIZE];
37
};
38
39
typedef struct physid_mask physid_mask_t;
40
41
12
#define physid_set(physid, map)     set_bit(physid, (map).mask)
42
0
#define physid_clear(physid, map)   clear_bit(physid, (map).mask)
43
13
#define physid_isset(physid, map)   test_bit(physid, (map).mask)
44
#define physid_test_and_set(physid, map)  test_and_set_bit(physid, (map).mask)
45
46
#define first_physid(map)     find_first_bit((map).mask, \
47
                     MAX_APICS)
48
#define next_physid(id, map)      find_next_bit((map).mask, \
49
                    MAX_APICS, (id) + 1)
50
1
#define last_physid(map) ({ \
51
1
  const unsigned long *mask = (map).mask; \
52
1
  unsigned int id, last = MAX_APICS; \
53
13
  for (id = find_first_bit(mask, MAX_APICS); id < MAX_APICS; \
54
12
       id = find_next_bit(mask, MAX_APICS, (id) + 1)) \
55
12
    last = id; \
56
1
  last; \
57
1
})
58
59
#define physids_and(dst, src1, src2)    bitmap_and((dst).mask, (src1).mask, (src2).mask, MAX_APICS)
60
#define physids_or(dst, src1, src2)   bitmap_or((dst).mask, (src1).mask, (src2).mask, MAX_APICS)
61
0
#define physids_clear(map)      bitmap_zero((map).mask, MAX_APICS)
62
#define physids_complement(dst, src)    bitmap_complement((dst).mask,(src).mask, MAX_APICS)
63
0
#define physids_empty(map)      bitmap_empty((map).mask, MAX_APICS)
64
#define physids_equal(map1, map2)   bitmap_equal((map1).mask, (map2).mask, MAX_APICS)
65
#define physids_weight(map)     bitmap_weight((map).mask, MAX_APICS)
66
67
#define PHYSID_MASK_ALL   { {[0 ... PHYSID_ARRAY_SIZE-1] = ~0UL} }
68
0
#define PHYSID_MASK_NONE  { {[0 ... PHYSID_ARRAY_SIZE-1] = 0UL} }
69
70
extern physid_mask_t phys_cpu_present_map;
71
72
#endif
73