From patchwork Fri Sep 16 19:31:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?=C5=81ukasz_Stelmach?= X-Patchwork-Id: 57694 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 58721382DCF2 for ; Fri, 16 Sep 2022 19:33:08 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 58721382DCF2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1663356788; bh=qESF6PMxIqq4HDvvnkLDsPbnbjxueKYd1anfFLY9HvE=; h=To:Subject:Date:References:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:From; b=MxPweoVZ0hh4UEO8kUSlde119lQhjpvMsW7Wkx6/9R6W+BjQ14cSZP1XUNoI91zB2 75DPuMOFBEMCBOzGYOsxz9vwVpx/2FtCkvH98Dur21lDMIyZsWprVz3tgZJXbye32V xpKYTiT5xVP316JpcenM8urW9OqXenPSWhNOpRHg= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by sourceware.org (Postfix) with ESMTPS id CB2DB3857B9D for ; Fri, 16 Sep 2022 19:32:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org CB2DB3857B9D Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20220916193238euoutp015bc92d0da1c39dfeafed565aa9e80930~VbijR2xvV0862308623euoutp01O for ; Fri, 16 Sep 2022 19:32:38 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20220916193238euoutp015bc92d0da1c39dfeafed565aa9e80930~VbijR2xvV0862308623euoutp01O Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20220916193238eucas1p176634a50cc49c1422741e141c8376fd6~VbiiaPdgv2007120071eucas1p1K; Fri, 16 Sep 2022 19:32:38 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id ED.F2.07817.55FC4236; Fri, 16 Sep 2022 20:32:37 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20220916193237eucas1p2a0a82daf73a66f5e25b9fa5372268f61~Vbih9mH0_1641016410eucas1p2y; Fri, 16 Sep 2022 19:32:37 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20220916193237eusmtrp11d60d20fdf08583dec660ce437e44a35~Vbih70GN82527725277eusmtrp1x; Fri, 16 Sep 2022 19:32:37 +0000 (GMT) X-AuditID: cbfec7f4-8abff70000011e89-0e-6324cf55e384 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 80.09.07473.55FC4236; Fri, 16 Sep 2022 20:32:37 +0100 (BST) Received: from localhost (unknown [106.120.51.46]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20220916193237eusmtip276e189d53d91cb95dce00f96f5528b70~VbihxS0cr0666706667eusmtip2B; Fri, 16 Sep 2022 19:32:37 +0000 (GMT) To: libc-alpha@sourceware.org, andrew@sifive.com Subject: [PATCH v2] RISC-V: Allow long jumps to __syscall_error Date: Fri, 16 Sep 2022 21:31:27 +0200 Message-Id: <20220916193127.1527992-1-l.stelmach@samsung.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Organization: Samsung R&D Institute Poland X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrFKsWRmVeSWpSXmKPExsWy7djPc7qh51WSDaa1W1hM3b+MyWLn7hes Fltux1jcnLaGxeLhzNOMFoc/dLJbNH6ay2xx89AKRovf93ayWaw9cpfd4uXlHmYHbo++pfOY PL6/XMnm8WjzchaPNy9fsnjcubaHzaNvyypGj0vN19k9tv9282g/0M0UwBnFZZOSmpNZllqk b5fAlbF60VbGgn+SFY2Ni9kaGJ+JdjFycEgImEj82eTTxcjFISSwglHi1Jv5TBDOF0aJpjWb oZzPjBKHL21i7GLkBOuYvmkqO0RiOaPE392vWCGc54wSazpOg1WxCThK9C89wQpiiwgYSOw4 3gE2illgHpPEy39/2UASwgL2Em/WPAIrYhFQlbh25BsziM0rYCsxbcpmqHXyEm3XpzNCxAUl Ts58wgJi8wtoSaxpug5mMwPVNG+dzQyyQEKgmVPi0u+n7BDNLhJHv51nhrCFJV4d3wIVl5E4 PbmHBaKhHejTKwtZIZwJjBKfO5qYIKqsJe6c+8UGCidmAU2J9bv0IcKOEr+6TrJCgo9P4sZb QYgj+CQmbZvODBHmlehoE4KoVpFY17+HBcKWkuh9tQLqLw+JrnkrmSYwKs5C8tosJO/MQti7 gJF5FaN4amlxbnpqsVFearlecWJucWleul5yfu4mRmDyOv3v+JcdjMtffdQ7xMjEwXiIUYKD WUmEV9VTJVmINyWxsiq1KD++qDQntfgQozQHi5I4b3LmhkQhgfTEktTs1NSC1CKYLBMHp1QD U5l5lOvP7qbkXyWazCapc87bP3ixvnG6b2tA9q1d2n4/ftmYH7tTm6+zzoW9v/vF/EXbnM5K s6ZI9v5RPvCy9MWibw+XPzrw4fJjjtRfB/p2/P0raM2y9P/lG+80Z0qvVrN7w7bA8dzxu01X rzk6tF95ujGY/Zxy5cXEJ6/vHziqGOu5W7okxCD37N97C3Osvt45tFEp3zduYtIehpAkjpzr a033VkzXDp+11a6V31T2qVK5U/IxHqmL14RvXrz268sCtWtKmQ+FjBpc9M16OFa8NH8ldmxR pOr14G99ohPXyfjvm9F9RrbeNM7iTMyFoM19aTvW1335apFVJ3nplvO+I3+sL9p8Wj1BdO7t 9t9KLMUZiYZazEXFiQB2kvIdzQMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrIIsWRmVeSWpSXmKPExsVy+t/xe7qh51WSDe5ekrWYun8Zk8XO3S9Y LbbcjrG4OW0Ni8XDmacZLQ5/6GS3aPw0l9ni5qEVjBa/7+1ks1h75C67xcvLPcwO3B59S+cx eXx/uZLN49Hm5Sweb16+ZPG4c20Pm0ffllWMHpear7N7bP/t5tF+oJspgDNKz6Yov7QkVSEj v7jEVina0MJIz9DSQs/IxFLP0Ng81srIVEnfziYlNSezLLVI3y5BL2P1oq2MBf8kKxobF7M1 MD4T7WLk5JAQMJGYvmkqexcjF4eQwFJGia+3djN3MXIAJaQkVs5Nh6gRlvhzrYsNouYpo0Tr tItsIAk2AUeJ/qUnWEFsEQEjiWMdzUwgRcwCy5gkbs6bwASSEBawl3iz5hFYEYuAqsS1I9+Y QWxeAVuJaVM2M0JskJdouz6dESIuKHFy5hMWkCOYBdQl1s8TAgnzC2hJrGm6zgJiMwOVN2+d zTyBUWAWko5ZCB2zkFQtYGRexSiSWlqcm55bbKhXnJhbXJqXrpecn7uJERh324793LyDcd6r j3qHGJk4GA8xSnAwK4nwqnqqJAvxpiRWVqUW5ccXleakFh9iNAX6YCKzlGhyPjDy80riDc0M TA1NzCwNTC3NjJXEeT0LOhKFBNITS1KzU1MLUotg+pg4OKUamComTf6ju++sf3N75bT5iWI+ mzR0L2cdmmW4fQ/XYfk3i0yatf83HPOeym82S+7OFr6ADhVrr2mbfrH8CDj34OUjZc3etCgx 46VxKdKZrxVu15u+kll79V6p/Oq1GYfk+hObmWNXHf56r61tyv0NK14qnLy9YcNjOQ7p4zuL Vjzfuf7Vv/nKOb+MitdEvS1oK3uz4/70g/ez3PxSuM0U9O8a3n3378OpTPdl0/3387142Ljr etzZNMGld81M5L03vdum/HeRV9L/c+GeznECQlVCdeX5c1lmsM9fcl3pWs7SpT/uzXBk3LBG dHKa2f3sPQbT3G8yvd/wTmoNs+NZufpVLXP2HkldVH6Xf0mz+K8CJZbijERDLeai4kQAAuiP lkQDAAA= X-CMS-MailID: 20220916193237eucas1p2a0a82daf73a66f5e25b9fa5372268f61 X-Msg-Generator: CA X-RootMTR: 20220916193237eucas1p2a0a82daf73a66f5e25b9fa5372268f61 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20220916193237eucas1p2a0a82daf73a66f5e25b9fa5372268f61 References: X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: =?utf-8?q?=C5=81ukasz_Stelmach_via_Libc-alpha?= From: =?utf-8?q?=C5=81ukasz_Stelmach?= Reply-To: =?utf-8?q?=C5=81ukasz_Stelmach?= Cc: k.lewandowsk@samsung.com, =?utf-8?q?=C5=81ukasz_Stelmach?= , alistair.francis@wdc.com, joseph@codesourcery.com, aurelien@aurel32.net, Marek Szyprowski Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" __syscall_error may end up farther than 1MiB away from a caller, especially when linking statically large binaries. tail allows for 4GiB jumps and is reduced to j when a linked symbol is within range. Fixes: 36960f0c76 ("RISC-V: Linux Syscall Interface") Fixes: 7f33b09c65 ("RISC-V: Linux ABI") Signed-off-by: Ɓukasz Stelmach Reviewed-by: Palmer Dabbelt Acked-by: Palmer Dabbelt --- Changes in v2: - use tail instead of la+jr as advised by Andrew Waterman sysdeps/unix/sysv/linux/riscv/clone.S | 2 +- sysdeps/unix/sysv/linux/riscv/getcontext.S | 2 +- sysdeps/unix/sysv/linux/riscv/setcontext.S | 2 +- sysdeps/unix/sysv/linux/riscv/swapcontext.S | 2 +- sysdeps/unix/sysv/linux/riscv/sysdep.h | 2 +- sysdeps/unix/sysv/linux/riscv/vfork.S | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sysdeps/unix/sysv/linux/riscv/clone.S b/sysdeps/unix/sysv/linux/riscv/clone.S index d7d2915e87..45ea8f184b 100644 --- a/sysdeps/unix/sysv/linux/riscv/clone.S +++ b/sysdeps/unix/sysv/linux/riscv/clone.S @@ -63,7 +63,7 @@ L (invalid): li a0, -EINVAL /* Something bad happened -- no child created. */ L (error): - j __syscall_error + tail __syscall_error END (__clone) /* Load up the arguments to the function. Put this block of code in diff --git a/sysdeps/unix/sysv/linux/riscv/getcontext.S b/sysdeps/unix/sysv/linux/riscv/getcontext.S index 499f70b65d..f4f828805c 100644 --- a/sysdeps/unix/sysv/linux/riscv/getcontext.S +++ b/sysdeps/unix/sysv/linux/riscv/getcontext.S @@ -70,7 +70,7 @@ LEAF (__getcontext) ret -99: j __syscall_error +99: tail __syscall_error PSEUDO_END (__getcontext) diff --git a/sysdeps/unix/sysv/linux/riscv/setcontext.S b/sysdeps/unix/sysv/linux/riscv/setcontext.S index e3bc84a2e6..1e529b900c 100644 --- a/sysdeps/unix/sysv/linux/riscv/setcontext.S +++ b/sysdeps/unix/sysv/linux/riscv/setcontext.S @@ -92,7 +92,7 @@ LEAF (__setcontext) jr t1 -99: j __syscall_error +99: tail __syscall_error END (__setcontext) libc_hidden_def (__setcontext) diff --git a/sysdeps/unix/sysv/linux/riscv/swapcontext.S b/sysdeps/unix/sysv/linux/riscv/swapcontext.S index 4da615f6d4..287ba364cd 100644 --- a/sysdeps/unix/sysv/linux/riscv/swapcontext.S +++ b/sysdeps/unix/sysv/linux/riscv/swapcontext.S @@ -118,7 +118,7 @@ LEAF (__swapcontext) jr t1 -99: j __syscall_error +99: tail __syscall_error PSEUDO_END (__swapcontext) diff --git a/sysdeps/unix/sysv/linux/riscv/sysdep.h b/sysdeps/unix/sysv/linux/riscv/sysdep.h index 37ff07a0d7..aff8d857c9 100644 --- a/sysdeps/unix/sysv/linux/riscv/sysdep.h +++ b/sysdeps/unix/sysv/linux/riscv/sysdep.h @@ -102,7 +102,7 @@ # else # define SYSCALL_ERROR_HANDLER(name) \ .Lsyscall_error ## name: \ - j __syscall_error; + tail __syscall_error; # endif /* Performs a system call, not setting errno. */ diff --git a/sysdeps/unix/sysv/linux/riscv/vfork.S b/sysdeps/unix/sysv/linux/riscv/vfork.S index 0970543619..1482406e2d 100644 --- a/sysdeps/unix/sysv/linux/riscv/vfork.S +++ b/sysdeps/unix/sysv/linux/riscv/vfork.S @@ -39,7 +39,7 @@ LEAF (__libc_vfork) bltz a0, 1f ret -1: j __syscall_error +1: tail __syscall_error END (__libc_vfork) weak_alias (__libc_vfork, vfork)