From owner-svn-src-all@FreeBSD.ORG Tue Jan 6 03:50:45 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5A29996F; Tue, 6 Jan 2015 03:50:45 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2C58B268A; Tue, 6 Jan 2015 03:50:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t063ojpv034864; Tue, 6 Jan 2015 03:50:45 GMT (envelope-from jhibbits@FreeBSD.org) Received: (from jhibbits@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t063oiZX034861; Tue, 6 Jan 2015 03:50:44 GMT (envelope-from jhibbits@FreeBSD.org) Message-Id: <201501060350.t063oiZX034861@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: jhibbits set sender to jhibbits@FreeBSD.org using -f From: Justin Hibbits Date: Tue, 6 Jan 2015 03:50:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r276734 - in head/lib: libc/powerpc/gen libc/powerpc64/gen libthr/arch/powerpc/include X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Jan 2015 03:50:45 -0000 Author: jhibbits Date: Tue Jan 6 03:50:43 2015 New Revision: 276734 URL: https://svnweb.freebsd.org/changeset/base/276734 Log: Avoid use of register variables. Clang 3.5 treats this as undefined behavior, and bad things happen. MFC after: 1 week Modified: head/lib/libc/powerpc/gen/_set_tp.c head/lib/libc/powerpc64/gen/_set_tp.c head/lib/libthr/arch/powerpc/include/pthread_md.h Modified: head/lib/libc/powerpc/gen/_set_tp.c ============================================================================== --- head/lib/libc/powerpc/gen/_set_tp.c Tue Jan 6 03:49:22 2015 (r276733) +++ head/lib/libc/powerpc/gen/_set_tp.c Tue Jan 6 03:50:43 2015 (r276734) @@ -29,7 +29,6 @@ void _set_tp(void *tpval) { - register void *tp __asm__("r2"); - __asm __volatile("mr %0,%1" : "=r"(tp) : "r"((char*)tpval + 0x7008)); + __asm __volatile("mr 2,%0" :: "r"((char*)tpval + 0x7008)); } Modified: head/lib/libc/powerpc64/gen/_set_tp.c ============================================================================== --- head/lib/libc/powerpc64/gen/_set_tp.c Tue Jan 6 03:49:22 2015 (r276733) +++ head/lib/libc/powerpc64/gen/_set_tp.c Tue Jan 6 03:50:43 2015 (r276734) @@ -29,7 +29,6 @@ void _set_tp(void *tpval) { - register void *tp __asm__("r13"); - __asm __volatile("mr %0,%1" : "=r"(tp) : "r"((char*)tpval + 0x7010)); + __asm __volatile("mr 13,%0" :: "r"((char*)tpval + 0x7010)); } Modified: head/lib/libthr/arch/powerpc/include/pthread_md.h ============================================================================== --- head/lib/libthr/arch/powerpc/include/pthread_md.h Tue Jan 6 03:49:22 2015 (r276733) +++ head/lib/libthr/arch/powerpc/include/pthread_md.h Tue Jan 6 03:50:43 2015 (r276734) @@ -62,22 +62,22 @@ static __inline void _tcb_set(struct tcb *tcb) { #ifdef __powerpc64__ - register uint8_t *_tp __asm__("%r13"); + __asm __volatile("mr 13,%0" :: + "r"((uint8_t *)tcb + TP_OFFSET)); #else - register uint8_t *_tp __asm__("%r2"); -#endif - - __asm __volatile("mr %0,%1" : "=r"(_tp) : + __asm __volatile("mr 2,%0" :: "r"((uint8_t *)tcb + TP_OFFSET)); +#endif } static __inline struct tcb * _tcb_get(void) { + register uint8_t *_tp; #ifdef __powerpc64__ - register uint8_t *_tp __asm__("%r13"); + __asm __volatile("mr %0,13" : "=r"(_tp)); #else - register uint8_t *_tp __asm__("%r2"); + __asm __volatile("mr %0,2" : "=r"(_tp)); #endif return ((struct tcb *)(_tp - TP_OFFSET));