From patchwork Thu Mar 15 02:40:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 886107 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=uclibc-ng.org (client-ip=89.238.66.15; helo=helium.openadk.org; envelope-from=devel-bounces@uclibc-ng.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=c-sky.com Received: from helium.openadk.org (helium.openadk.org [89.238.66.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 401tB62HL8z9sSd for ; Thu, 15 Mar 2018 13:40:44 +1100 (AEDT) Received: from helium.openadk.org (localhost [IPv6:::1]) by helium.openadk.org (Postfix) with ESMTP id E8838100E9; Thu, 15 Mar 2018 03:40:39 +0100 (CET) X-Original-To: devel@uclibc-ng.org Delivered-To: devel@helium.openadk.org Received: from smtp2200-217.mail.aliyun.com (smtp2200-217.mail.aliyun.com [121.197.200.217]) by helium.openadk.org (Postfix) with ESMTPS id 49C0B1004C; Thu, 15 Mar 2018 03:40:36 +0100 (CET) X-Alimail-AntiSpam: AC=CONTINUE; BC=0.03212608|-1; CH=green; FP=0|0|0|0|0|-1|-1|-1; HT=e02c03310; MF=ren_guo@c-sky.com; NM=1; PH=DS; RN=3; RT=3; SR=0; TI=SMTPD_---.BJ8DM0._1521081630; Received: from localhost(mailfrom:ren_guo@c-sky.com fp:223.93.147.148) by smtp.aliyun-inc.com(10.147.44.129); Thu, 15 Mar 2018 10:40:30 +0800 From: Guo Ren To: devel@uclibc-ng.org, wbx@uclibc-ng.org Date: Thu, 15 Mar 2018 10:40:27 +0800 Message-Id: <1521081627-9322-1-git-send-email-ren_guo@c-sky.com> X-Mailer: git-send-email 2.7.4 Cc: Guo Ren Subject: [uclibc-ng-devel] [PATCH] csky: support bsd-setjmp and bsd-_setjmp. X-BeenThere: devel@uclibc-ng.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: uClibc-ng Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: devel-bounces@uclibc-ng.org Sender: "devel" Signed-off-by: Guo Ren --- libc/sysdeps/linux/csky/setjmp.S | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/libc/sysdeps/linux/csky/setjmp.S b/libc/sysdeps/linux/csky/setjmp.S index 03b402b..fb4b156 100644 --- a/libc/sysdeps/linux/csky/setjmp.S +++ b/libc/sysdeps/linux/csky/setjmp.S @@ -7,7 +7,7 @@ #include -ENTRY(setjmp) +ENTRY(__sigsetjmp) stw sp, (a0, 0) stw lr, (a0, 4) @@ -43,8 +43,20 @@ ENTRY(setjmp) ldw lr, (sp, 0) addi sp, 8 rts +END(__sigsetjmp) + +/* + * Support bsd-setjmp and bsd-_setjmp with tail-call method. + * Use br to keep the lr-reg, we must return to the Caller not setjmp. + * And we will rts by __sigsetjmp. + */ +ENTRY(setjmp) + movi a1, 1 + br __sigsetjmp END(setjmp) -strong_alias(setjmp, __sigsetjmp) -strong_alias(setjmp, _setjmp) +ENTRY(_setjmp) + movi a1, 0 + br __sigsetjmp +END(_setjmp)