From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D721F1F5437 for ; Sat, 18 Apr 2026 11:14:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776510888; cv=none; b=dToXYitLrstfV4Z7qn5PHfLhEiTL237N8NbXGY/rY7UvsYbK0wuBf3+yLUK3mFN1YlhREnQ0bqwM9aoLQHqFYJ6qloTHNn7dIk9n77g64FinBdPjTZJibcnRvEfvatPb0mfIA5pLQnt94VOx9HzGVeHb6X1i0EaZ4midv5RiNrE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776510888; c=relaxed/simple; bh=sAgFPzTJcG6doq50NNAR/ybroHOJfEOnC1u8IJLnkgA=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=LDYvMGG3G7a1BMzteF8GfxeXzJq7SlyVHdL/p5tuB2eIR2EEYZkRU+nDuXK3JUTBqX5owu7W3UbQrkYXqX2RRgw3xbP8n4d7SzwfnXsepdsg+WCSbAXeRHlMavT0kB/gcT1SIwQKMRBgCPXE0+lkAt1S+QZjuKjWeSv78eyH2Ng= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=iBlchss/; arc=none smtp.client-ip=209.85.221.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iBlchss/" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-43d7213b6ebso959969f8f.3 for ; Sat, 18 Apr 2026 04:14:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776510885; x=1777115685; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=wUfZQueeN1NnkoSfbfhxIogFTu6dP7S8s1t+lwhWdGc=; b=iBlchss/TIYCz2xM+8xzTvD8cwM02bgzF5HIQNHg+jIIs6hKgFStG/YtB6Cjr0QgCI ldFv3s4PwS8CiANPCnyiPJFxhnTA5i5fJYq0flOVud7RpjW+q5P1qWBF126NAPBwRVlT t4oVIvH6mf+divOrRbEV7+1QsDee+/CKoMxumuCrgA192TkZYvKoLTljjwzBmh750xh2 7hY0/wlpuOTXlFGllIofluq+Tb9P6Q63i51HsOtv3Rj/RPf8taLDhrxFCeiWl06S3/FF BK2PYI8vfhxLdpjBxXYQaZWqYlbn5hJ+CLXVsl34b68KOhOsdyW41q+1gZJsUuEebFWK lgXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776510885; x=1777115685; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=wUfZQueeN1NnkoSfbfhxIogFTu6dP7S8s1t+lwhWdGc=; b=YXWuHPkYGwIbzqlbRwWDX3NftsF4MUg2d/vas7w2POiPium7EJyx/edO5cpRblsMgr XoJVVTe98/fzqDGU08rudzgWJRIMuEcKYhFKmm4nnlnI0erg3n3jlwgBxbaEn59NhmO7 2tPaW28hG+z7ylFRYHTZlQYc1Z5PNAEPS1te1GVmuFJjtFEzS+QmfRHOlsIOZP6HbAYh x8VUuY7i6wAboWWSQtTY2hs/HkQPFPyeVz4j4fexZ2wKngTJMVp4amr8oTxe537I+rqV O4E3fMogtv79vGgRrU9dn0gMqrixD8YCzA6rAjg4nEGCphLd7EHP0KSnMOVuJs4kmQNV qjCQ== X-Forwarded-Encrypted: i=1; AFNElJ9dre9LCIU1kyo6A96jXUICz3sQUuUtwSiNiuzabSJIA/uCwlvjf3Ni3mVE3jA6vBygSit0hKunMxmgkm8=@vger.kernel.org X-Gm-Message-State: AOJu0YwugaEn+onmvlHTafnB6lZh57AlEwR4cDIUuXEI8DRYs43ksqrg NimjNg8DoHMhz1ZG3LJh8OrFnlpnyFbGlTPbK4fOJPmdVuI9Op0MIUISOVMXqyKf X-Gm-Gg: AeBDiesN7epxwG/Jb9rOf1yrmRelrnTqWCJOma0dmoZF3xNihtHHY2Nv/exj3R52x9g JzjKrCryaCxOPEHZcMFooLDjVifVKAv+9V9eB1nmXBmjnF+41QgOR+tdxR0vYV43m8NRKMLJPse OVSomhMq+d/5oavGwszxCRYgqjxk2sADZrPyFnJkIA1+SZW0WJPWlSG4DoA2V3HUPpONY7RKfwr DNp80COLqIA15d9wIx3zAlSydDh5FIkVIH0TTiTiL3OIE332ozWW6p2A7p6tDlJPHpkmeuwmP9p jnqwYoNxtkpvi532TPjjktFclOCqnMYJvA2QTDr9MGsBLg2DqZVLzOtfLFUKjgelEFA7PgCOFCD 1kZJ2GVuM4N99wUwXdKWFDnVDI2Do8niSJ6dpZgNpa/F2sCM1Ug1kuolno4w1CGA5xthzMnjbnp 0Zlb6oORkZnXpUNuoUtwUfRJ1EmFUYzzQo4XdP9D/t3+AB/d9Uu9+M7AMNGUNbC/TcCp02hOWhi 5g= X-Received: by 2002:a05:6000:1889:b0:43b:4f86:e985 with SMTP id ffacd0b85a97d-43fe3e0fb7emr10197981f8f.33.1776510885035; Sat, 18 Apr 2026 04:14:45 -0700 (PDT) Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43fe4cb1405sm11752349f8f.4.2026.04.18.04.14.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Apr 2026 04:14:44 -0700 (PDT) Date: Sat, 18 Apr 2026 12:14:42 +0100 From: David Laight To: Thomas =?UTF-8?B?V2Vpw59zY2h1aA==?= Cc: Willy Tarreau , Daniel Palmer , linux-kernel@vger.kernel.org Subject: Re: [PATCH 5/7] tools/nolibc: handle 64-bit system call arguments on MIPS N32 Message-ID: <20260418121442.6ca95de1@pumpkin> In-Reply-To: <20260418-nolibc-largefile-v1-5-b91f0775bac3@weissschuh.net> References: <20260418-nolibc-largefile-v1-0-b91f0775bac3@weissschuh.net> <20260418-nolibc-largefile-v1-5-b91f0775bac3@weissschuh.net> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Sat, 18 Apr 2026 12:20:00 +0200 Thomas Wei=C3=9Fschuh wrote: > The N32 system call ABI expects 64-bit values directly in registers. > This does not work on nolibc currently, as a 'long' is only 32 bits > wide. Switch the system call wrappers to use 'long long' instead which > can handle 64-bit values on N32. As on N64 'long' and 'long long' are > the same, this does not change the behavior there. >=20 > Signed-off-by: Thomas Wei=C3=9Fschuh > --- > tools/include/nolibc/arch-mips.h | 94 +++++++++++++++++++++-------------= ------ > 1 file changed, 49 insertions(+), 45 deletions(-) >=20 > diff --git a/tools/include/nolibc/arch-mips.h b/tools/include/nolibc/arch= -mips.h > index bb9d580ea1b1..557ef34d9df8 100644 > --- a/tools/include/nolibc/arch-mips.h > +++ b/tools/include/nolibc/arch-mips.h > @@ -55,6 +55,8 @@ > #define _NOLIBC_SYSCALL_STACK_RESERVE "addiu $sp, $sp, -32\n" > #define _NOLIBC_SYSCALL_STACK_UNRESERVE "addiu $sp, $sp, 32\n" > =20 > +#define _NOLIBC_SYSCALL_REG register long > + > #else /* _ABIN32 || _ABI64 */ > =20 > /* binutils, GCC and clang disagree about register aliases, use numbers = instead. */ > @@ -66,12 +68,14 @@ > #define _NOLIBC_SYSCALL_STACK_RESERVE > #define _NOLIBC_SYSCALL_STACK_UNRESERVE > =20 > +#define _NOLIBC_SYSCALL_REG register long long > + > #endif /* _ABIO32 */ Since you need to use a #define, did you think about: #define _NOLIBC_SYSCALL_REG(var, reg) register long long var __asm__ (reg) to shorten the lines and the repetitive pattern. > =20 > #define __nolibc_syscall0(num) = \ > ({ = \ > - register long _num __asm__ ("v0") =3D (num); = \ > - register long _arg4 __asm__ ("a3"); \ > + _NOLIBC_SYSCALL_REG _num __asm__ ("v0") =3D (num); = \ > + _NOLIBC_SYSCALL_REG _arg4 __asm__ ("a3"); \ __NOLIBC_SYSCALL_REG(_num, "v0") =3D (num); __NOLIBC_SYSCALL_REG(_arg4, "a3"); ... David