From mboxrd@z Thu Jan 1 00:00:00 1970 Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 16 Sep 2002 17:41:08 +0200 (CEST) Received: from p508B798C.dip.t-dialin.net ([80.139.121.140]:53130 "EHLO dea.linux-mips.net") by linux-mips.org with ESMTP id ; Mon, 16 Sep 2002 17:41:07 +0200 Received: (from ralf@localhost) by dea.linux-mips.net (8.11.6/8.11.6) id g8GFeq203342 for linux-mips@linux-mips.org; Mon, 16 Sep 2002 17:40:52 +0200 Date: Mon, 16 Sep 2002 17:40:52 +0200 From: Ralf Baechle To: linux-mips@linux-mips.org Subject: Re: 64-bit and N32 kernel interfaces Message-ID: <20020916174052.B2579@linux-mips.org> References: <20020904155645.A31893@linux-mips.org> <20020916150152.A1677@linux-mips.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i In-Reply-To: <20020916150152.A1677@linux-mips.org>; from ralf@linux-mips.org on Mon, Sep 16, 2002 at 03:01:52PM +0200 Return-Path: X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0) X-Orcpt: rfc822;linux-mips@linux-mips.org Original-Recipient: rfc822;linux-mips@linux-mips.org X-archive-position: 191 X-ecartis-version: Ecartis v1.0.0 Sender: linux-mips-bounce@linux-mips.org Errors-to: linux-mips-bounce@linux-mips.org X-original-sender: ralf@linux-mips.org Precedence: bulk X-list: linux-mips On Mon, Sep 16, 2002 at 03:01:52PM +0200, Ralf Baechle wrote: More chainswing ... > > As first think I want to get rid of all the historic crap we have in > > our syscall tables for the 64-bit syscalls. Let's start here: > > > > #define __NR_syscall (__NR_Linux + 0) > > > > Deprecated because can be implemented in userspace. > > > > #define __NR_ioperm (__NR_Linux + 101) > > #define __NR_iopl (__NR_Linux + 110) > > #define __NR_vm86 (__NR_Linux + 113) > > > > i386 braindamage we're never going to support. So why have it in our > > syscall table? > > > > #define __NR_unused59 (__NR_Linux + 59) > > #define __NR_reserved82 (__NR_Linux + 82) > > #define __NR_unused109 (__NR_Linux + 109) > > #define __NR_unused150 (__NR_Linux + 150) > > > > Unused entries. Why keep them ... > > > > #define __NR_break (__NR_Linux + 17) > > #define __NR_stty (__NR_Linux + 31) > > #define __NR_gtty (__NR_Linux + 32) > > #define __NR_ftime (__NR_Linux + 35) > > #define __NR_prof (__NR_Linux + 44) > > #define __NR_signal (__NR_Linux + 48) > > #define __NR_mpx (__NR_Linux + 56) > > #define __NR_ulimit (__NR_Linux + 58) > > #define __NR_readdir (__NR_Linux + 89) > > #define __NR_profil (__NR_Linux + 98) > > #define __NR_modify_ldt (__NR_Linux + 123) > > One more for the same cathegory: > > #define __NR_lock (__NR_Linux + 53) > > > Slots that data back to day one of UNIX way before Linux was born. > > > > #define __NR_socketcall (__NR_Linux + 102) > > > > Wrapper syscall, obsoleted since quite a while in the 32-bit kernel. > > > > #define __NR_idle (__NR_Linux + 112) > > > > Internal syscall, no longer used. > > > > #define __NR_ipc (__NR_Linux + 117) > > This implies eleven new entries for: > > __NR_semget > __NR_semop > __NR_semctl > __NR_msgget > __NR_msgsnd > __NR_msgrcv > __NR_msgctl > __NR_shmget > __NR_shmat > __NR_shmdt > __NR_shmctl > > > Yet another multiplexor syscall and imho another candidate for getting > > rid of. > > > > #define __NR_oldstat (__NR_Linux + 18) > > #define __NR_umount (__NR_Linux + 22) > > #define __NR_oldfstat (__NR_Linux + 28) > > #define __NR_oldlstat (__NR_Linux + 84) > > > > Superseeded by newer versions. > > > > #define __NR_uselib (__NR_Linux + 86) > > > > a.out support. Do we really want that. > > > > I probably missed a few. The primary purpose of this posting is to get a > > discussion about the 64-bit syscall interface started. It's still not > > cast into stone so we can modify it as we see fit. The entire syscall > > interface is still open for changes, this includes all structures etc. > > Along with a 64-bit ABI we'll also have to deciede about a N32 ABI. llseek, pread64/pwrite64, getdent64 are no longer needed as their standard counterparts are already 64 bit. Modern libc doesn't use the old style signal calls __NR_sigaction, __NR_sigsuspend, __NR_sigpending, __NR_sigprocmask. That means __NR_sigreturn can also go. __NR_sgetmask and __NR_ssetmask are only capable of dealing with signal masks of at most bitsof(long) and thus have become useless and replaced by sigprocmask(2). __NR_waitpid can be implemented on top of wait(2). __NR_stime can be implemented on top of settimeofday(2). __NR_nice can be implemented on top of getpriority / setpriority and was a stupid interface anyway. __NR_recv can be implemented on recvfrom(2) and __NR_send using sendfrom(2). Ralf