Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758627AbaGAQuw (ORCPT ); Tue, 1 Jul 2014 12:50:52 -0400 Received: from fw-tnat.austin.arm.com ([217.140.110.23]:45816 "EHLO collaborate-mta1.arm.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1758219AbaGAQuu (ORCPT ); Tue, 1 Jul 2014 12:50:50 -0400 Date: Tue, 1 Jul 2014 17:50:41 +0100 From: Catalin Marinas To: Arnd Bergmann Cc: "linux-arm-kernel@lists.infradead.org" , "Pinski, Andrew" , Andrew Pinski , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH 22/24] ARM64:ILP32: Use a seperate syscall table as a few syscalls need to be using the compat syscalls. Message-ID: <20140701165041.GU18313@arm.com> References: <1400914939-9708-1-git-send-email-apinski@cavium.com> <20140701150539.GA18309@arm.com> <800835FF-E10A-4C0C-A68F-0ED1434F1CE2@caviumnetworks.com> <4268617.3t49DXZOBa@wuerfel> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4268617.3t49DXZOBa@wuerfel> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jul 01, 2014 at 05:38:12PM +0100, Arnd Bergmann wrote: > On Tuesday 01 July 2014 15:30:51 Pinski, Andrew wrote: > > > On Jul 1, 2014, at 8:07 AM, "Catalin Marinas" wrote: > > >> On Sat, May 24, 2014 at 12:02:17AM -0700, Andrew Pinski wrote: > > >> diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S > > >> index 1e1ebfc..8241ffe 100644 > > >> --- a/arch/arm64/kernel/entry.S > > >> +++ b/arch/arm64/kernel/entry.S > > >> @@ -620,9 +620,14 @@ ENDPROC(ret_from_fork) > > >> */ > > >> .align 6 > > >> el0_svc: > > >> - adrp stbl, sys_call_table // load syscall table pointer > > >> uxtw scno, w8 // syscall number in w8 > > >> mov sc_nr, #__NR_syscalls > > >> +#ifdef CONFIG_ARM64_ILP32 > > >> + get_thread_info tsk > > >> + ldr x16, [tsk, #TI_FLAGS] > > >> + tbnz x16, #TIF_32BIT_AARCH64, el0_ilp32_svc // We are using ILP32 > > >> +#endif > > >> + adrp stbl, sys_call_table // load syscall table pointer > > > > > > This adds a slight penalty on the AArch64 SVC entry path. I can't tell > > > whether that's visible or not but I think the x86 guys decided to set an > > > extra bit to the syscall number to distinguish it from native calls. > > IIRC the intention on x86 was that you should always be able to call > any of the three syscall ABIs (x86-32, x86-64, x32) from any process > by passing the right number, for flexibility. I don't see how this is useful though. Do you happen to have more information? -- Catalin -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/