diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-03-19 01:28:40 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-03-19 01:28:40 +0000 |
commit | 8abb719409c9060a7c0676f76e9182c1e0b8ca46 (patch) | |
tree | b88cc5a6cd513a04a512b7e6215c873c90a1c5dd /arch/sparc/kernel | |
parent | f01bd7aeafd95a08aafc9e3636bb26974df69d82 (diff) |
Merge with 2.3.99-pre1.
Diffstat (limited to 'arch/sparc/kernel')
-rw-r--r-- | arch/sparc/kernel/sys_solaris.c | 2 | ||||
-rw-r--r-- | arch/sparc/kernel/sys_sunos.c | 53 | ||||
-rw-r--r-- | arch/sparc/kernel/systbls.S | 6 |
3 files changed, 6 insertions, 55 deletions
diff --git a/arch/sparc/kernel/sys_solaris.c b/arch/sparc/kernel/sys_solaris.c index 6c46c60f0..8a9d54913 100644 --- a/arch/sparc/kernel/sys_solaris.c +++ b/arch/sparc/kernel/sys_solaris.c @@ -15,12 +15,14 @@ #include <linux/smp.h> #include <linux/smp_lock.h> +/* CHECKME: this stuff looks rather bogus */ asmlinkage int do_solaris_syscall (struct pt_regs *regs) { int ret; lock_kernel(); + put_exec_domain(current->exec_domain); current->personality = PER_SVR4; current->exec_domain = lookup_exec_domain(PER_SVR4); diff --git a/arch/sparc/kernel/sys_sunos.c b/arch/sparc/kernel/sys_sunos.c index 1d6f208f6..262f6afdd 100644 --- a/arch/sparc/kernel/sys_sunos.c +++ b/arch/sparc/kernel/sys_sunos.c @@ -1,4 +1,4 @@ -/* $Id: sys_sunos.c,v 1.114 2000/03/07 22:27:27 davem Exp $ +/* $Id: sys_sunos.c,v 1.115 2000/03/13 21:57:23 davem Exp $ * sys_sunos.c: SunOS specific syscall compatibility support. * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -296,57 +296,6 @@ asmlinkage void sunos_madvise(unsigned long address, unsigned long len, unlock_kernel(); } -/* Places into character array, the status of all the pages in the passed - * range from 'addr' to 'addr + len'. -1 on failure, 0 on success... - * The encoding in each character is: - * low-bit is zero == Page is not in physical ram right now - * low-bit is one == Page is currently residing in core - * All other bits are undefined within the character so there... - * Also, if you try to get stats on an area outside of the user vm area - * *or* the passed base address is not aligned on a page boundary you - * get an error. - */ -asmlinkage int sunos_mincore(unsigned long addr, unsigned long len, char *array) -{ - pgd_t *pgdp; - pmd_t *pmdp; - pte_t *ptep; - unsigned long limit; - int num_pages, pnum, retval = -EINVAL; - - lock_kernel(); - if(addr & ~(PAGE_MASK)) - goto out; - - num_pages = (len / PAGE_SIZE); - retval = -EFAULT; - if(verify_area(VERIFY_WRITE, array, num_pages)) - goto out; - retval = -ENOMEM; - if((addr >= PAGE_OFFSET) || ((addr + len) > PAGE_OFFSET)) - goto out; /* I'm sure you're curious about kernel mappings.. */ - - /* Wheee, go through pte's */ - pnum = 0; - for(limit = addr + len; addr < limit; addr += PAGE_SIZE, pnum++) { - pgdp = pgd_offset(current->mm, addr); - if(pgd_none(*pgdp)) - goto out; /* As per SunOS manpage */ - pmdp = pmd_offset(pgdp, addr); - if(pmd_none(*pmdp)) - goto out; /* As per SunOS manpage */ - ptep = pte_offset(pmdp, addr); - if(pte_none(*ptep)) - goto out; /* As per SunOS manpage */ - /* Page in core or Swapped page? */ - __put_user((pte_present(*ptep) ? 1 : 0), &array[pnum]); - } - retval = 0; /* Success... I think... */ -out: - unlock_kernel(); - return retval; -} - /* This just wants the soft limit (ie. rlim_cur element) of the RLIMIT_NOFILE * resource limit and is for backwards compatibility with older sunos * revs. diff --git a/arch/sparc/kernel/systbls.S b/arch/sparc/kernel/systbls.S index 8746958d7..42c072164 100644 --- a/arch/sparc/kernel/systbls.S +++ b/arch/sparc/kernel/systbls.S @@ -1,4 +1,4 @@ -/* $Id: systbls.S,v 1.94 2000/02/16 07:31:30 davem Exp $ +/* $Id: systbls.S,v 1.95 2000/03/13 21:57:23 davem Exp $ * systbls.S: System call entry point tables for OS compatibility. * The native Linux system call table lives here also. * @@ -33,7 +33,7 @@ sys_call_table: /*60*/ .long sys_umask, sys_chroot, sys_newfstat, sys_fstat64, sys_getpagesize /*65*/ .long sys_msync, sys_vfork, sys_pread, sys_pwrite, sys_geteuid /*70*/ .long sys_getegid, sys_mmap, sys_setreuid, sys_munmap, sys_mprotect -/*75*/ .long sys_nis_syscall, sys_vhangup, sys_truncate64, sys_nis_syscall, sys_getgroups16 +/*75*/ .long sys_nis_syscall, sys_vhangup, sys_truncate64, sys_mincore, sys_getgroups16 /*80*/ .long sys_setgroups16, sys_getpgrp, sys_setgroups, sys_setitimer, sys_ftruncate64 /*85*/ .long sys_swapon, sys_getitimer, sys_setuid, sys_sethostname, sys_setgid /*90*/ .long sys_dup2, sys_setfsuid, sys_fcntl, sys_select, sys_setfsgid @@ -104,7 +104,7 @@ sunos_sys_table: .long sunos_nosys, sunos_sbrk, sunos_sstk .long sunos_mmap, sunos_vadvise, sys_munmap .long sys_mprotect, sunos_madvise, sys_vhangup - .long sunos_nosys, sunos_mincore, sys_getgroups16 + .long sunos_nosys, sys_mincore, sys_getgroups16 .long sys_setgroups16, sys_getpgrp, sunos_setpgrp .long sys_setitimer, sunos_nosys, sys_swapon .long sys_getitimer, sys_gethostname, sys_sethostname |