1 /* 2 * linux/arch/alpha/kernel/ksyms.c 3 * 4 * Export the alpha-specific functions that are needed for loadable 5 * modules. 6 */ 7 8 #include <linux/config.h> 9 #include <linux/module.h> 10 #include <linux/string.h> 11 #include <linux/user.h> 12 #include <linux/elfcore.h> 13 #include <linux/socket.h> 14 #include <linux/in.h> 15 #include <linux/in6.h> 16 #include <linux/pci.h> 17 #include <linux/tty.h> 18 #include <linux/mm.h> 19 #include <linux/delay.h> 20 21 #include <asm/io.h> 22 #include <asm/console.h> 23 #include <asm/hwrpb.h> 24 #include <asm/uaccess.h> 25 #include <asm/processor.h> 26 #include <asm/checksum.h> 27 #include <linux/interrupt.h> 28 #include <asm/softirq.h> 29 #include <asm/fpu.h> 30 #include <asm/irq.h> 31 #include <asm/machvec.h> 32 #include <asm/pgalloc.h> 33 #include <asm/semaphore.h> 34 35 #define __KERNEL_SYSCALLS__ 36 #include <asm/unistd.h> 37 38 extern struct hwrpb_struct *hwrpb; 39 extern void dump_thread(struct pt_regs *, struct user *); 40 extern void dump_elf_thread(elf_gregset_t dest, struct pt_regs *pt, 41 struct task_struct *task); 42 extern int dump_fpu(struct pt_regs *, elf_fpregset_t *); 43 extern spinlock_t kernel_flag; 44 extern spinlock_t rtc_lock; 45 46 /* these are C runtime functions with special calling conventions: */ 47 extern void __divl (void); 48 extern void __reml (void); 49 extern void __divq (void); 50 extern void __remq (void); 51 extern void __divlu (void); 52 extern void __remlu (void); 53 extern void __divqu (void); 54 extern void __remqu (void); 55 56 EXPORT_SYMBOL(alpha_mv); 57 EXPORT_SYMBOL(enable_irq); 58 EXPORT_SYMBOL(disable_irq); 59 EXPORT_SYMBOL(disable_irq_nosync); 60 EXPORT_SYMBOL(probe_irq_mask); 61 EXPORT_SYMBOL(screen_info); 62 EXPORT_SYMBOL(perf_irq); 63 EXPORT_SYMBOL(callback_getenv); 64 EXPORT_SYMBOL(callback_setenv); 65 EXPORT_SYMBOL(callback_save_env); 66 #ifdef CONFIG_ALPHA_GENERIC 67 EXPORT_SYMBOL(alpha_using_srm); 68 #endif /* CNFIG_ALPHA_GENERIC */ 69 70 /* platform dependent support */ 71 EXPORT_SYMBOL(_inb); 72 EXPORT_SYMBOL(_inw); 73 EXPORT_SYMBOL(_inl); 74 EXPORT_SYMBOL(_outb); 75 EXPORT_SYMBOL(_outw); 76 EXPORT_SYMBOL(_outl); 77 EXPORT_SYMBOL(_readb); 78 EXPORT_SYMBOL(_readw); 79 EXPORT_SYMBOL(_readl); 80 EXPORT_SYMBOL(_writeb); 81 EXPORT_SYMBOL(_writew); 82 EXPORT_SYMBOL(_writel); 83 EXPORT_SYMBOL(___raw_readb); 84 EXPORT_SYMBOL(___raw_readw); 85 EXPORT_SYMBOL(___raw_readl); 86 EXPORT_SYMBOL(___raw_readq); 87 EXPORT_SYMBOL(___raw_writeb); 88 EXPORT_SYMBOL(___raw_writew); 89 EXPORT_SYMBOL(___raw_writel); 90 EXPORT_SYMBOL(___raw_writeq); 91 EXPORT_SYMBOL(_memcpy_fromio); 92 EXPORT_SYMBOL(_memcpy_toio); 93 EXPORT_SYMBOL(_memset_c_io); 94 EXPORT_SYMBOL(insb); 95 EXPORT_SYMBOL(insw); 96 EXPORT_SYMBOL(insl); 97 EXPORT_SYMBOL(outsb); 98 EXPORT_SYMBOL(outsw); 99 EXPORT_SYMBOL(outsl); 100 EXPORT_SYMBOL(strcat); 101 EXPORT_SYMBOL(strcmp); 102 EXPORT_SYMBOL(strcpy); 103 EXPORT_SYMBOL(strlen); 104 EXPORT_SYMBOL(strncmp); 105 EXPORT_SYMBOL(strncpy); 106 EXPORT_SYMBOL(strnlen); 107 EXPORT_SYMBOL(strncat); 108 EXPORT_SYMBOL(strstr); 109 EXPORT_SYMBOL(strtok); 110 EXPORT_SYMBOL(strpbrk); 111 EXPORT_SYMBOL(strchr); 112 EXPORT_SYMBOL(strrchr); 113 EXPORT_SYMBOL(memcmp); 114 EXPORT_SYMBOL(memmove); 115 EXPORT_SYMBOL(memscan); 116 EXPORT_SYMBOL(__memcpy); 117 EXPORT_SYMBOL(__memset); 118 EXPORT_SYMBOL(__memsetw); 119 EXPORT_SYMBOL(__constant_c_memset); 120 EXPORT_SYMBOL(copy_page); 121 EXPORT_SYMBOL(clear_page); 122 123 EXPORT_SYMBOL(__delay); 124 EXPORT_SYMBOL(ndelay); 125 EXPORT_SYMBOL(udelay); 126 127 EXPORT_SYMBOL(__direct_map_base); 128 EXPORT_SYMBOL(__direct_map_size); 129 130 #ifdef CONFIG_PCI 131 EXPORT_SYMBOL(pci_alloc_consistent); 132 EXPORT_SYMBOL(pci_free_consistent); 133 EXPORT_SYMBOL(pci_map_single); 134 EXPORT_SYMBOL(pci_map_page); 135 EXPORT_SYMBOL(pci_unmap_single); 136 EXPORT_SYMBOL(pci_unmap_page); 137 EXPORT_SYMBOL(pci_map_sg); 138 EXPORT_SYMBOL(pci_unmap_sg); 139 EXPORT_SYMBOL(pci_dma_supported); 140 EXPORT_SYMBOL(pci_dac_dma_supported); 141 EXPORT_SYMBOL(pci_dac_page_to_dma); 142 EXPORT_SYMBOL(pci_dac_dma_to_page); 143 EXPORT_SYMBOL(pci_dac_dma_to_offset); 144 #endif 145 146 EXPORT_SYMBOL(dump_thread); 147 EXPORT_SYMBOL(dump_elf_thread); 148 EXPORT_SYMBOL(dump_fpu); 149 EXPORT_SYMBOL(hwrpb); 150 EXPORT_SYMBOL(wrusp); 151 EXPORT_SYMBOL(start_thread); 152 EXPORT_SYMBOL(alpha_read_fp_reg); 153 EXPORT_SYMBOL(alpha_read_fp_reg_s); 154 EXPORT_SYMBOL(alpha_write_fp_reg); 155 EXPORT_SYMBOL(alpha_write_fp_reg_s); 156 157 /* In-kernel system calls. */ 158 EXPORT_SYMBOL(kernel_thread); 159 EXPORT_SYMBOL(sys_open); 160 EXPORT_SYMBOL(sys_dup); 161 EXPORT_SYMBOL(sys_exit); 162 EXPORT_SYMBOL(sys_write); 163 EXPORT_SYMBOL(sys_read); 164 EXPORT_SYMBOL(sys_lseek); 165 EXPORT_SYMBOL(__kernel_execve); 166 EXPORT_SYMBOL(sys_setsid); 167 EXPORT_SYMBOL(sys_sync); 168 EXPORT_SYMBOL(sys_wait4); 169 170 /* Networking helper routines. */ 171 EXPORT_SYMBOL(csum_tcpudp_magic); 172 EXPORT_SYMBOL(ip_compute_csum); 173 EXPORT_SYMBOL(ip_fast_csum); 174 EXPORT_SYMBOL(csum_partial_copy); 175 EXPORT_SYMBOL(csum_partial_copy_nocheck); 176 EXPORT_SYMBOL(csum_partial_copy_from_user); 177 EXPORT_SYMBOL(csum_ipv6_magic); 178 179 #ifdef CONFIG_MATHEMU_MODULE 180 extern long (*alpha_fp_emul_imprecise)(struct pt_regs *, unsigned long); 181 extern long (*alpha_fp_emul) (unsigned long pc); 182 EXPORT_SYMBOL(alpha_fp_emul_imprecise); 183 EXPORT_SYMBOL(alpha_fp_emul); 184 #endif 185 186 #ifdef CONFIG_ALPHA_BROKEN_IRQ_MASK 187 EXPORT_SYMBOL(__min_ipl); 188 #endif 189 190 /* 191 * The following are specially called from the uaccess assembly stubs. 192 */ 193 EXPORT_SYMBOL_NOVERS(__copy_user); 194 EXPORT_SYMBOL_NOVERS(__do_clear_user); 195 EXPORT_SYMBOL(__strncpy_from_user); 196 EXPORT_SYMBOL(__strnlen_user); 197 198 /* Semaphore helper functions. */ 199 EXPORT_SYMBOL(__down_failed); 200 EXPORT_SYMBOL(__down_failed_interruptible); 201 EXPORT_SYMBOL(__up_wakeup); 202 EXPORT_SYMBOL(down); 203 EXPORT_SYMBOL(down_interruptible); 204 EXPORT_SYMBOL(down_trylock); 205 EXPORT_SYMBOL(up); 206 207 /* 208 * SMP-specific symbols. 209 */ 210 211 #ifdef CONFIG_SMP 212 EXPORT_SYMBOL(kernel_flag); 213 EXPORT_SYMBOL(synchronize_irq); 214 EXPORT_SYMBOL(flush_tlb_all); 215 EXPORT_SYMBOL(flush_tlb_mm); 216 EXPORT_SYMBOL(flush_tlb_range); 217 EXPORT_SYMBOL(flush_tlb_page); 218 EXPORT_SYMBOL(smp_imb); 219 EXPORT_SYMBOL(cpu_data); 220 EXPORT_SYMBOL(__cpu_number_map); 221 EXPORT_SYMBOL(__cpu_logical_map); 222 EXPORT_SYMBOL(smp_num_cpus); 223 EXPORT_SYMBOL(smp_call_function); 224 EXPORT_SYMBOL(smp_call_function_on_cpu); 225 EXPORT_SYMBOL(global_irq_holder); 226 EXPORT_SYMBOL(__global_cli); 227 EXPORT_SYMBOL(__global_sti); 228 EXPORT_SYMBOL(__global_save_flags); 229 EXPORT_SYMBOL(__global_restore_flags); 230 EXPORT_SYMBOL(atomic_dec_and_lock); 231 #ifdef CONFIG_DEBUG_SPINLOCK 232 EXPORT_SYMBOL(spin_unlock); 233 EXPORT_SYMBOL(debug_spin_lock); 234 EXPORT_SYMBOL(debug_spin_trylock); 235 #endif 236 #ifdef CONFIG_DEBUG_RWLOCK 237 EXPORT_SYMBOL(write_lock); 238 EXPORT_SYMBOL(read_lock); 239 #endif 240 EXPORT_SYMBOL(cpu_present_mask); 241 #endif /* CONFIG_SMP */ 242 243 /* 244 * NUMA specific symbols 245 */ 246 #ifdef CONFIG_DISCONTIGMEM 247 EXPORT_SYMBOL(plat_node_data); 248 #endif /* CONFIG_DISCONTIGMEM */ 249 250 EXPORT_SYMBOL(rtc_lock); 251 252 /* 253 * The following are special because they're not called 254 * explicitly (the C compiler or assembler generates them in 255 * response to division operations). Fortunately, their 256 * interface isn't gonna change any time soon now, so it's OK 257 * to leave it out of version control. 258 */ 259 # undef memcpy 260 # undef memset 261 EXPORT_SYMBOL_NOVERS(__divl); 262 EXPORT_SYMBOL_NOVERS(__divlu); 263 EXPORT_SYMBOL_NOVERS(__divq); 264 EXPORT_SYMBOL_NOVERS(__divqu); 265 EXPORT_SYMBOL_NOVERS(__reml); 266 EXPORT_SYMBOL_NOVERS(__remlu); 267 EXPORT_SYMBOL_NOVERS(__remq); 268 EXPORT_SYMBOL_NOVERS(__remqu); 269 EXPORT_SYMBOL_NOVERS(memcpy); 270 EXPORT_SYMBOL_NOVERS(memset); 271 EXPORT_SYMBOL_NOVERS(memchr); 272 273 EXPORT_SYMBOL(get_wchan); 274 275 #ifdef CONFIG_ALPHA_IRONGATE 276 EXPORT_SYMBOL(irongate_ioremap); 277 EXPORT_SYMBOL(irongate_iounmap); 278 #endif 279 #ifdef CONFIG_ALPHA_TITAN 280 EXPORT_SYMBOL(titan_ioremap); 281 EXPORT_SYMBOL(titan_iounmap); 282 #endif 283 #ifdef CONFIG_ALPHA_MARVEL 284 EXPORT_SYMBOL(marvel_ioremap); 285 EXPORT_SYMBOL(marvel_iounmap); 286 #endif 287