Received: by 2002:ac0:aed5:0:0:0:0:0 with SMTP id t21csp2950565imb; Mon, 4 Mar 2019 19:24:46 -0800 (PST) X-Google-Smtp-Source: APXvYqzoHgMwc6gXRO+Nh0vp7ShZdGDKiZ92/6MLmZ+c+qR8NWT+yFTETeYIXyk3xJWgk/zhrPlT X-Received: by 2002:a62:e40d:: with SMTP id r13mr23023574pfh.11.1551756286134; Mon, 04 Mar 2019 19:24:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551756286; cv=none; d=google.com; s=arc-20160816; b=gjdavelpZoK+4hBnFULMw+50oRpvfC4q0lbSEHUay/UmblaxG/sRA2g6D3QBIXqz+V v7ilCDiH7Iko6lAyYwhm502A0sjT4rUmQL3M+RqnsW79s0DYOh28PfcbStS3hdbBI6Yi 6ZPbZjKeh2wj6ZSiRSllynmoA3k2CoU+CH1CnpCfYfNo3fKgOdfEv/p3zZQulUzYdo4L x0ArcP3+2h19WrUGYyDxaKDDb3NtzlcJOqrzRl3sBGsXRPYnKQqcxy6/7Jl2qgcLKv5S oMKXJIAVFfo6udJLuG+tUvlXBYG5srnGE1vAAJPWL4F/hUFBK5bs8vm9s07NY9cDPGda 7oTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=dPO6i7csP0XhWvQGXEZxh5ypatHXlh0rfDvT9lHvRIU=; b=rSr18OSmbQlchZyr6A+rO+NCF39hbxRYplGgrm/ncEz7mOjlAmJ+g6SKx7jxFH/zlN WSHd3eFYAAvo2UQHEoGjuQB1RsQOCCHrR/jomWm4Pio1Z0JYSz34TdRHlYvRuQZDFCkI 1eBdUpclvnkywGQjaGB8rpf9I4z9WRqQdxNTWzBPOY0j/6RRfjoauvAQXTIYo6e2/BtO ckj35kfaJA9UnPbQCYvJwxmTcscXC0wC/xZqORbcKH2Lc8eRL44tw8t1jitOYyudZppM DMOpltnXuPekkXlAHQqB/uqCwZVzx8MCjF6RHx8T8UYwRYAaaApXhAhBUAQUrkMcyqS0 rukg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 2si7211310pfd.129.2019.03.04.19.24.30; Mon, 04 Mar 2019 19:24:46 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727005AbfCEDYK (ORCPT + 99 others); Mon, 4 Mar 2019 22:24:10 -0500 Received: from 59-120-53-16.HINET-IP.hinet.net ([59.120.53.16]:31392 "EHLO ATCSQR.andestech.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726852AbfCEDYH (ORCPT ); Mon, 4 Mar 2019 22:24:07 -0500 Received: from mail.andestech.com (atcpcs16.andestech.com [10.0.1.222]) by ATCSQR.andestech.com with ESMTP id x253Mmx5044059; Tue, 5 Mar 2019 11:22:48 +0800 (GMT-8) (envelope-from vincentc@andestech.com) Received: from atcsqa06.andestech.com (10.0.15.65) by ATCPCS16.andestech.com (10.0.1.222) with Microsoft SMTP Server id 14.3.123.3; Tue, 5 Mar 2019 11:23:48 +0800 From: Vincent Chen To: , , , , , CC: , Subject: [PATCH v2 1/3] riscv: support trap-based WARN() Date: Tue, 5 Mar 2019 11:23:33 +0800 Message-ID: <1551756215-22299-2-git-send-email-vincentc@andestech.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1551756215-22299-1-git-send-email-vincentc@andestech.com> References: <1551756215-22299-1-git-send-email-vincentc@andestech.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.0.15.65] X-DNSRBL: X-MAIL: ATCSQR.andestech.com x253Mmx5044059 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The WARN() related function will trigger a debug exception. This can help developers to analyze the cause of WARN() because if the debugger is connected, the control flow will be transferred to debugging environment. Signed-off-by: Vincent Chen --- arch/riscv/include/asm/bug.h | 28 ++++++++++++++++++---------- 1 files changed, 18 insertions(+), 10 deletions(-) diff --git a/arch/riscv/include/asm/bug.h b/arch/riscv/include/asm/bug.h index bfc7f09..4d906d8 100644 --- a/arch/riscv/include/asm/bug.h +++ b/arch/riscv/include/asm/bug.h @@ -38,38 +38,46 @@ #define __BUG_ENTRY \ __BUG_ENTRY_ADDR "\n\t" \ __BUG_ENTRY_FILE "\n\t" \ - RISCV_SHORT " %1" + RISCV_SHORT " %1\n\t" \ + RISCV_SHORT " %2" #else #define __BUG_ENTRY \ - __BUG_ENTRY_ADDR + __BUG_ENTRY_ADDR "\n\t" \ + RISCV_SHORT " %2" #endif -#define BUG() \ +#define __BUG_FLAGS(flags) \ do { \ __asm__ __volatile__ ( \ "1:\n\t" \ "ebreak\n" \ - ".pushsection __bug_table,\"a\"\n\t" \ + ".pushsection __bug_table,\"aw\"\n\t" \ "2:\n\t" \ __BUG_ENTRY "\n\t" \ - ".org 2b + %2\n\t" \ + ".org 2b + %3\n\t" \ ".popsection" \ : \ : "i" (__FILE__), "i" (__LINE__), \ - "i" (sizeof(struct bug_entry))); \ - unreachable(); \ + "i" (flags), \ + "i" (sizeof(struct bug_entry))); \ } while (0) + #endif /* !__ASSEMBLY__ */ #else /* CONFIG_GENERIC_BUG */ #ifndef __ASSEMBLY__ -#define BUG() \ -do { \ +#define __BUG_FLAGS(flags) do { \ __asm__ __volatile__ ("ebreak\n"); \ - unreachable(); \ } while (0) #endif /* !__ASSEMBLY__ */ #endif /* CONFIG_GENERIC_BUG */ +#define BUG() do { \ + __BUG_FLAGS(0); \ + unreachable(); \ +} while (0) + +#define __WARN_FLAGS(flags) __BUG_FLAGS(BUGFLAG_WARNING|(flags)) + #define HAVE_ARCH_BUG #include -- 1.7.1