1/* 2 * linux/arch/arm/kernel/armksyms.c 3 * 4 * Copyright (C) 2000 Russell King 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 as 8 * published by the Free Software Foundation. 9 */ 10#include <linux/config.h> 11#include <linux/module.h> 12#include <linux/user.h> 13#include <linux/string.h> 14#include <linux/fs.h> 15#include <linux/mm.h> 16#include <linux/mman.h> 17#include <linux/pci.h> 18#include <linux/delay.h> 19#include <linux/in6.h> 20#include <linux/interrupt.h> 21#include <linux/pm.h> 22#include <linux/vt_kern.h> 23 24#include <asm/byteorder.h> 25#include <asm/elf.h> 26#include <asm/io.h> 27#include <asm/irq.h> 28#include <asm/pgalloc.h> 29#include <asm/proc-fns.h> 30#include <asm/processor.h> 31#include <asm/semaphore.h> 32#include <asm/system.h> 33#include <asm/uaccess.h> 34#include <asm/checksum.h> 35#include <asm/mach-types.h> 36 37extern void dump_thread(struct pt_regs *, struct user *); 38extern int dump_fpu(struct pt_regs *, struct user_fp_struct *); 39extern void inswb(unsigned int port, void *to, int len); 40extern void outswb(unsigned int port, const void *to, int len); 41 42extern void __bad_xchg(volatile void *ptr, int size); 43 44/* 45 * syscalls 46 */ 47extern int sys_write(int, const char *, int); 48extern int sys_read(int, char *, int); 49extern int sys_lseek(int, off_t, int); 50extern int sys_exit(int); 51 52/* 53 * libgcc functions - functions that are used internally by the 54 * compiler... (prototypes are not correct though, but that 55 * doesn't really matter since they're not versioned). 56 */ 57extern void __ashldi3(void); 58extern void __ashrdi3(void); 59extern void __divsi3(void); 60extern void __lshrdi3(void); 61extern void __modsi3(void); 62extern void __muldi3(void); 63extern void __ucmpdi2(void); 64extern void __udivdi3(void); 65extern void __udivmoddi4(void); 66extern void __udivsi3(void); 67extern void __umodsi3(void); 68 69extern void ret_from_exception(void); 70extern void fpundefinstr(void); 71extern void fp_enter(void); 72 73/* 74 * This has a special calling convention; it doesn't 75 * modify any of the usual registers, except for LR. 76 */ 77extern void __do_softirq(void); 78 79#define EXPORT_SYMBOL_ALIAS(sym,orig) \ 80 const char __kstrtab_##sym[] \ 81 __attribute__((section(".kstrtab"))) = \ 82 __MODULE_STRING(sym); \ 83 const struct module_symbol __ksymtab_##sym \ 84 __attribute__((section("__ksymtab"))) = \ 85 { (unsigned long)&orig, __kstrtab_##sym }; 86 87/* 88 * floating point math emulator support. 89 * These symbols will never change their calling convention... 90 */ 91EXPORT_SYMBOL_ALIAS(kern_fp_enter,fp_enter); 92EXPORT_SYMBOL_ALIAS(fp_printk,printk); 93EXPORT_SYMBOL_ALIAS(fp_send_sig,send_sig); 94 95#ifdef CONFIG_CPU_26 96EXPORT_SYMBOL(fpundefinstr); 97EXPORT_SYMBOL(ret_from_exception); 98#endif 99 100#ifdef CONFIG_VT 101EXPORT_SYMBOL(kd_mksound); 102#endif 103 104EXPORT_SYMBOL_NOVERS(__do_softirq); 105 106 /* platform dependent support */ 107EXPORT_SYMBOL(dump_thread); 108EXPORT_SYMBOL(dump_fpu); 109EXPORT_SYMBOL(udelay); 110#ifdef CONFIG_CPU_32 111EXPORT_SYMBOL(__ioremap); 112EXPORT_SYMBOL(__iounmap); 113#endif 114EXPORT_SYMBOL(kernel_thread); 115EXPORT_SYMBOL(system_rev); 116EXPORT_SYMBOL(system_serial_low); 117EXPORT_SYMBOL(system_serial_high); 118#ifdef CONFIG_DEBUG_BUGVERBOSE 119EXPORT_SYMBOL(__bug); 120#endif 121EXPORT_SYMBOL(__bad_xchg); 122EXPORT_SYMBOL(__readwrite_bug); 123EXPORT_SYMBOL(enable_irq); 124EXPORT_SYMBOL(disable_irq); 125EXPORT_SYMBOL(pm_idle); 126EXPORT_SYMBOL(pm_power_off); 127 128 /* processor dependencies */ 129EXPORT_SYMBOL(__machine_arch_type); 130 131 /* networking */ 132EXPORT_SYMBOL(csum_partial_copy_nocheck); 133EXPORT_SYMBOL(__csum_ipv6_magic); 134 135 /* io */ 136#ifndef __raw_readsb 137EXPORT_SYMBOL_NOVERS(__raw_readsb); 138#endif 139#ifndef __raw_readsw 140EXPORT_SYMBOL_NOVERS(__raw_readsw); 141#endif 142#ifndef __raw_readsl 143EXPORT_SYMBOL_NOVERS(__raw_readsl); 144#endif 145#ifndef __raw_writesb 146EXPORT_SYMBOL_NOVERS(__raw_writesb); 147#endif 148#ifndef __raw_writesw 149EXPORT_SYMBOL_NOVERS(__raw_writesw); 150#endif 151#ifndef __raw_writesl 152EXPORT_SYMBOL_NOVERS(__raw_writesl); 153#endif 154 155 /* address translation */ 156#ifndef __virt_to_phys__is_a_macro 157EXPORT_SYMBOL(__virt_to_phys); 158#endif 159#ifndef __phys_to_virt__is_a_macro 160EXPORT_SYMBOL(__phys_to_virt); 161#endif 162#ifndef __virt_to_bus__is_a_macro 163EXPORT_SYMBOL(__virt_to_bus); 164#endif 165#ifndef __bus_to_virt__is_a_macro 166EXPORT_SYMBOL(__bus_to_virt); 167#endif 168 169#ifndef CONFIG_NO_PGT_CACHE 170EXPORT_SYMBOL(quicklists); 171#endif 172 173 /* string / mem functions */ 174EXPORT_SYMBOL_NOVERS(strcpy); 175EXPORT_SYMBOL_NOVERS(strncpy); 176EXPORT_SYMBOL_NOVERS(strcat); 177EXPORT_SYMBOL_NOVERS(strncat); 178EXPORT_SYMBOL_NOVERS(strcmp); 179EXPORT_SYMBOL_NOVERS(strncmp); 180EXPORT_SYMBOL_NOVERS(strchr); 181EXPORT_SYMBOL_NOVERS(strlen); 182EXPORT_SYMBOL_NOVERS(strnlen); 183EXPORT_SYMBOL_NOVERS(strpbrk); 184EXPORT_SYMBOL_NOVERS(strtok); 185EXPORT_SYMBOL_NOVERS(strrchr); 186EXPORT_SYMBOL_NOVERS(strstr); 187EXPORT_SYMBOL_NOVERS(memset); 188EXPORT_SYMBOL_NOVERS(memcpy); 189EXPORT_SYMBOL_NOVERS(memmove); 190EXPORT_SYMBOL_NOVERS(memcmp); 191EXPORT_SYMBOL_NOVERS(memscan); 192EXPORT_SYMBOL_NOVERS(__memzero); 193 194 /* user mem (segment) */ 195#if defined(CONFIG_CPU_32) 196EXPORT_SYMBOL(__arch_copy_from_user); 197EXPORT_SYMBOL(__arch_copy_to_user); 198EXPORT_SYMBOL(__arch_clear_user); 199EXPORT_SYMBOL(__arch_strnlen_user); 200 201 /* consistent area handling */ 202EXPORT_SYMBOL(pci_alloc_consistent); 203EXPORT_SYMBOL(consistent_alloc); 204EXPORT_SYMBOL(consistent_free); 205EXPORT_SYMBOL(consistent_sync); 206 207#elif defined(CONFIG_CPU_26) 208EXPORT_SYMBOL(uaccess_kernel); 209EXPORT_SYMBOL(uaccess_user); 210#endif 211 212EXPORT_SYMBOL_NOVERS(__get_user_1); 213EXPORT_SYMBOL_NOVERS(__get_user_2); 214EXPORT_SYMBOL_NOVERS(__get_user_4); 215EXPORT_SYMBOL_NOVERS(__get_user_8); 216 217EXPORT_SYMBOL_NOVERS(__put_user_1); 218EXPORT_SYMBOL_NOVERS(__put_user_2); 219EXPORT_SYMBOL_NOVERS(__put_user_4); 220EXPORT_SYMBOL_NOVERS(__put_user_8); 221 222 /* gcc lib functions */ 223EXPORT_SYMBOL_NOVERS(__ashldi3); 224EXPORT_SYMBOL_NOVERS(__ashrdi3); 225EXPORT_SYMBOL_NOVERS(__divsi3); 226EXPORT_SYMBOL_NOVERS(__lshrdi3); 227EXPORT_SYMBOL_NOVERS(__modsi3); 228EXPORT_SYMBOL_NOVERS(__muldi3); 229EXPORT_SYMBOL_NOVERS(__ucmpdi2); 230EXPORT_SYMBOL_NOVERS(__udivdi3); 231EXPORT_SYMBOL_NOVERS(__udivmoddi4); 232EXPORT_SYMBOL_NOVERS(__udivsi3); 233EXPORT_SYMBOL_NOVERS(__umodsi3); 234EXPORT_SYMBOL_NOVERS(abort); 235 236 /* bitops */ 237EXPORT_SYMBOL(set_bit); 238EXPORT_SYMBOL(test_and_set_bit); 239EXPORT_SYMBOL(clear_bit); 240EXPORT_SYMBOL(test_and_clear_bit); 241EXPORT_SYMBOL(change_bit); 242EXPORT_SYMBOL(test_and_change_bit); 243EXPORT_SYMBOL(find_first_zero_bit); 244EXPORT_SYMBOL(find_next_zero_bit); 245 246 /* elf */ 247EXPORT_SYMBOL(elf_platform); 248EXPORT_SYMBOL(elf_hwcap); 249 250 /* syscalls */ 251EXPORT_SYMBOL(sys_write); 252EXPORT_SYMBOL(sys_read); 253EXPORT_SYMBOL(sys_lseek); 254EXPORT_SYMBOL(sys_open); 255EXPORT_SYMBOL(sys_exit); 256EXPORT_SYMBOL(sys_wait4); 257 258 /* semaphores */ 259EXPORT_SYMBOL_NOVERS(__down_failed); 260EXPORT_SYMBOL_NOVERS(__down_interruptible_failed); 261EXPORT_SYMBOL_NOVERS(__down_trylock_failed); 262EXPORT_SYMBOL_NOVERS(__up_wakeup); 263 264EXPORT_SYMBOL(get_wchan); 265