diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1997-01-07 02:33:00 +0000 |
---|---|---|
committer | <ralf@linux-mips.org> | 1997-01-07 02:33:00 +0000 |
commit | beb116954b9b7f3bb56412b2494b562f02b864b1 (patch) | |
tree | 120e997879884e1b9d93b265221b939d2ef1ade1 /arch/sparc/kernel/sparc_ksyms.c | |
parent | 908d4681a1dc3792ecafbe64265783a86c4cccb6 (diff) |
Import of Linux/MIPS 2.1.14
Diffstat (limited to 'arch/sparc/kernel/sparc_ksyms.c')
-rw-r--r-- | arch/sparc/kernel/sparc_ksyms.c | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/arch/sparc/kernel/sparc_ksyms.c b/arch/sparc/kernel/sparc_ksyms.c new file mode 100644 index 000000000..fe10f0447 --- /dev/null +++ b/arch/sparc/kernel/sparc_ksyms.c @@ -0,0 +1,187 @@ +/* $Id: sparc_ksyms.c,v 1.24 1996/10/27 08:36:08 davem Exp $ + * arch/sparc/kernel/ksyms.c: Sparc specific ksyms support. + * + * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) + * Copyright (C) 1996 Eddie C. Dost (ecd@skynet.be) + */ + +#include <linux/config.h> +#include <linux/module.h> +#include <linux/types.h> +#include <linux/string.h> + +#include <asm/oplib.h> +#include <asm/delay.h> +#include <asm/system.h> +#include <asm/auxio.h> +#include <asm/pgtable.h> +#include <asm/io.h> +#include <asm/irq.h> +#include <asm/idprom.h> +#include <asm/svr4.h> +#include <asm/head.h> +#include <asm/smp.h> +#include <asm/mostek.h> +#include <asm/ptrace.h> +#include <asm/user.h> +#ifdef CONFIG_SBUS +#include <asm/sbus.h> +#endif + +struct poll { + int fd; + short events; + short revents; +}; + +extern int svr4_getcontext (svr4_ucontext_t *, struct pt_regs *); +extern int svr4_setcontext (svr4_ucontext_t *, struct pt_regs *); +extern int sunos_poll(struct poll * ufds, size_t nfds, int timeout); +extern unsigned long sunos_mmap(unsigned long, unsigned long, unsigned long, + unsigned long, unsigned long, unsigned long); +void _sigpause_common (unsigned int set, struct pt_regs *); +extern void __copy_1page(void *, const void *); +extern void *__memcpy(void *, const void *, __kernel_size_t); +extern void *__memset(void *, int, __kernel_size_t); +extern void *bzero_1page(void *); +extern void *__bzero(void *, size_t); +extern void *__memscan_zero(void *, size_t); +extern void *__memscan_generic(void *, int, size_t); +extern int __memcmp(const void *, const void *, __kernel_size_t); +extern int __strncmp(const char *, const char *, __kernel_size_t); + +extern int __copy_to_user(unsigned long to, unsigned long from, int size); +extern int __copy_from_user(unsigned long to, unsigned long from, int size); +extern int __clear_user(unsigned long addr, int size); +extern int __strncpy_from_user(unsigned long dest, unsigned long src, int count); + +extern void bcopy (const char *, char *, int); +extern int __ashrdi3(int, int); + +extern void dump_thread(struct pt_regs *, struct user *); + +/* One thing to note is that the way the symbols of the mul/div + * support routines are named is a mess, they all start with + * a '.' which makes it a bitch to export, here is the trick: + */ +#define DD(sym) extern int __sparc_dot_ ## sym (int) __asm__("." ## #sym) +#define XD(sym) { (void *) & __sparc_dot_ ## sym, "." ## #sym } + +DD(rem); +DD(urem); +DD(div); +DD(udiv); +DD(mul); +DD(umul); + +static struct symbol_table arch_symbol_table = { +#include <linux/symtab_begin.h> + + /* used by various drivers */ + X(sparc_cpu_model), +#ifdef __SMP__ + X(kernel_flag), + X(kernel_counter), + X(active_kernel_processor), + X(syscall_count), +#endif + X(page_offset), + + X(udelay), + X(mstk48t02_regs), +#if CONFIG_SUN_AUXIO + X(auxio_register), +#endif + X(request_fast_irq), + X(sparc_alloc_io), + X(sparc_free_io), + X(mmu_unlockarea), + X(mmu_lockarea), + X(SBus_chain), + + /* Solaris/SunOS binary compatibility */ + X(svr4_setcontext), + X(svr4_getcontext), + X(_sigpause_common), + X(sunos_mmap), + X(sunos_poll), + + /* Should really be in linux/kernel/ksyms.c */ + X(dump_thread), + + /* prom symbols */ + X(idprom), + X(prom_root_node), + X(prom_getchild), + X(prom_getsibling), + X(prom_searchsiblings), + X(prom_firstprop), + X(prom_nextprop), + X(prom_getproplen), + X(prom_getproperty), + X(prom_setprop), + X(prom_nodeops), + X(prom_getbootargs), + X(prom_apply_obio_ranges), + X(prom_getname), + X(prom_feval), + X(romvec), + + /* sparc library symbols */ + X(bcopy), + X(memmove), + X(memscan), + X(strlen), + X(strnlen), + X(strcpy), + X(strncpy), + X(strcat), + X(strncat), + X(strcmp), + X(strncmp), + X(strchr), + X(strrchr), + X(strpbrk), + X(strtok), + X(strstr), + X(strspn), + + /* Special internal versions of library functions. */ + X(__copy_1page), + X(__memcpy), + X(__memset), + X(bzero_1page), + X(__bzero), + X(__memscan_zero), + X(__memscan_generic), + X(__memcmp), + X(__strncmp), + + /* Moving data to/from userspace. */ + X(__copy_to_user), + X(__copy_from_user), + X(__clear_user), + X(__strncpy_from_user), + + /* No version information on these, as gcc produces such symbols. */ + XNOVERS(memcmp), + XNOVERS(memcpy), + XNOVERS(memset), + XNOVERS(__ashrdi3), + + XD(rem), + XD(urem), + XD(mul), + XD(umul), + XD(div), + XD(udiv), +#include <linux/symtab_end.h> +}; + +void arch_syms_export(void) +{ + register_symtab(&arch_symbol_table); +#if CONFIG_AP1000 + ap_register_ksyms(); +#endif +} |