From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: (qmail 535 invoked from network); 16 Apr 2020 15:40:26 -0000 Received-SPF: pass (mother.openwall.net: domain of lists.openwall.com designates 195.42.179.200 as permitted sender) receiver=inbox.vuxu.org; client-ip=195.42.179.200 envelope-from= Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with UTF8ESMTPZ; 16 Apr 2020 15:40:26 -0000 Received: (qmail 11815 invoked by uid 550); 16 Apr 2020 15:40:25 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 11797 invoked from network); 16 Apr 2020 15:40:24 -0000 Date: Thu, 16 Apr 2020 11:40:12 -0400 From: Rich Felker To: Jeffrey Walton Cc: musl@lists.openwall.com, libc-alpha@sourceware.org, libc-dev@lists.llvm.org, linuxppc-dev@lists.ozlabs.org Message-ID: <20200416154012.GV11469@brightrain.aerifal.cx> References: <1586931450.ub4c8cq8dj.astroid@bobo.none> <20200415225539.GL11469@brightrain.aerifal.cx> <1586994952.nnxigedbu2.astroid@bobo.none> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Subject: Re: [musl] Powerpc Linux 'scv' system call ABI proposal take 2 On Thu, Apr 16, 2020 at 11:21:56AM -0400, Jeffrey Walton wrote: > On Wed, Apr 15, 2020 at 8:17 PM Nicholas Piggin wrote: > > > > Excerpts from Rich Felker's message of April 16, 2020 8:55 am: > > > On Thu, Apr 16, 2020 at 07:45:09AM +1000, Nicholas Piggin wrote: > > >> I would like to enable Linux support for the powerpc 'scv' instruction, > > >> as a faster system call instruction. > > >> > > >> This requires two things to be defined: Firstly a way to advertise to > > >> userspace that kernel supports scv, and a way to allocate and advertise > > >> support for individual scv vectors. Secondly, a calling convention ABI > > >> for this new instruction. > > >> ... > > > Note that any libc that actually makes use of the new functionality is > > > not going to be able to make clobbers conditional on support for it; > > > branching around different clobbers is going to defeat any gains vs > > > always just treating anything clobbered by either method as clobbered. > > > > Well it would have to test HWCAP and patch in or branch to two > > completely different sequences including register save/restores yes. > > You could have the same asm and matching clobbers to put the sequence > > inline and then you could patch the one sc/scv instruction I suppose. > > Could GCC function multiversioning work here? > https://gcc.gnu.org/wiki/FunctionMultiVersioning > > It seems like selecting a runtime version of a function is the sort of > thing you are trying to do. On glibc it potentially could. This is ifunc-based functionality though and musl explicitly does not (and will not) support ifunc because of lots of fundamental problems it entails. But even on glibc the underlying mechanisms for ifunc are just the same as a normal indirect call and there's no real reason to prefer implementing it with ifunc/multiversioning vs directly. Rich