On Thu, 15 Aug 2002, Ralf Baechle wrote: > On Thu, Aug 15, 2002 at 12:06:31PM +0200, Kjeld Borch Egevang wrote: > > > I would like to hear your opinion on this. > > > > Currently we have the N64 interface which is the basic interface to the > > kernel. Then we have the O32 interface which is implemented as a separate > > set of syscalls in unistd.h and proper conversion in the kernel. > > > > Now, how can we support N32? Many syscalls will work if N32 is treated the > > same way as O32. This will of course mean, that O32 must be compiled in in > > order to support N32. But e.g. a syscall like: > > > > int _llseek(unsigned int fd, unsigned long offset_high, unsigned long > > offset_low, loff_t *result, unsigned int whence); > > > > needs special treatment since loff_t is a long long (passed in a single > > register for N32) and there are 6 arguments (all passed in registers for > > N32, passed in registers and on the stack for O32). > > > > Should we simply add 235 new syscall numbers to unistd.h named > > __NR_LinuxN32...? > > o32 currently has 240 syscalls. Of these a good number is simply > junk. No syscall(2), oldstat(2), oldfstat(2), no experimental > UNIX Version 7 bs like mpx(2) for new ABIs; away with stupid multiplexor > calls like socketcall(2) and funny intelisms like vm86(2). That's > the first cleanup I'm planning. > > For what will be left over, N32 and N64 use the same subroutine calling > interface we'll be able to share most if not all syscalls between the two. > llseek(2) is just one example. Some syscalls will definitely not work for N32 with the N64 calling interface: int execve(const char *filename, char *const argv [], char *const envp[]); - where argv and envp points to arrays of pointers (4 bytes in N32, 8 bytes in N64) int fstat(int filedes, struct stat *buf); int utime(const char *filename, struct utimbuf *buf); clock_t times(struct tms *buf); int ioctl(int d, int request, ...); int fcntl(int fd, int cmd, struct flock * lock); - struct contains long (4 bytes in N32, 8 bytes in N64) So my point is, that we will need some of the O32 conversion stuff for N32 as well. /Kjeld -- _ _ ____ ___ Mailto:kjelde@mips.com |\ /|||___)(___ MIPS Denmark Direct: +45 44 86 55 85 | \/ ||| ____) Lautrupvang 4 B Switch: +45 44 86 55 55 TECHNOLOGIES DK-2750 Ballerup Fax...: +45 44 86 55 56 Denmark http://www.mips.com/