1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#ifndef _ASM_ACPI_H
27#define _ASM_ACPI_H
28
29#ifdef __KERNEL__
30
31#define COMPILER_DEPENDENT_INT64 long long
32#define COMPILER_DEPENDENT_UINT64 unsigned long long
33
34
35
36
37
38
39
40
41
42#define ACPI_SYSTEM_XFACE
43#define ACPI_EXTERNAL_XFACE
44#define ACPI_INTERNAL_XFACE
45#define ACPI_INTERNAL_VAR_XFACE
46
47
48
49#define ACPI_ASM_MACROS
50#define BREAKPOINT3
51#define ACPI_DISABLE_IRQS() __cli()
52#define ACPI_ENABLE_IRQS() __sti()
53#define ACPI_FLUSH_CPU_CACHE() wbinvd()
54
55static inline int
56__acpi_acquire_global_lock (unsigned int *lock)
57{
58 unsigned int old, new, val;
59 do {
60 old = *lock;
61 new = (((old & ~0x3) + 2) + ((old >> 1) & 0x1));
62 val = cmpxchg(lock, old, new);
63 } while (unlikely (val != old));
64 return (new < 3) ? -1 : 0;
65}
66
67static inline int
68__acpi_release_global_lock (unsigned int *lock)
69{
70 unsigned int old, new, val;
71 do {
72 old = *lock;
73 new = old & ~0x3;
74 val = cmpxchg(lock, old, new);
75 } while (unlikely (val != old));
76 return old & 0x1;
77}
78
79#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \
80 ((Acq) = __acpi_acquire_global_lock((unsigned int *) GLptr))
81
82#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) \
83 ((Acq) = __acpi_release_global_lock((unsigned int *) GLptr))
84
85
86
87
88#define ACPI_DIV_64_BY_32(n_hi, n_lo, d32, q32, r32) \
89 asm("divl %2;" \
90 :"=a"(q32), "=d"(r32) \
91 :"r"(d32), \
92 "0"(n_lo), "1"(n_hi))
93
94#define ACPI_SHIFT_RIGHT_64(n_hi, n_lo) \
95 asm("shrl $1,%2;" \
96 "rcrl $1,%3;" \
97 :"=r"(n_hi), "=r"(n_lo) \
98 :"0"(n_hi), "1"(n_lo))
99#ifdef CONFIG_ACPI_PCI
100extern int acpi_noirq;
101extern int acpi_pci_disabled;
102static inline void acpi_noirq_set(void) { acpi_noirq = 1; }
103static inline void acpi_disable_pci(void)
104{
105 acpi_pci_disabled = 1;
106 acpi_noirq_set();
107}
108extern int acpi_irq_balance_set(char *str);
109#else
110static inline void acpi_noirq_set(void) { }
111static inline void acpi_disable_pci(void) { acpi_noirq_set(); }
112static inline int acpi_irq_balance_set(char *str) { return 0; }
113#endif
114
115#ifdef CONFIG_ACPI_BOOT
116extern int acpi_lapic;
117extern int acpi_ioapic;
118extern int acpi_strict;
119extern int acpi_disabled;
120extern int acpi_ht;
121extern int acpi_skip_timer_override;
122static inline void disable_acpi(void)
123{
124 acpi_disabled = 1;
125 acpi_ht = 0;
126 acpi_disable_pci();
127}
128
129
130#define FIX_ACPI_PAGES 4
131
132#else
133#define acpi_lapic 0
134#define acpi_ioapic 0
135#endif
136
137
138#ifdef CONFIG_ACPI_SLEEP
139
140
141extern int acpi_save_state_mem(void);
142extern int acpi_save_state_disk(void);
143extern void acpi_restore_state_mem(void);
144
145extern unsigned long acpi_wakeup_address;
146
147
148extern void acpi_reserve_bootmem(void);
149
150#endif
151
152#define boot_cpu_physical_apicid boot_cpu_id
153
154#endif
155
156#endif
157