]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] HPUX emulation updates
authorMatthew Wilcox <willy@debian.org>
Sun, 3 Nov 2002 08:20:23 +0000 (00:20 -0800)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Sun, 3 Nov 2002 08:20:23 +0000 (00:20 -0800)
Build fixes, PA64 fixes, some new hpux syscalls, VFS fixes.

arch/parisc/hpux/Makefile
arch/parisc/hpux/entry_hpux.S
arch/parisc/hpux/fs.c
arch/parisc/hpux/gate.S
arch/parisc/hpux/ioctl.c
arch/parisc/hpux/sys_hpux.c
arch/parisc/hpux/wrappers.S

index 80678fe796a6d36d076e05d6133f753c85ab2eda..1048fb69f06d6452db6d52c246f6f4ddb918547b 100644 (file)
@@ -1,9 +1,5 @@
 #
-# Makefile for the linux kernel.
+# Makefile for HPUX emulation
 #
 
 obj-y := entry_hpux.o gate.o wrappers.o fs.o ioctl.o sys_hpux.o
-
-EXTRA_AFLAGS := -traditional
-
-include $(TOPDIR)/Rules.make
index 828599c5fb84f9ce1aad5cbfe21093c8a6c9cd32..0ffd1a502cb9689826c727bddaa4fcd20e6e711a 100644 (file)
@@ -1,6 +1,6 @@
-/* -----------------------------------------------------------------------------
+/*
  *
- * Native PARISC/Linux Project (http://www.puffingroup.com/parisc)
+ * Linux/PARISC Project (http://www.parisc-linux.org/)
  *
  * modified by Matthew Wilcox <willy@bofh.ai> 1999-07-26
  */
 #include <linux/linkage.h>
 #include <asm/unistd.h>
 
-
        .text
 
 #define ENTRY_NAME(_name_) .word _name_
 
        .align 4
        .export hpux_call_table
+       .import hpux_unimplemented_wrapper
 hpux_call_table:
        ENTRY_NAME(sys_ni_syscall)      /* 0 */
        ENTRY_NAME(sys_exit)
@@ -36,7 +36,7 @@ hpux_call_table:
        ENTRY_NAME(sys_chmod)   /* 15 */
        ENTRY_NAME(sys_chown)
        ENTRY_NAME(hpux_brk)
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(sys_lseek)
        ENTRY_NAME(sys_getpid)  /* 20 */
        ENTRY_NAME(hpux_mount)
@@ -46,34 +46,34 @@ hpux_call_table:
        ENTRY_NAME(sys_stime)   /* 25 */
        ENTRY_NAME(hpux_ptrace)
        ENTRY_NAME(sys_alarm)
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(sys_pause)
        ENTRY_NAME(sys_utime)   /* 30 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(sys_access)
        ENTRY_NAME(hpux_nice)
-       ENTRY_NAME(sys_ni_syscall)      /* 35 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 35 */
        ENTRY_NAME(sys_sync)
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(sys_newstat)
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_setpgrp3)
        ENTRY_NAME(sys_newlstat)        /* 40 */
        ENTRY_NAME(sys_dup)
        ENTRY_NAME(hpux_pipe_wrapper)
        ENTRY_NAME(sys_times)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 45 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 45 */
        ENTRY_NAME(sys_setgid)
        ENTRY_NAME(sys_getgid)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 50 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 50 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(hpux_ioctl)
-       ENTRY_NAME(sys_ni_syscall)      /* 55 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 55 */
        ENTRY_NAME(sys_symlink)
        ENTRY_NAME(hpux_utssys)
        ENTRY_NAME(sys_readlink)
@@ -81,218 +81,218 @@ hpux_call_table:
        ENTRY_NAME(sys_umask)   /* 60 */
        ENTRY_NAME(sys_chroot)
        ENTRY_NAME(sys_fcntl)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 65 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 65 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(hpux_sbrk)
-       ENTRY_NAME(sys_ni_syscall)      /* 70 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 70 */
        ENTRY_NAME(sys_mmap)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 75 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 80 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 75 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 80 */
        ENTRY_NAME(sys_getpgid)
        ENTRY_NAME(sys_setpgid)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 85 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(sys_setitimer)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 85 */
+       ENTRY_NAME(sys_getitimer)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(sys_dup2)            /* 90 */
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(sys_newfstat)
        ENTRY_NAME(sys_select)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 95 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 100 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 105 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 110 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 115 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 95 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 100 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 105 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 110 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 115 */
        ENTRY_NAME(sys_gettimeofday)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 120 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 120 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(sys_fchown)
        ENTRY_NAME(sys_fchmod)
-       ENTRY_NAME(sys_ni_syscall)      /* 125 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 125 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(sys_rename)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 130 */
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 130 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(hpux_sysconf)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 135 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 135 */
        ENTRY_NAME(sys_mkdir)
        ENTRY_NAME(sys_rmdir)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 140 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 145 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 150 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 155 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 160 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 165 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 170 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 175 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 180 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 185 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 190 */
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 140 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(sys_getrlimit)
+       ENTRY_NAME(sys_setrlimit)      /* 145 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 150 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_lockf)      /* 155 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 160 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 165 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 170 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 175 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 180 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(sys_sigprocmask)      /* 185 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 190 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(hpux_getdomainname)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 195 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 195 */
+       ENTRY_NAME(hpux_statfs)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(sys_waitpid) /* 200 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 205 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 210 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 215 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 220 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 225 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 230 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 235 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 240 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 245 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 250 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 255 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 260 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 265 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 270 */
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 205 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 210 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 215 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 220 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 225 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 230 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 235 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 240 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 245 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 250 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 255 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 260 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 265 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 270 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(sys_fchdir)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(sys_accept)          /* 275 */
        ENTRY_NAME(sys_bind)
        ENTRY_NAME(sys_connect)
@@ -309,227 +309,227 @@ hpux_call_table:
        ENTRY_NAME(sys_setsockopt)
        ENTRY_NAME(sys_shutdown)
        ENTRY_NAME(sys_socket)          /* 290 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 295 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 300 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 305 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 310 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 315 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 320 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 325 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 330 */
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 295 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 300 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 305 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 310 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 315 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 320 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 325 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 330 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(sys_lchown)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 335 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 340 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 345 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 350 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_sysfs)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 335 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 340 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 345 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 350 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(sys_nanosleep)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 355 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 355 */
        ENTRY_NAME(hpux_getdents)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 360 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 360 */
        ENTRY_NAME(hpux_fstat64)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 365 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 365 */
        ENTRY_NAME(hpux_lstat64)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
        ENTRY_NAME(hpux_stat64)
-       ENTRY_NAME(sys_ni_syscall)      /* 370 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 375 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 380 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 385 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 390 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 395 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 400 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 405 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 410 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 415 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 420 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 425 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 430 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 435 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 440 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 445 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 450 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 455 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 460 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 465 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 470 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 475 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 480 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 485 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 490 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 495 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 500 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 505 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)      /* 510 */
-       ENTRY_NAME(sys_ni_syscall)
-       ENTRY_NAME(sys_ni_syscall)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 370 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 375 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 380 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_setpgrp)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 385 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 390 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 395 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 400 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 405 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 410 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 415 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 420 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 425 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 430 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 435 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 440 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 445 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 450 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 455 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 460 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 465 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 470 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 475 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 480 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 485 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 490 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 495 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 500 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 505 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)      /* 510 */
+       ENTRY_NAME(hpux_unimplemented_wrapper)
+       ENTRY_NAME(hpux_unimplemented_wrapper)
 .end
 
index 99c06ba7edc1a6de28f168a72ad6f6cab79e243e..a1261476fb83bf31872bc3de39ad4a85e15e7086 100644 (file)
@@ -34,8 +34,7 @@ out:
 }
 
 struct hpux_dirent {
-       long    d_off_pad; /* we only have a 32-bit off_t */
-       long    d_off;
+       loff_t  d_off;
        ino_t   d_ino;
        short   d_reclen;
        short   d_namlen;
@@ -52,7 +51,8 @@ struct getdents_callback {
 #define NAME_OFFSET(de) ((int) ((de)->d_name - (char *) (de)))
 #define ROUND_UP(x) (((x)+sizeof(long)-1) & ~(sizeof(long)-1))
 
-static int filldir(void * __buf, const char * name, int namlen, loff_t offset, ino_t ino)
+static int filldir(void * __buf, const char * name, int namlen, loff_t offset,
+               ino_t ino, unsigned d_type)
 {
        struct hpux_dirent * dirent;
        struct getdents_callback * buf = (struct getdents_callback *) __buf;
@@ -96,7 +96,7 @@ int hpux_getdents(unsigned int fd, struct hpux_dirent *dirent, unsigned int coun
        buf.count = count;
        buf.error = 0;
 
-       error = vfs_readdir(file, &buf, filldir);
+       error = vfs_readdir(file, filldir, &buf);
        if (error < 0)
                goto out_putf;
        error = buf.error;
@@ -139,7 +139,7 @@ static int cp_hpux_stat(struct kstat *stat, struct hpux_stat64 *statbuf)
        return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
 }
 
-long hpux_stat64(const char *path, struct hpux_stat64 *buf)
+long hpux_stat64(char *filename, struct hpux_stat64 *statbuf)
 {
        struct kstat stat;
        int error = vfs_stat(filename, &stat);
index 0b897638631507687198c5ce6c7d2869c9d76860..2680a1c0fa7742dd0b23652bdf09fc58e7e710a5 100644 (file)
@@ -1,6 +1,6 @@
-/* ------------------------------------------------------------------------------
+/*
  *
- * Linux/PARISC Project (http://www.thepuffingroup.com/parisc)
+ * Linux/PARISC Project (http://www.parisc-linux.org/)
  *
  * System call entry code Copyright (c) Matthew Wilcox 1999 <willy@bofh.ai>
  * Licensed under the GNU GPL.
@@ -8,14 +8,23 @@
  * sorry about the wall, puffin..
  */
 
-#define __ASSEMBLY__
 #include <asm/assembly.h>
-#include <asm/offset.h>
+#include <asm/offsets.h>
 #include <asm/unistd.h>
 #include <asm/errno.h>
 
+#ifdef __LP64__
+       .level          2.0w
+#else
+       .level          1.1
+#endif
        .text
 
+#ifdef __LP64__
+#define FRAME_SIZE     128
+#else
+#define FRAME_SIZE     64
+#endif
        .import hpux_call_table
        .import hpux_syscall_exit,code
        .export hpux_gateway_page
        .align 4096
 hpux_gateway_page:
        nop
-       mfsp    %sr7,%r1                        ;! we must set sr3 to the space
-       mtsp    %r1,%sr3                        ;! of the user before the gate
 #ifdef __LP64__
 #warning NEEDS WORK for 64-bit
 #endif
-       ldw     -64(%r30), %r28                 ;! 8th argument
+       ldw     -64(%r30), %r29                 ;! 8th argument
        ldw     -60(%r30), %r19                 ;! 7th argument
        ldw     -56(%r30), %r20                 ;! 6th argument
        ldw     -52(%r30), %r21                 ;! 5th argument
-       gate    .+8, %r0                        ;! become privileged
-       mtsp    %r0,%sr4                        ;! get kernel space into sr4
-       mtsp    %r0,%sr5                        ;! get kernel space into sr5
-       mtsp    %r0,%sr6                        ;! get kernel space into sr6
-       mtsp    %r0,%sr7                        ;! get kernel space into sr7
-       mfctl   %cr30,%r1                       ;! get the kernel task ptr
-       mtctl   %r0,%cr30                       ;! zero it (flag)
-       STREG   %r30,TASK_PT_GR30(%r1)          ;! preserve userspace sp
-       STREG   %r2,TASK_PT_GR2(%r1)            ;! preserve rp
-       STREG   %r27,TASK_PT_GR27(%r1)          ;! user dp
-       STREG   %r31,TASK_PT_GR31(%r1)          ;! preserve syscall return ptr
+       gate    .+8, %r0                        /* become privileged */
+       mtsp    %r0,%sr4                        /* get kernel space into sr4 */
+       mtsp    %r0,%sr5                        /* get kernel space into sr5 */
+       mtsp    %r0,%sr6                        /* get kernel space into sr6 */
+       mfsp    %sr7,%r1                        /* save user sr7 */
+       mtsp    %r1,%sr3                        /* and store it in sr3 */
+
+       mtctl   %r30,%cr28
+       mfctl   %cr30,%r1
+       xor     %r1,%r30,%r30                   /* ye olde xor trick */
+       xor     %r1,%r30,%r1
+       xor     %r1,%r30,%r30
+       ldo     TASK_SZ_ALGN+FRAME_SIZE(%r30),%r30  /* set up kernel stack */
+
+       /* N.B.: It is critical that we don't set sr7 to 0 until r30
+        *       contains a valid kernel stack pointer. It is also
+        *       critical that we don't start using the kernel stack
+        *       until after sr7 has been set to 0.
+        */
+
+       mtsp    %r0,%sr7                        /* get kernel space into sr7 */
+       STREG   %r1,TASK_PT_GR30-TASK_SZ_ALGN-FRAME_SIZE(%r30) /* save usp */
+       ldo     -TASK_SZ_ALGN-FRAME_SIZE(%r30),%r1   /* get task ptr in %r1 */
+
+       /* Save some registers for sigcontext and potential task
+          switch (see entry.S for the details of which ones are
+          saved/restored).  TASK_PT_PSW is zeroed so we can see whether
+          a process is on a syscall or not.  For an interrupt the real
+          PSW value is stored.  This is needed for gdb and sys_ptrace. */
+       STREG   %r0,  TASK_PT_PSW(%r1)
+       STREG   %r2,  TASK_PT_GR2(%r1)          /* preserve rp */
+       STREG   %r19, TASK_PT_GR19(%r1)         /* 7th argument */
+       STREG   %r20, TASK_PT_GR20(%r1)         /* 6th argument */
+       STREG   %r21, TASK_PT_GR21(%r1)         /* 5th argument */
+       STREG   %r22, TASK_PT_GR22(%r1)         /* syscall # */
+       STREG   %r23, TASK_PT_GR23(%r1)         /* 4th argument */
+       STREG   %r24, TASK_PT_GR24(%r1)         /* 3rd argument */
+       STREG   %r25, TASK_PT_GR25(%r1)         /* 2nd argument */
+       STREG   %r26, TASK_PT_GR26(%r1)         /* 1st argument */
+       STREG   %r27, TASK_PT_GR27(%r1)         /* user dp */
+       STREG   %r28, TASK_PT_GR28(%r1)         /* return value 0 */
+       STREG   %r28, TASK_PT_ORIG_R28(%r1)     /* return value 0 (saved for signals) */
+       STREG   %r29, TASK_PT_GR29(%r1)         /* 8th argument */
+       STREG   %r31, TASK_PT_GR31(%r1)         /* preserve syscall return ptr */
+       
+       ldo     TASK_PT_FR0(%r1), %r27          /* save fpregs from the kernel */
+       save_fp %r27                            /* or potential task switch  */
 
-       loadgp                                  ;! setup kernel dp
+       mfctl   %cr11, %r27                     /* i.e. SAR */
+       STREG   %r27, TASK_PT_SAR(%r1)
 
-       ldo     TASK_SZ_ALGN+64(%r1),%r30       ;! set up kernel stack
+       loadgp
 
        stw     %r21, -52(%r30)                 ;! 5th argument
        stw     %r20, -56(%r30)                 ;! 6th argument
        stw     %r19, -60(%r30)                 ;! 7th argument
-       stw     %r28, -64(%r30)                 ;! 8th argument
+       stw     %r29, -64(%r30)                 ;! 8th argument
 
        ldil    L%hpux_call_table, %r21
        ldo     R%hpux_call_table(%r21), %r21
index 9087123e1e6e2e72d3147ac6d4c96206c1930611..03d630033ddc66f23dc19dfec08f69212d7eca87 100644 (file)
@@ -19,6 +19,7 @@
  *   TIOCSPGRP
  */
 
+#include <linux/sched.h>
 #include <linux/smp_lock.h>
 #include <asm/errno.h>
 #include <asm/ioctl.h>
@@ -54,10 +55,6 @@ int hpux_ioctl(int fd, unsigned long cmd, unsigned long arg)
        case 't':
                result = hpux_ioctl_t(fd, cmd, arg);
                break;
-       default:
-               /* If my mother ever sees this, I hope she disowns me.
-                * Take this out after NYLWE. */
-               result = sys_ioctl(fd, cmd, arg);
        }
        return result;
 }
index 39877f61243b5d19f9fdfd12f9460fdd48a980cb..da0760d5e6a0b8a576ee14a0a3e4c2cc548a152b 100644 (file)
@@ -4,10 +4,15 @@
  * implements HPUX syscalls.
  */
 
+#include <linux/fs.h>
 #include <linux/sched.h>
+#include <linux/slab.h>
 #include <linux/smp_lock.h>
 #include <linux/utsname.h>
+#include <linux/vmalloc.h>
+
 #include <asm/errno.h>
+#include <asm/pgalloc.h>
 #include <asm/uaccess.h>
 
 unsigned long sys_brk(unsigned long addr);
@@ -41,6 +46,17 @@ int hpux_wait(int *stat_loc)
        return sys_waitpid(-1, stat_loc, 0);
 }
 
+int hpux_setpgrp(void)
+{
+       extern int sys_setpgid(int, int);
+       return sys_setpgid(0,0);
+}
+
+int hpux_setpgrp3(void)
+{
+       return hpux_setpgrp();
+}
+
 #define _SC_CPU_VERSION        10001
 #define _SC_OPEN_MAX   4
 #define CPU_PA_RISC1_1 0x210
@@ -127,6 +143,66 @@ out:
        return err;
 }
 
+/*
+ * Wrapper for hpux statfs call. At the moment, just calls the linux native one
+ * and ignores the extra fields at the end of the hpux statfs struct.
+ *
+ */
+
+typedef int32_t hpux_fsid_t[2];              /* file system ID type */
+typedef uint16_t hpux_site_t;
+
+struct hpux_statfs {
+     int32_t f_type;                    /* type of info, zero for now */
+     int32_t f_bsize;                   /* fundamental file system block size */
+     int32_t f_blocks;                  /* total blocks in file system */
+     int32_t f_bfree;                   /* free block in fs */
+     int32_t f_bavail;                  /* free blocks avail to non-superuser */
+     int32_t f_files;                   /* total file nodes in file system */
+     int32_t f_ffree;                   /* free file nodes in fs */
+     hpux_fsid_t  f_fsid;                    /* file system ID */
+     int32_t f_magic;                   /* file system magic number */
+     int32_t f_featurebits;             /* file system features */
+     int32_t f_spare[4];                /* spare for later */
+     hpux_site_t  f_cnode;                   /* cluster node where mounted */
+     int16_t f_pad;
+};
+
+/* hpux statfs */
+int hpux_statfs(const char *path, struct hpux_statfs *buf)
+{
+       int error;
+       int len;
+       char *kpath;
+
+       len = strlen_user((char *)path); 
+
+       kpath = (char *) kmalloc(len+1, GFP_KERNEL);
+       if ( !kpath ) {
+       printk(KERN_DEBUG "failed to kmalloc kpath\n");
+       return 0;
+       }
+
+       if ( copy_from_user(kpath, (char *)path, len+1) ) {
+       printk(KERN_DEBUG "failed to copy_from_user kpath\n");
+       kfree(kpath);
+       return 0;
+       }
+
+       printk(KERN_DEBUG "hpux_statfs(\"%s\",-)\n", kpath);
+
+       kfree(kpath);
+
+       /* just fake it, beginning of structures match */
+       extern int sys_statfs(const char *, struct statfs *);
+       error = sys_statfs(path, (struct statfs *) buf);
+
+       /* ignoring rest of statfs struct, but it should be zeros. Need to do 
+               something with f_fsid[1], which is the fstype for sysfs */
+
+       return error;
+}
+
 
 /*  This function is called from hpux_utssys(); HP-UX implements
  *  uname() as an option to utssys().
@@ -331,3 +407,541 @@ int hpux_pipe(int *kstack_fildes)
        unlock_kernel();
        return error;
 }
+
+/* lies - says it works, but it really didn't lock anything */
+int hpux_lockf(int fildes, int function, off_t size)
+{
+       return 0;
+}
+
+int hpux_sysfs(int opcode, unsigned long arg1, unsigned long arg2)
+{
+       char *fsname = NULL;
+       int len = 0;
+       int fstype;
+
+/*Unimplemented HP-UX syscall emulation. Syscall #334 (sysfs)
+  Args: 1 80057bf4 0 400179f0 0 0 0 */
+       printk(KERN_DEBUG "in hpux_sysfs\n");
+       printk(KERN_DEBUG "hpux_sysfs called with opcode = %d\n", opcode);
+       printk(KERN_DEBUG "hpux_sysfs called with arg1='%lx'\n", arg1);
+
+       if ( opcode == 1 ) { /* GETFSIND */     
+               len = strlen_user((char *)arg1);
+               printk(KERN_DEBUG "len of arg1 = %d\n", len);
+
+               fsname = (char *) kmalloc(len+1, GFP_KERNEL);
+               if ( !fsname ) {
+                       printk(KERN_DEBUG "failed to kmalloc fsname\n");
+                       return 0;
+               }
+
+               if ( copy_from_user(fsname, (char *)arg1, len+1) ) {
+                       printk(KERN_DEBUG "failed to copy_from_user fsname\n");
+                       kfree(fsname);
+                       return 0;
+               }
+
+               printk(KERN_DEBUG "that is '%s' as (char *)\n", fsname);
+               if ( !strcmp(fsname, "hfs") ) {
+                       fstype = 0;
+               } else {
+                       fstype = 0;
+               };
+
+               kfree(fsname);
+
+               printk(KERN_DEBUG "returning fstype=%d\n", fstype);
+               return fstype; /* something other than default */
+       }
+
+
+       return 0;
+}
+
+
+/* Table of syscall names and handle for unimplemented routines */
+static const char *syscall_names[] = {
+       "nosys",                  /* 0 */
+       "exit",                  
+       "fork",                  
+       "read",                  
+       "write",                 
+       "open",                   /* 5 */
+       "close",                 
+       "wait",                  
+       "creat",                 
+       "link",                  
+       "unlink",                 /* 10 */
+       "execv",                 
+       "chdir",                 
+       "time",                  
+       "mknod",                 
+       "chmod",                  /* 15 */
+       "chown",                 
+       "brk",                   
+       "lchmod",                
+       "lseek",                 
+       "getpid",                 /* 20 */
+       "mount",                 
+       "umount",                
+       "setuid",                
+       "getuid",                
+       "stime",                  /* 25 */
+       "ptrace",                
+       "alarm",                 
+       NULL,                    
+       "pause",                 
+       "utime",                  /* 30 */
+       "stty",                  
+       "gtty",                  
+       "access",                
+       "nice",                  
+       "ftime",                  /* 35 */
+       "sync",                  
+       "kill",                  
+       "stat",                  
+       "setpgrp3",              
+       "lstat",                  /* 40 */
+       "dup",                   
+       "pipe",                  
+       "times",                 
+       "profil",                
+       "ki_call",                /* 45 */
+       "setgid",                
+       "getgid",                
+       NULL,                    
+       NULL,                    
+       NULL,                     /* 50 */
+       "acct",                  
+       "set_userthreadid",      
+       NULL,                    
+       "ioctl",                 
+       "reboot",                 /* 55 */
+       "symlink",               
+       "utssys",                
+       "readlink",              
+       "execve",                
+       "umask",                  /* 60 */
+       "chroot",                
+       "fcntl",                 
+       "ulimit",                
+       NULL,                    
+       NULL,                     /* 65 */
+       "vfork",                 
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       NULL,                     /* 70 */
+       "mmap",                  
+       NULL,                    
+       "munmap",                
+       "mprotect",              
+       "madvise",                /* 75 */
+       "vhangup",               
+       "swapoff",               
+       NULL,                    
+       "getgroups",             
+       "setgroups",              /* 80 */
+       "getpgrp2",              
+       "setpgid/setpgrp2",      
+       "setitimer",             
+       "wait3",                 
+       "swapon",                 /* 85 */
+       "getitimer",             
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       "dup2",                   /* 90 */
+       NULL,                    
+       "fstat",                 
+       "select",                
+       NULL,                    
+       "fsync",                  /* 95 */
+       "setpriority",           
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       "getpriority",            /* 100 */
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       NULL,                     /* 105 */
+       NULL,                    
+       NULL,                    
+       "sigvector",             
+       "sigblock",              
+       "sigsetmask",             /* 110 */
+       "sigpause",              
+       "sigstack",              
+       NULL,                    
+       NULL,                    
+       NULL,                     /* 115 */
+       "gettimeofday",          
+       "getrusage",             
+       NULL,                    
+       NULL,                    
+       "readv",                  /* 120 */
+       "writev",                
+       "settimeofday",          
+       "fchown",                
+       "fchmod",                
+       NULL,                     /* 125 */
+       "setresuid",             
+       "setresgid",             
+       "rename",                
+       "truncate",              
+       "ftruncate",              /* 130 */
+       NULL,                    
+       "sysconf",               
+       NULL,                    
+       NULL,                    
+       NULL,                     /* 135 */
+       "mkdir",                 
+       "rmdir",                 
+       NULL,                    
+       "sigcleanup",            
+       "setcore",                /* 140 */
+       NULL,                    
+       "gethostid",             
+       "sethostid",             
+       "getrlimit",             
+       "setrlimit",              /* 145 */
+       NULL,                    
+       NULL,                    
+       "quotactl",              
+       "get_sysinfo",           
+       NULL,                     /* 150 */
+       "privgrp",               
+       "rtprio",                
+       "plock",                 
+       NULL,                    
+       "lockf",                  /* 155 */
+       "semget",                
+       NULL,                    
+       "semop",                 
+       "msgget",                
+       NULL,                     /* 160 */
+       "msgsnd",                
+       "msgrcv",                
+       "shmget",                
+       NULL,                    
+       "shmat",                  /* 165 */
+       "shmdt",                 
+       NULL,                    
+       "csp/nsp_init",          
+       "cluster",               
+       "mkrnod",                 /* 170 */
+       "test",                  
+       "unsp_open",             
+       NULL,                    
+       "getcontext",            
+       "osetcontext",            /* 175 */
+       "bigio",                 
+       "pipenode",              
+       "lsync",                 
+       "getmachineid",          
+       "cnodeid/mysite",         /* 180 */
+       "cnodes/sitels",         
+       "swapclients",           
+       "rmtprocess",            
+       "dskless_stats",         
+       "sigprocmask",            /* 185 */
+       "sigpending",            
+       "sigsuspend",            
+       "sigaction",             
+       NULL,                    
+       "nfssvc",                 /* 190 */
+       "getfh",                 
+       "getdomainname",         
+       "setdomainname",         
+       "async_daemon",          
+       "getdirentries",          /* 195 */
+       "statfs",                
+       "fstatfs",               
+       "vfsmount",              
+       NULL,                    
+       "waitpid",                /* 200 */
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       NULL,                     /* 205 */
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       NULL,                     /* 210 */
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       NULL,                     /* 215 */
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       NULL,                     /* 220 */
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       "sigsetreturn",          
+       "sigsetstatemask",        /* 225 */
+       "bfactl",                
+       "cs",                    
+       "cds",                   
+       NULL,                    
+       "pathconf",               /* 230 */
+       "fpathconf",             
+       NULL,                    
+       NULL,                    
+       "nfs_fcntl",             
+       "ogetacl",                /* 235 */
+       "ofgetacl",              
+       "osetacl",               
+       "ofsetacl",              
+       "pstat",                 
+       "getaudid",               /* 240 */
+       "setaudid",              
+       "getaudproc",            
+       "setaudproc",            
+       "getevent",              
+       "setevent",               /* 245 */
+       "audwrite",              
+       "audswitch",             
+       "audctl",                
+       "ogetaccess",            
+       "fsctl",                  /* 250 */
+       "ulconnect",             
+       "ulcontrol",             
+       "ulcreate",              
+       "uldest",                
+       "ulrecv",                 /* 255 */
+       "ulrecvcn",              
+       "ulsend",                
+       "ulshutdown",            
+       "swapfs",                
+       "fss",                    /* 260 */
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       NULL,                     /* 265 */
+       NULL,                    
+       "tsync",                 
+       "getnumfds",             
+       "poll",                  
+       "getmsg",                 /* 270 */
+       "putmsg",                
+       "fchdir",                
+       "getmount_cnt",          
+       "getmount_entry",        
+       "accept",                 /* 275 */
+       "bind",                  
+       "connect",               
+       "getpeername",           
+       "getsockname",           
+       "getsockopt",             /* 280 */
+       "listen",                
+       "recv",                  
+       "recvfrom",              
+       "recvmsg",               
+       "send",                   /* 285 */
+       "sendmsg",               
+       "sendto",                
+       "setsockopt",            
+       "shutdown",              
+       "socket",                 /* 290 */
+       "socketpair",            
+       "proc_open",             
+       "proc_close",            
+       "proc_send",             
+       "proc_recv",              /* 295 */
+       "proc_sendrecv",         
+       "proc_syscall",          
+       "ipccreate",             
+       "ipcname",               
+       "ipcnamerase",            /* 300 */
+       "ipclookup",             
+       "ipcselect",             
+       "ipcconnect",            
+       "ipcrecvcn",             
+       "ipcsend",                /* 305 */
+       "ipcrecv",               
+       "ipcgetnodename",        
+       "ipcsetnodename",        
+       "ipccontrol",            
+       "ipcshutdown",            /* 310 */
+       "ipcdest",               
+       "semctl",                
+       "msgctl",                
+       "shmctl",                
+       "mpctl",                  /* 315 */
+       "exportfs",              
+       "getpmsg",               
+       "putpmsg",               
+       "strioctl",              
+       "msync",                  /* 320 */
+       "msleep",                
+       "mwakeup",               
+       "msem_init",             
+       "msem_remove",           
+       "adjtime",                /* 325 */
+       "kload",                 
+       "fattach",               
+       "fdetach",               
+       "serialize",             
+       "statvfs",                /* 330 */
+       "fstatvfs",              
+       "lchown",                
+       "getsid",                
+       "sysfs",                 
+       NULL,                     /* 335 */
+       NULL,                    
+       "sched_setparam",        
+       "sched_getparam",        
+       "sched_setscheduler",    
+       "sched_getscheduler",     /* 340 */
+       "sched_yield",           
+       "sched_get_priority_max",
+       "sched_get_priority_min",
+       "sched_rr_get_interval", 
+       "clock_settime",          /* 345 */
+       "clock_gettime",         
+       "clock_getres",          
+       "timer_create",          
+       "timer_delete",          
+       "timer_settime",          /* 350 */
+       "timer_gettime",         
+       "timer_getoverrun",      
+       "nanosleep",             
+       "toolbox",               
+       NULL,                     /* 355 */
+       "getdents",              
+       "getcontext",            
+       "sysinfo",               
+       "fcntl64",               
+       "ftruncate64",            /* 360 */
+       "fstat64",               
+       "getdirentries64",       
+       "getrlimit64",           
+       "lockf64",               
+       "lseek64",                /* 365 */
+       "lstat64",               
+       "mmap64",                
+       "setrlimit64",           
+       "stat64",                
+       "truncate64",             /* 370 */
+       "ulimit64",              
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       NULL,                     /* 375 */
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       NULL,                    
+       "setcontext",             /* 380 */
+       "sigaltstack",           
+       "waitid",                
+       "setpgrp",               
+       "recvmsg2",              
+       "sendmsg2",               /* 385 */
+       "socket2",               
+       "socketpair2",           
+       "setregid",              
+       "lwp_create",            
+       "lwp_terminate",          /* 390 */
+       "lwp_wait",              
+       "lwp_suspend",           
+       "lwp_resume",            
+       "lwp_self",              
+       "lwp_abort_syscall",      /* 395 */
+       "lwp_info",              
+       "lwp_kill",              
+       "ksleep",                
+       "kwakeup",               
+       "ksleep_abort",           /* 400 */
+       "lwp_proc_info",         
+       "lwp_exit",              
+       "lwp_continue",          
+       "getacl",                
+       "fgetacl",                /* 405 */
+       "setacl",                
+       "fsetacl",               
+       "getaccess",             
+       "lwp_mutex_init",        
+       "lwp_mutex_lock_sys",     /* 410 */
+       "lwp_mutex_unlock",      
+       "lwp_cond_init",         
+       "lwp_cond_signal",       
+       "lwp_cond_broadcast",    
+       "lwp_cond_wait_sys",      /* 415 */
+       "lwp_getscheduler",      
+       "lwp_setscheduler",      
+       "lwp_getprivate",        
+       "lwp_setprivate",        
+       "lwp_detach",             /* 420 */
+       "mlock",                 
+       "munlock",               
+       "mlockall",              
+       "munlockall",            
+       "shm_open",               /* 425 */
+       "shm_unlink",            
+       "sigqueue",              
+       "sigwaitinfo",           
+       "sigtimedwait",          
+       "sigwait",                /* 430 */
+       "aio_read",              
+       "aio_write",             
+       "lio_listio",            
+       "aio_error",             
+       "aio_return",             /* 435 */
+       "aio_cancel",            
+       "aio_suspend",           
+       "aio_fsync",             
+       "mq_open",               
+       "mq_unlink",              /* 440 */
+       "mq_send",               
+       "mq_receive",            
+       "mq_notify",             
+       "mq_setattr",            
+       "mq_getattr",             /* 445 */
+       "ksem_open",             
+       "ksem_unlink",           
+       "ksem_close",            
+       "ksem_destroy",          
+       "lw_sem_incr",            /* 450 */
+       "lw_sem_decr",           
+       "lw_sem_read",           
+       "mq_close",              
+};
+static const int syscall_names_max = 453;
+
+int
+hpux_unimplemented(unsigned long arg1,unsigned long arg2,unsigned long arg3,
+                  unsigned long arg4,unsigned long arg5,unsigned long arg6,
+                  unsigned long arg7,unsigned long sc_num)
+{
+       /* NOTE: sc_num trashes arg8 for the few syscalls that actually
+        * have a valid 8th argument.
+        */
+       const char *name = NULL;
+       if ( sc_num <= syscall_names_max && sc_num >= 0 ) {
+               name = syscall_names[sc_num];
+       }
+
+       if ( name ) {
+               printk(KERN_DEBUG "Unimplemented HP-UX syscall emulation. Syscall #%lu (%s)\n",
+               sc_num, name);
+       } else {
+               printk(KERN_DEBUG "Unimplemented unknown HP-UX syscall emulation. Syscall #%lu\n",
+               sc_num);
+       }
+       
+       printk(KERN_DEBUG "  Args: %lx %lx %lx %lx %lx %lx %lx\n",
+               arg1, arg2, arg3, arg4, arg5, arg6, arg7);
+
+       return -ENOSYS;
+}
index c150783d9950cc568d789fd22106866c4d3dfcd2..c9322351a85ccbfd6a32b6db35d44689c3023a13 100644 (file)
@@ -1,5 +1,5 @@
-/*------------------------------------------------------------------------------
- * Native PARISC/Linux Project (http://www.puffingroup.com/parisc)
+/*
+ * Linux/PARISC Project (http://www.parisc-linux.org/)
  *
  * HP-UX System Call Wrapper routines and System Call Return Path
  *
 #warning Must be changed for PA64
 #endif
 
-#include <asm/offset.h>
+#include <asm/offsets.h>
 
        .level          1.1
        .text
 
-#define __ASSEMBLY__
 #include <asm/assembly.h>
 #include <asm/signal.h>
 
@@ -81,6 +80,7 @@
 
 
        .export hpux_fork_wrapper
+       .export hpux_child_return
        .import sys_fork
 
 hpux_fork_wrapper:
@@ -91,12 +91,10 @@ hpux_fork_wrapper:
        stw     %r2,-20(%r30)
        ldo     64(%r30),%r30
        stw     %r2,PT_GR19(%r1)        ;! save for child
-       stw     %r30,PT_GR20(%r1)       ;! save for child
-       ldil    L%child_return,%r3
-       ldo     R%child_return(%r3),%r3
-       stw     %r3,PT_GR21(%r1)        ;! save for child
+       stw     %r30,PT_GR21(%r1)       ;! save for child
 
-       ldw     TASK_PT_GR30(%r1),%r25
+       ldw     PT_GR30(%r1),%r25
+       mtctl   %r25,%cr29
        copy    %r1,%r24
        bl      sys_clone,%r2
        ldi     SIGCHLD,%r26
@@ -130,7 +128,12 @@ fork_exit:
 
        /* Set the return value for the child */
 
-child_return:
+hpux_child_return:
+#if CONFIG_SMP || CONFIG_PREEMPT
+       bl      schedule_tail, %r2
+       nop
+#endif
+
        ldw TASK_PT_GR19-TASK_SZ_ALGN-128(%r30),%r2
        b fork_return
        copy %r0,%r28
@@ -242,3 +245,10 @@ hpux_syscall_exit:
 no_error:
        b syscall_exit
        nop
+
+       .export hpux_unimplemented_wrapper
+       .import hpux_unimplemented
+
+hpux_unimplemented_wrapper:
+       b hpux_unimplemented
+       stw %r22,-64(%r30)  /* overwrite arg8 with syscall number */