1 /* $Id: sparc_ksyms.c,v 1.54 1997/04/14 05:38:25 davem Exp $ 2 * arch/sparc/kernel/ksyms.c: Sparc specific ksyms support. 4 * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) 5 * Copyright (C) 1996 Eddie C. Dost (ecd@skynet.be) 8 #define PROMLIB_INTERNAL 10 #include <linux/config.h> 11 #include <linux/module.h> 12 #include <linux/types.h> 13 #include <linux/string.h> 14 #include <linux/interrupt.h> 15 #include <linux/in6.h> 17 #include <asm/oplib.h> 18 #include <asm/delay.h> 19 #include <asm/system.h> 20 #include <asm/auxio.h> 21 #include <asm/pgtable.h> 24 #include <asm/idprom.h> 28 #include <asm/mostek.h> 29 #include <asm/ptrace.h> 30 #include <asm/spinlock.h> 31 #include <asm/softirq.h> 32 #include <asm/hardirq.h> 34 #include <asm/uaccess.h> 35 #include <asm/checksum.h> 40 #include <asm/a.out.h> 48 externintsvr4_getcontext(svr4_ucontext_t
*,struct pt_regs
*); 49 externintsvr4_setcontext(svr4_ucontext_t
*,struct pt_regs
*); 50 externunsigned longsunos_mmap(unsigned long,unsigned long,unsigned long, 51 unsigned long,unsigned long,unsigned long); 52 void_sigpause_common(unsigned int set
,struct pt_regs
*); 53 externvoid__copy_1page(void*,const void*); 54 externvoid__memmove(void*,const void*, __kernel_size_t
); 55 externvoid*bzero_1page(void*); 56 externvoid*__bzero(void*,size_t); 57 externvoid*__memscan_zero(void*,size_t); 58 externvoid*__memscan_generic(void*,int,size_t); 59 externint__memcmp(const void*,const void*, __kernel_size_t
); 60 externint__strncmp(const char*,const char*, __kernel_size_t
); 62 externvoidbcopy(const char*,char*,int); 63 externint__ashrdi3(int,int); 65 externvoiddump_thread(struct pt_regs
*,struct user
*); 67 /* One thing to note is that the way the symbols of the mul/div 68 * support routines are named is a mess, they all start with 69 * a '.' which makes it a bitch to export, here is the trick: 72 #define EXPORT_SYMBOL_DOT(sym) \ 73 extern int __sparc_dot_ ## sym (int) __asm__("." #sym); \ 74 __EXPORT_SYMBOL(__sparc_dot_ ## sym,"." #sym) 76 #define EXPORT_SYMBOL_PRIVATE(sym) \ 77 extern int __sparc_priv_ ## sym (int) __asm__("__" ## #sym); \ 78 const struct module_symbol __export_priv_##sym \ 79 __attribute__((section("__ksymtab"))) = \ 80 { (unsigned long) &__sparc_priv_ ## sym,"__" ## #sym } 82 /* used by various drivers */ 83 EXPORT_SYMBOL(sparc_cpu_model
); 85 EXPORT_SYMBOL(klock_info
); 87 EXPORT_SYMBOL_PRIVATE(_lock_kernel
); 88 EXPORT_SYMBOL_PRIVATE(_unlock_kernel
); 89 EXPORT_SYMBOL_PRIVATE(_spinlock_waitfor
); 90 EXPORT_SYMBOL(__sparc_bh_counter
); 91 EXPORT_SYMBOL(page_offset
); 92 EXPORT_SYMBOL(stack_top
); 94 /* Atomic operations. */ 95 EXPORT_SYMBOL_PRIVATE(_xchg32
); 96 EXPORT_SYMBOL_PRIVATE(_atomic_add
); 97 EXPORT_SYMBOL_PRIVATE(_atomic_sub
); 100 EXPORT_SYMBOL_PRIVATE(_set_bit
); 101 EXPORT_SYMBOL_PRIVATE(_clear_bit
); 102 EXPORT_SYMBOL_PRIVATE(_change_bit
); 103 EXPORT_SYMBOL_PRIVATE(_set_le_bit
); 104 EXPORT_SYMBOL_PRIVATE(_clear_le_bit
); 106 /* IRQ implementation. */ 107 EXPORT_SYMBOL(local_irq_count
); 109 EXPORT_SYMBOL(global_irq_holder
); 110 EXPORT_SYMBOL(global_irq_lock
); 111 EXPORT_SYMBOL(global_bh_lock
); 112 EXPORT_SYMBOL(global_irq_count
); 113 EXPORT_SYMBOL(__global_cli
); 114 EXPORT_SYMBOL(__global_sti
); 115 EXPORT_SYMBOL(__global_save_flags
); 116 EXPORT_SYMBOL(__global_restore_flags
); 117 EXPORT_SYMBOL(synchronize_irq
); 120 EXPORT_SYMBOL(udelay
); 121 EXPORT_SYMBOL(mstk48t02_regs
); 123 EXPORT_SYMBOL(auxio_register
); 125 EXPORT_SYMBOL(request_fast_irq
); 126 EXPORT_SYMBOL(sparc_alloc_io
); 127 EXPORT_SYMBOL(sparc_free_io
); 128 EXPORT_SYMBOL(io_remap_page_range
); 129 EXPORT_SYMBOL(mmu_v2p
); 130 EXPORT_SYMBOL(mmu_unlockarea
); 131 EXPORT_SYMBOL(mmu_lockarea
); 132 EXPORT_SYMBOL(mmu_get_scsi_sgl
); 133 EXPORT_SYMBOL(mmu_get_scsi_one
); 134 EXPORT_SYMBOL(mmu_release_scsi_sgl
); 135 EXPORT_SYMBOL(mmu_release_scsi_one
); 136 EXPORT_SYMBOL(_sparc_dvma_malloc
); 137 EXPORT_SYMBOL(sun4c_unmapioaddr
); 138 EXPORT_SYMBOL(srmmu_unmapioaddr
); 140 EXPORT_SYMBOL(SBus_chain
); 141 EXPORT_SYMBOL(dma_chain
); 144 /* Solaris/SunOS binary compatibility */ 145 EXPORT_SYMBOL(svr4_setcontext
); 146 EXPORT_SYMBOL(svr4_getcontext
); 147 EXPORT_SYMBOL(_sigpause_common
); 148 EXPORT_SYMBOL(sunos_mmap
); 150 /* Should really be in linux/kernel/ksyms.c */ 151 EXPORT_SYMBOL(dump_thread
); 154 EXPORT_SYMBOL(idprom
); 155 EXPORT_SYMBOL(prom_root_node
); 156 EXPORT_SYMBOL(prom_getchild
); 157 EXPORT_SYMBOL(prom_getsibling
); 158 EXPORT_SYMBOL(prom_searchsiblings
); 159 EXPORT_SYMBOL(prom_firstprop
); 160 EXPORT_SYMBOL(prom_nextprop
); 161 EXPORT_SYMBOL(prom_getproplen
); 162 EXPORT_SYMBOL(prom_getproperty
); 163 EXPORT_SYMBOL(prom_node_has_property
); 164 EXPORT_SYMBOL(prom_setprop
); 165 EXPORT_SYMBOL(prom_getbootargs
); 166 EXPORT_SYMBOL(prom_apply_obio_ranges
); 167 EXPORT_SYMBOL(prom_getname
); 168 EXPORT_SYMBOL(prom_feval
); 169 EXPORT_SYMBOL(prom_getstring
); 170 EXPORT_SYMBOL(prom_apply_sbus_ranges
); 171 EXPORT_SYMBOL(prom_getint
); 172 EXPORT_SYMBOL(prom_getintdefault
); 173 EXPORT_SYMBOL(romvec
); 174 EXPORT_SYMBOL(__prom_getchild
); 175 EXPORT_SYMBOL(__prom_getsibling
); 177 /* sparc library symbols */ 178 EXPORT_SYMBOL(bcopy
); 179 EXPORT_SYMBOL(memscan
); 180 EXPORT_SYMBOL(strlen
); 181 EXPORT_SYMBOL(strnlen
); 182 EXPORT_SYMBOL(strcpy
); 183 EXPORT_SYMBOL(strncpy
); 184 EXPORT_SYMBOL(strcat
); 185 EXPORT_SYMBOL(strncat
); 186 EXPORT_SYMBOL(strcmp
); 187 EXPORT_SYMBOL(strncmp
); 188 EXPORT_SYMBOL(strchr
); 189 EXPORT_SYMBOL(strrchr
); 190 EXPORT_SYMBOL(strpbrk
); 191 EXPORT_SYMBOL(strtok
); 192 EXPORT_SYMBOL(strstr
); 193 EXPORT_SYMBOL(strspn
); 195 /* Special internal versions of library functions. */ 196 EXPORT_SYMBOL(__copy_1page
); 197 EXPORT_SYMBOL(__memcpy
); 198 EXPORT_SYMBOL(__memset
); 199 EXPORT_SYMBOL(bzero_1page
); 200 EXPORT_SYMBOL(__bzero
); 201 EXPORT_SYMBOL(__memscan_zero
); 202 EXPORT_SYMBOL(__memscan_generic
); 203 EXPORT_SYMBOL(__memcmp
); 204 EXPORT_SYMBOL(__strncmp
); 205 EXPORT_SYMBOL(__memmove
); 207 /* Moving data to/from userspace. */ 208 EXPORT_SYMBOL(__copy_user
); 209 EXPORT_SYMBOL(__strncpy_from_user
); 211 /* Networking helper routines. */ 212 /* XXX This is NOVERS because C_LABEL_STR doesn't get the version number. -DaveM */ 213 EXPORT_SYMBOL_NOVERS(__csum_partial_copy_sparc_generic
); 215 /* No version information on this, heavily used in inline asm, 216 * and will always be 'void __ret_efault(void)'. 218 EXPORT_SYMBOL_NOVERS(__ret_efault
); 220 /* No version information on these, as gcc produces such symbols. */ 221 EXPORT_SYMBOL_NOVERS(memcmp
); 222 EXPORT_SYMBOL_NOVERS(memcpy
); 223 EXPORT_SYMBOL_NOVERS(memset
); 224 EXPORT_SYMBOL_NOVERS(memmove
); 225 EXPORT_SYMBOL_NOVERS(__ashrdi3
); 227 EXPORT_SYMBOL_DOT(rem
); 228 EXPORT_SYMBOL_DOT(urem
); 229 EXPORT_SYMBOL_DOT(mul
); 230 EXPORT_SYMBOL_DOT(umul
); 231 EXPORT_SYMBOL_DOT(div
); 232 EXPORT_SYMBOL_DOT(udiv
);