From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14346 invoked by alias); 20 Jan 2006 11:50:26 -0000 Received: (qmail 14327 invoked by uid 22791); 20 Jan 2006 11:50:26 -0000 X-Spam-Check-By: sourceware.org Received: from mo00.iij4u.or.jp (HELO mo00.iij4u.or.jp) (210.130.0.19) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 20 Jan 2006 11:50:22 +0000 Received: MO(mo00) for id k0KBoJSD013857; Fri, 20 Jan 2006 20:50:19 +0900 (JST) Received: from localhost (220.30.30.125.dy.iij4u.or.jp [125.30.30.220]) by r-rr.iij4u.or.jp (4U-MR/r-rr) id k0KBoJKv020330 for ; Fri, 20 Jan 2006 20:50:19 +0900 (JST) Date: Fri, 20 Jan 2006 11:50:00 -0000 Message-Id: <20060120.205015.132932966.kkojima@rr.iij4u.or.jp> To: libc-hacker@sources.redhat.com Subject: [PATCH] sh/lowlevellock.h tidyup From: Kaz Kojima Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Mailing-List: contact libc-hacker-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-hacker-owner@sourceware.org X-SW-Source: 2006-01/txt/msg00081.txt.bz2 Hi, The attached is a tidyup patch for SH which is very same with the recent change for x86. Regards, kaz -- [nptl/ChangeLog] 2006-01-20 Kaz Kojima * sysdeps/unix/sysv/linux/sh/lowlevellock.h (lll_futex_wait): Return status. (lll_futex_timed_wait): Define. --- ORIG/libc/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h 2004-06-04 00:29:17.000000000 +0900 +++ LOCAL/libc/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h 2006-01-19 09:47:46.000000000 +0900 @@ -1,4 +1,4 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -181,19 +181,37 @@ typedef int lll_lock_t; # endif #define lll_futex_wait(futex, val) \ - do { \ - int __ignore; \ + ({ \ + int __status; \ register unsigned long __r3 asm ("r3") = SYS_futex; \ register unsigned long __r4 asm ("r4") = (unsigned long) (futex); \ register unsigned long __r5 asm ("r5") = FUTEX_WAIT; \ register unsigned long __r6 asm ("r6") = (unsigned long) (val); \ register unsigned long __r7 asm ("r7") = 0; \ __asm __volatile (SYSCALL_WITH_INST_PAD \ - : "=z" (__ignore) \ + : "=z" (__status) \ : "r" (__r3), "r" (__r4), "r" (__r5), \ "r" (__r6), "r" (__r7) \ : "memory", "t"); \ - } while (0) + __status; \ + }) + + +#define lll_futex_timed_wait(futex, val, timeout) \ + ({ \ + int __status; \ + register unsigned long __r3 asm ("r3") = SYS_futex; \ + register unsigned long __r4 asm ("r4") = (unsigned long) (futex); \ + register unsigned long __r5 asm ("r5") = FUTEX_WAIT; \ + register unsigned long __r6 asm ("r6") = (unsigned long) (val); \ + register unsigned long __r7 asm ("r7") = (timeout); \ + __asm __volatile (SYSCALL_WITH_INST_PAD \ + : "=z" (__status) \ + : "r" (__r3), "r" (__r4), "r" (__r5), \ + "r" (__r6), "r" (__r7) \ + : "memory", "t"); \ + __status; \ + }) #define lll_futex_wake(futex, nr) \