1/* $Id: sparc_ksyms.c,v 1.1.1.1 2007/08/03 18:52:17 Exp $ 2 * arch/sparc/kernel/ksyms.c: Sparc specific ksyms support. 3 * 4 * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) 5 * Copyright (C) 1996 Eddie C. Dost (ecd@skynet.be) 6 */ 7 8/* Tell string.h we don't want memcpy etc. as cpp defines */ 9#define EXPORT_SYMTAB_STROPS 10#define PROMLIB_INTERNAL 11 12#include <linux/module.h> 13#include <linux/init.h> 14#include <linux/smp.h> 15#include <linux/types.h> 16#include <linux/string.h> 17#include <linux/sched.h> 18#include <linux/interrupt.h> 19#include <linux/in6.h> 20#include <linux/spinlock.h> 21#include <linux/mm.h> 22#include <linux/syscalls.h> 23#ifdef CONFIG_PCI 24#include <linux/pci.h> 25#endif 26#include <linux/pm.h> 27#ifdef CONFIG_HIGHMEM 28#include <linux/highmem.h> 29#endif 30 31#include <asm/oplib.h> 32#include <asm/delay.h> 33#include <asm/system.h> 34#include <asm/auxio.h> 35#include <asm/pgtable.h> 36#include <asm/io.h> 37#include <asm/irq.h> 38#include <asm/idprom.h> 39#include <asm/svr4.h> 40#include <asm/head.h> 41#include <asm/smp.h> 42#include <asm/mostek.h> 43#include <asm/ptrace.h> 44#include <asm/user.h> 45#include <asm/uaccess.h> 46#include <asm/checksum.h> 47#ifdef CONFIG_SBUS 48#include <asm/sbus.h> 49#include <asm/dma.h> 50#endif 51#ifdef CONFIG_PCI 52#include <asm/ebus.h> 53#endif 54#include <asm/a.out.h> 55#include <asm/io-unit.h> 56#include <asm/bug.h> 57 58extern spinlock_t rtc_lock; 59 60struct poll { 61 int fd; 62 short events; 63 short revents; 64}; 65 66extern int svr4_getcontext (svr4_ucontext_t *, struct pt_regs *); 67extern int svr4_setcontext (svr4_ucontext_t *, struct pt_regs *); 68extern void (*__copy_1page)(void *, const void *); 69extern void __memmove(void *, const void *, __kernel_size_t); 70extern void (*bzero_1page)(void *); 71extern void *__bzero(void *, size_t); 72extern void *__memscan_zero(void *, size_t); 73extern void *__memscan_generic(void *, int, size_t); 74extern int __memcmp(const void *, const void *, __kernel_size_t); 75extern int __strncmp(const char *, const char *, __kernel_size_t); 76 77extern int __ashrdi3(int, int); 78extern int __ashldi3(int, int); 79extern int __lshrdi3(int, int); 80extern int __muldi3(int, int); 81extern int __divdi3(int, int); 82 83/* Private functions with odd calling conventions. */ 84extern void ___atomic24_add(void); 85extern void ___atomic24_sub(void); 86extern void ___rw_read_enter(void); 87extern void ___rw_read_try(void); 88extern void ___rw_read_exit(void); 89extern void ___rw_write_enter(void); 90 91/* Alias functions whose names begin with "." and export the aliases. 92 * The module references will be fixed up by module_frob_arch_sections. 93 */ 94extern int _Div(int, int); 95extern int _Mul(int, int); 96extern int _Rem(int, int); 97extern unsigned _Udiv(unsigned, unsigned); 98extern unsigned _Umul(unsigned, unsigned); 99extern unsigned _Urem(unsigned, unsigned); 100 101/* used by various drivers */ 102EXPORT_SYMBOL(sparc_cpu_model); 103EXPORT_SYMBOL(kernel_thread); 104#ifdef CONFIG_SMP 105EXPORT_SYMBOL(___rw_read_enter); 106EXPORT_SYMBOL(___rw_read_try); 107EXPORT_SYMBOL(___rw_read_exit); 108EXPORT_SYMBOL(___rw_write_enter); 109#endif 110/* semaphores */ 111EXPORT_SYMBOL(__up); 112EXPORT_SYMBOL(__down); 113EXPORT_SYMBOL(__down_trylock); 114EXPORT_SYMBOL(__down_interruptible); 115 116EXPORT_SYMBOL(sparc_valid_addr_bitmap); 117EXPORT_SYMBOL(phys_base); 118EXPORT_SYMBOL(pfn_base); 119 120/* Atomic operations. */ 121EXPORT_SYMBOL(___atomic24_add); 122EXPORT_SYMBOL(___atomic24_sub); 123 124/* Per-CPU information table */ 125EXPORT_PER_CPU_SYMBOL(__cpu_data); 126 127#ifdef CONFIG_SMP 128/* IRQ implementation. */ 129EXPORT_SYMBOL(synchronize_irq); 130 131/* CPU online map and active count. */ 132EXPORT_SYMBOL(cpu_online_map); 133EXPORT_SYMBOL(phys_cpu_present_map); 134#endif 135 136EXPORT_SYMBOL(__udelay); 137EXPORT_SYMBOL(__ndelay); 138EXPORT_SYMBOL(rtc_lock); 139EXPORT_SYMBOL(mostek_lock); 140EXPORT_SYMBOL(mstk48t02_regs); 141#ifdef CONFIG_SUN_AUXIO 142EXPORT_SYMBOL(set_auxio); 143EXPORT_SYMBOL(get_auxio); 144#endif 145EXPORT_SYMBOL(request_fast_irq); 146EXPORT_SYMBOL(io_remap_pfn_range); 147 /* P3: iounit_xxx may be needed, sun4d users */ 148/* EXPORT_SYMBOL(iounit_map_dma_init); */ 149/* EXPORT_SYMBOL(iounit_map_dma_page); */ 150 151#ifndef CONFIG_SMP 152EXPORT_SYMBOL(BTFIXUP_CALL(___xchg32)); 153#else 154EXPORT_SYMBOL(BTFIXUP_CALL(__hard_smp_processor_id)); 155#endif 156EXPORT_SYMBOL(BTFIXUP_CALL(enable_irq)); 157EXPORT_SYMBOL(BTFIXUP_CALL(disable_irq)); 158EXPORT_SYMBOL(BTFIXUP_CALL(mmu_unlockarea)); 159EXPORT_SYMBOL(BTFIXUP_CALL(mmu_lockarea)); 160EXPORT_SYMBOL(BTFIXUP_CALL(mmu_get_scsi_sgl)); 161EXPORT_SYMBOL(BTFIXUP_CALL(mmu_get_scsi_one)); 162EXPORT_SYMBOL(BTFIXUP_CALL(mmu_release_scsi_sgl)); 163EXPORT_SYMBOL(BTFIXUP_CALL(mmu_release_scsi_one)); 164 165#ifdef CONFIG_SBUS 166EXPORT_SYMBOL(sbus_root); 167EXPORT_SYMBOL(dma_chain); 168EXPORT_SYMBOL(sbus_set_sbus64); 169EXPORT_SYMBOL(sbus_alloc_consistent); 170EXPORT_SYMBOL(sbus_free_consistent); 171EXPORT_SYMBOL(sbus_map_single); 172EXPORT_SYMBOL(sbus_unmap_single); 173EXPORT_SYMBOL(sbus_map_sg); 174EXPORT_SYMBOL(sbus_unmap_sg); 175EXPORT_SYMBOL(sbus_dma_sync_single_for_cpu); 176EXPORT_SYMBOL(sbus_dma_sync_single_for_device); 177EXPORT_SYMBOL(sbus_dma_sync_sg_for_cpu); 178EXPORT_SYMBOL(sbus_dma_sync_sg_for_device); 179EXPORT_SYMBOL(sbus_iounmap); 180EXPORT_SYMBOL(sbus_ioremap); 181#endif 182#ifdef CONFIG_PCI 183EXPORT_SYMBOL(ebus_chain); 184EXPORT_SYMBOL(insb); 185EXPORT_SYMBOL(outsb); 186EXPORT_SYMBOL(insw); 187EXPORT_SYMBOL(outsw); 188EXPORT_SYMBOL(insl); 189EXPORT_SYMBOL(outsl); 190EXPORT_SYMBOL(pci_alloc_consistent); 191EXPORT_SYMBOL(pci_free_consistent); 192EXPORT_SYMBOL(pci_map_single); 193EXPORT_SYMBOL(pci_unmap_single); 194EXPORT_SYMBOL(pci_dma_sync_single_for_cpu); 195EXPORT_SYMBOL(pci_dma_sync_single_for_device); 196EXPORT_SYMBOL(pci_dma_sync_sg_for_cpu); 197EXPORT_SYMBOL(pci_dma_sync_sg_for_device); 198EXPORT_SYMBOL(pci_map_sg); 199EXPORT_SYMBOL(pci_unmap_sg); 200EXPORT_SYMBOL(pci_map_page); 201EXPORT_SYMBOL(pci_unmap_page); 202/* Actually, ioremap/iounmap are not PCI specific. But it is ok for drivers. */ 203EXPORT_SYMBOL(ioremap); 204EXPORT_SYMBOL(iounmap); 205#endif 206 207/* in arch/sparc/mm/highmem.c */ 208#ifdef CONFIG_HIGHMEM 209EXPORT_SYMBOL(kmap_atomic); 210EXPORT_SYMBOL(kunmap_atomic); 211#endif 212 213/* Solaris/SunOS binary compatibility */ 214EXPORT_SYMBOL(svr4_setcontext); 215EXPORT_SYMBOL(svr4_getcontext); 216 217EXPORT_SYMBOL(dump_thread); 218 219/* prom symbols */ 220EXPORT_SYMBOL(idprom); 221EXPORT_SYMBOL(prom_root_node); 222EXPORT_SYMBOL(prom_getchild); 223EXPORT_SYMBOL(prom_getsibling); 224EXPORT_SYMBOL(prom_searchsiblings); 225EXPORT_SYMBOL(prom_firstprop); 226EXPORT_SYMBOL(prom_nextprop); 227EXPORT_SYMBOL(prom_getproplen); 228EXPORT_SYMBOL(prom_getproperty); 229EXPORT_SYMBOL(prom_node_has_property); 230EXPORT_SYMBOL(prom_setprop); 231EXPORT_SYMBOL(saved_command_line); 232EXPORT_SYMBOL(prom_apply_obio_ranges); 233EXPORT_SYMBOL(prom_feval); 234EXPORT_SYMBOL(prom_getbool); 235EXPORT_SYMBOL(prom_getstring); 236EXPORT_SYMBOL(prom_getint); 237EXPORT_SYMBOL(prom_getintdefault); 238EXPORT_SYMBOL(prom_finddevice); 239EXPORT_SYMBOL(romvec); 240EXPORT_SYMBOL(__prom_getchild); 241EXPORT_SYMBOL(__prom_getsibling); 242 243/* sparc library symbols */ 244EXPORT_SYMBOL(memscan); 245EXPORT_SYMBOL(strlen); 246EXPORT_SYMBOL(strncmp); 247EXPORT_SYMBOL(page_kernel); 248 249/* Special internal versions of library functions. */ 250EXPORT_SYMBOL(__copy_1page); 251EXPORT_SYMBOL(__memcpy); 252EXPORT_SYMBOL(__memset); 253EXPORT_SYMBOL(bzero_1page); 254EXPORT_SYMBOL(__bzero); 255EXPORT_SYMBOL(__memscan_zero); 256EXPORT_SYMBOL(__memscan_generic); 257EXPORT_SYMBOL(__memcmp); 258EXPORT_SYMBOL(__strncmp); 259EXPORT_SYMBOL(__memmove); 260 261/* Moving data to/from userspace. */ 262EXPORT_SYMBOL(__copy_user); 263EXPORT_SYMBOL(__strncpy_from_user); 264 265/* Networking helper routines. */ 266EXPORT_SYMBOL(__csum_partial_copy_sparc_generic); 267EXPORT_SYMBOL(csum_partial); 268 269/* Cache flushing. */ 270EXPORT_SYMBOL(sparc_flush_page_to_ram); 271 272/* For when serial stuff is built as modules. */ 273EXPORT_SYMBOL(sun_do_break); 274 275EXPORT_SYMBOL(__ret_efault); 276 277EXPORT_SYMBOL(memcmp); 278EXPORT_SYMBOL(memcpy); 279EXPORT_SYMBOL(memset); 280EXPORT_SYMBOL(memmove); 281EXPORT_SYMBOL(__ashrdi3); 282EXPORT_SYMBOL(__ashldi3); 283EXPORT_SYMBOL(__lshrdi3); 284EXPORT_SYMBOL(__muldi3); 285EXPORT_SYMBOL(__divdi3); 286 287EXPORT_SYMBOL(_Rem); 288EXPORT_SYMBOL(_Urem); 289EXPORT_SYMBOL(_Mul); 290EXPORT_SYMBOL(_Umul); 291EXPORT_SYMBOL(_Div); 292EXPORT_SYMBOL(_Udiv); 293 294#ifdef CONFIG_DEBUG_BUGVERBOSE 295EXPORT_SYMBOL(do_BUG); 296#endif 297 298/* Sun Power Management Idle Handler */ 299EXPORT_SYMBOL(pm_idle); 300