This stack check implementation leverages the compiler's profiling (gcc -p)
[linux-2.6.git] / arch / i386 / kernel / i386_ksyms.c
1 #include <linux/config.h>
2 #include <linux/module.h>
3 #include <linux/smp.h>
4 #include <linux/user.h>
5 #include <linux/elfcore.h>
6 #include <linux/mca.h>
7 #include <linux/sched.h>
8 #include <linux/in6.h>
9 #include <linux/interrupt.h>
10 #include <linux/smp_lock.h>
11 #include <linux/pm.h>
12 #include <linux/pci.h>
13 #include <linux/apm_bios.h>
14 #include <linux/kernel.h>
15 #include <linux/string.h>
16 #include <linux/tty.h>
17 #include <linux/highmem.h>
18 #include <linux/time.h>
19 #include <linux/nmi.h>
20
21 #include <asm/semaphore.h>
22 #include <asm/processor.h>
23 #include <asm/i387.h>
24 #include <asm/uaccess.h>
25 #include <asm/checksum.h>
26 #include <asm/io.h>
27 #include <asm/hardirq.h>
28 #include <asm/delay.h>
29 #include <asm/irq.h>
30 #include <asm/mmx.h>
31 #include <asm/desc.h>
32 #include <asm/pgtable.h>
33 #include <asm/tlbflush.h>
34 #include <asm/nmi.h>
35 #include <asm/ist.h>
36 #include <asm/e820.h>
37
38 extern void dump_thread(struct pt_regs *, struct user *);
39 extern spinlock_t rtc_lock;
40
41 /* This is definitely a GPL-only symbol */
42 EXPORT_SYMBOL_GPL(cpu_gdt_table);
43
44 #if defined(CONFIG_APM_MODULE)
45 extern void machine_real_restart(unsigned char *, int);
46 EXPORT_SYMBOL(machine_real_restart);
47 extern void default_idle(void);
48 EXPORT_SYMBOL(default_idle);
49 #endif
50
51 #ifdef CONFIG_SMP
52 extern void FASTCALL( __write_lock_failed(rwlock_t *rw));
53 extern void FASTCALL( __read_lock_failed(rwlock_t *rw));
54 #endif
55
56 #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_HD) || defined(CONFIG_BLK_DEV_IDE_MODULE) || defined(CONFIG_BLK_DEV_HD_MODULE)
57 extern struct drive_info_struct drive_info;
58 EXPORT_SYMBOL(drive_info);
59 #endif
60
61 extern unsigned long cpu_khz;
62 extern unsigned long get_cmos_time(void);
63
64 /* platform dependent support */
65 EXPORT_SYMBOL(boot_cpu_data);
66 EXPORT_SYMBOL(MCA_bus);
67 #ifdef CONFIG_DISCONTIGMEM
68 EXPORT_SYMBOL(node_data);
69 EXPORT_SYMBOL(physnode_map);
70 #endif
71 #ifdef CONFIG_X86_NUMAQ
72 EXPORT_SYMBOL(xquad_portio);
73 #endif
74 EXPORT_SYMBOL(dump_thread);
75 EXPORT_SYMBOL(dump_fpu);
76 EXPORT_SYMBOL(dump_extended_fpu);
77 EXPORT_SYMBOL_GPL(kernel_fpu_begin);
78 EXPORT_SYMBOL(__ioremap);
79 EXPORT_SYMBOL(ioremap_nocache);
80 EXPORT_SYMBOL(iounmap);
81 EXPORT_SYMBOL(enable_irq);
82 EXPORT_SYMBOL(disable_irq);
83 EXPORT_SYMBOL(disable_irq_nosync);
84 EXPORT_SYMBOL(probe_irq_mask);
85 EXPORT_SYMBOL(kernel_thread);
86 EXPORT_SYMBOL(pm_idle);
87 EXPORT_SYMBOL(pm_power_off);
88 EXPORT_SYMBOL(get_cmos_time);
89 EXPORT_SYMBOL(cpu_khz);
90 EXPORT_SYMBOL(apm_info);
91
92 EXPORT_SYMBOL_NOVERS(__down_failed);
93 EXPORT_SYMBOL_NOVERS(__down_failed_interruptible);
94 EXPORT_SYMBOL_NOVERS(__down_failed_trylock);
95 EXPORT_SYMBOL_NOVERS(__up_wakeup);
96 /* Networking helper routines. */
97 /* Delay loops */
98 EXPORT_SYMBOL(__ndelay);
99 EXPORT_SYMBOL(__udelay);
100 EXPORT_SYMBOL(__delay);
101 EXPORT_SYMBOL(__const_udelay);
102
103 EXPORT_SYMBOL_NOVERS(__get_user_1);
104 EXPORT_SYMBOL_NOVERS(__get_user_2);
105 EXPORT_SYMBOL_NOVERS(__get_user_4);
106
107 EXPORT_SYMBOL(strpbrk);
108 EXPORT_SYMBOL(strstr);
109
110 #if !defined(CONFIG_X86_UACCESS_INDIRECT)
111 EXPORT_SYMBOL(strncpy_from_user);
112 EXPORT_SYMBOL(__direct_strncpy_from_user);
113 EXPORT_SYMBOL(clear_user);
114 EXPORT_SYMBOL(__clear_user);
115 EXPORT_SYMBOL(__copy_from_user_ll);
116 EXPORT_SYMBOL(__copy_to_user_ll);
117 EXPORT_SYMBOL(strnlen_user);
118 #else /* CONFIG_X86_UACCESS_INDIRECT */
119 EXPORT_SYMBOL(direct_csum_partial_copy_generic);
120 #endif
121
122 EXPORT_SYMBOL(dma_alloc_coherent);
123 EXPORT_SYMBOL(dma_free_coherent);
124
125 #ifdef CONFIG_PCI
126 EXPORT_SYMBOL(pcibios_penalize_isa_irq);
127 EXPORT_SYMBOL(pci_mem_start);
128 #endif
129
130 #ifdef CONFIG_PCI_BIOS
131 EXPORT_SYMBOL(pcibios_set_irq_routing);
132 EXPORT_SYMBOL(pcibios_get_irq_routing_table);
133 #endif
134
135 #ifdef CONFIG_X86_USE_3DNOW
136 EXPORT_SYMBOL(_mmx_memcpy);
137 EXPORT_SYMBOL(mmx_clear_page);
138 EXPORT_SYMBOL(mmx_copy_page);
139 #endif
140
141 #ifdef CONFIG_X86_HT
142 EXPORT_SYMBOL(smp_num_siblings);
143 EXPORT_SYMBOL(cpu_sibling_map);
144 #endif
145
146 #ifdef CONFIG_SMP
147 EXPORT_SYMBOL(cpu_data);
148 EXPORT_SYMBOL(cpu_online_map);
149 EXPORT_SYMBOL(cpu_callout_map);
150 EXPORT_SYMBOL_NOVERS(__write_lock_failed);
151 EXPORT_SYMBOL_NOVERS(__read_lock_failed);
152
153 /* Global SMP stuff */
154 EXPORT_SYMBOL(synchronize_irq);
155 EXPORT_SYMBOL(smp_call_function);
156
157 /* TLB flushing */
158 EXPORT_SYMBOL(flush_tlb_page);
159 EXPORT_SYMBOL_GPL(flush_tlb_all);
160 #endif
161
162 #ifdef CONFIG_X86_IO_APIC
163 EXPORT_SYMBOL(IO_APIC_get_PCI_irq_vector);
164 #endif
165
166 #ifdef CONFIG_MCA
167 EXPORT_SYMBOL(machine_id);
168 #endif
169
170 #ifdef CONFIG_VT
171 EXPORT_SYMBOL(screen_info);
172 #endif
173
174 EXPORT_SYMBOL(get_wchan);
175
176 EXPORT_SYMBOL(rtc_lock);
177
178 EXPORT_SYMBOL_GPL(set_nmi_callback);
179 EXPORT_SYMBOL_GPL(unset_nmi_callback);
180
181 #undef memcmp
182 extern int memcmp(const void *,const void *,__kernel_size_t);
183 EXPORT_SYMBOL_NOVERS(memcmp);
184
185 #ifdef CONFIG_HAVE_DEC_LOCK
186 EXPORT_SYMBOL(atomic_dec_and_lock);
187 #endif
188
189 EXPORT_SYMBOL(__PAGE_KERNEL);
190
191 #ifdef CONFIG_X86_STACK_CHECK
192 extern void mcount(void);
193 EXPORT_SYMBOL(mcount);
194 #endif
195
196
197 #ifdef CONFIG_HIGHMEM
198 EXPORT_SYMBOL(kmap);
199 EXPORT_SYMBOL(kunmap);
200 EXPORT_SYMBOL(kmap_atomic);
201 EXPORT_SYMBOL(kunmap_atomic);
202 EXPORT_SYMBOL(kmap_atomic_to_page);
203 #endif
204
205 #if defined(CONFIG_X86_SPEEDSTEP_SMI) || defined(CONFIG_X86_SPEEDSTEP_SMI_MODULE)
206 EXPORT_SYMBOL(ist_info);
207 #endif
208
209 EXPORT_SYMBOL(csum_partial);
210
211 EXPORT_SYMBOL_GPL(empty_zero_page);
212  
213 #ifdef CONFIG_CRASH_DUMP_MODULE
214 #ifdef CONFIG_SMP
215 extern irq_desc_t irq_desc[NR_IRQS];
216 extern unsigned long irq_affinity[NR_IRQS];
217 extern void stop_this_cpu(void *);
218 EXPORT_SYMBOL(irq_desc);
219 EXPORT_SYMBOL(irq_affinity);
220 EXPORT_SYMBOL(stop_this_cpu);
221 EXPORT_SYMBOL(dump_send_ipi);
222 #endif
223 extern int pfn_is_ram(unsigned long);
224 EXPORT_SYMBOL(pfn_is_ram);
225 #ifdef ARCH_HAS_NMI_WATCHDOG
226 EXPORT_SYMBOL(touch_nmi_watchdog);
227 #endif
228 #endif