From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24030 invoked by alias); 23 Sep 2004 22:43:19 -0000 Mailing-List: contact libc-hacker-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-hacker-owner@sources.redhat.com Received: (qmail 24012 invoked from network); 23 Sep 2004 22:43:18 -0000 Received: from unknown (HELO r-rr.iij4u.or.jp) (210.130.0.76) by sourceware.org with SMTP; 23 Sep 2004 22:43:18 -0000 Received: from localhost (frgw.3in.ne.jp [210.251.121.226]) by r-rr.iij4u.or.jp (8.11.6+IIJ/8.11.6) with ESMTP id i8NMhF606723 for ; Fri, 24 Sep 2004 07:43:16 +0900 (JST) Date: Thu, 23 Sep 2004 22:43:00 -0000 Message-Id: <20040924.074241.28395313.kkojima@rr.iij4u.or.jp> To: libc-hacker@sources.redhat.com Subject: [PATCH] INTERNAL_SYSCALL_NCS for SH From: Kaz Kojima Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-SW-Source: 2004-09/txt/msg00088.txt.bz2 Hi, The appended patch is an SH version of INTERNAL_SYSCALL_NCS. BTW, SH port has a few problems with setXid changes. I'll report them in the next mail. Regards, kaz -- 2004-09-23 Kaz Kojima * sysdeps/unix/sysv/linux/sh/sysdep.h (INTERNAL_SYSCALL_NCS): Define. diff -u3prN ORIG/libc/sysdeps/unix/sysv/linux/sh/sysdep.h LOCAL/libc/sysdeps/unix/sysv/linux/sh/sysdep.h --- ORIG/libc/sysdeps/unix/sysv/linux/sh/sysdep.h Mon Jul 5 11:14:22 2004 +++ LOCAL/libc/sysdeps/unix/sysv/linux/sh/sysdep.h Mon Sep 20 10:10:41 2004 @@ -333,6 +333,20 @@ \ (int) resultvar; }) +/* The _NCS variant allows non-constant syscall numbers. */ +#define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \ + ({ \ + unsigned long int resultvar; \ + register long int r3 asm ("%r3") = (name); \ + SUBSTITUTE_ARGS_##nr(args); \ + \ + asm volatile (SYSCALL_INST_STR##nr SYSCALL_INST_PAD \ + : "=z" (resultvar) \ + : "r" (r3) ASMFMT_##nr \ + : "memory"); \ + \ + (int) resultvar; }) + #undef INTERNAL_SYSCALL_DECL #define INTERNAL_SYSCALL_DECL(err) do { } while (0)