From patchwork Thu Aug 6 10:34:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1341571 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=h5n86EMQ; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BMlJ9004Yz9sR4 for ; Thu, 6 Aug 2020 20:35:34 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id B74A1821C3; Thu, 6 Aug 2020 12:35:24 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="h5n86EMQ"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id EA939821CA; Thu, 6 Aug 2020 12:35:22 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FROM,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 3B876821B2 for ; Thu, 6 Aug 2020 12:35:20 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=xypron.glpk@gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1596710106; bh=btXzVJ9LX6w8djv6E9TP1zQnbFcZKbi4Hq28Y9NllMI=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date; b=h5n86EMQk8D0HimK/FMdBNpsJFUIQSuA5AY5WVJ5+iHKan9S8uL2cuPRDHnivAEg7 oJsgfuk1LI2WZWj0WXQN8sQb0uK0DXJDXFanbctDy+k4eBqnTaPa0Gra2WAA6nDUul x7yJy2c94ydj2B0cdCtDeTJabpUxHIzxrHMcDPGY= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from LT02.fritz.box ([178.202.41.107]) by mail.gmx.com (mrgmx005 [212.227.17.184]) with ESMTPSA (Nemesis) id 1MAwXr-1jsNu70KvB-00BJul; Thu, 06 Aug 2020 12:35:06 +0200 From: Heinrich Schuchardt To: Rick Chen Cc: u-boot@lists.denx.de, Leo Liang , Heinrich Schuchardt Subject: [PATCH v2] cmd: exception: unaligned data access on RISC-V Date: Thu, 6 Aug 2020 12:34:59 +0200 Message-Id: <20200806103459.9263-1-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 X-Provags-ID: V03:K1:4l1AcLE8FFzaKlrl2aRsK1M+Kh+c+glPpJQ7NYc2xdQC8HOiY8K klUyjTwo0Xl9vmoKnJIYoMB+dcldWNN62VQb3ybMrG3Y+nrTLPtJytok27nPQHthOsKjnkS Nr39EWDMBZR4fkzTw7u6BtI5G6Km24vib/hmPKFMyyY0cIhoXgYAiGjOKWPxeuOzBfY7QKK uH999t2xc+8Qn+nFCV/8g== X-UI-Out-Filterresults: notjunk:1;V03:K0:pMy1FqAX8+0=:mB0tyuchcpXlsKyhqQsVzV fpmUvXMrDHd1f/FUHicSzFNGXXkod16CVXcWfw5KNPA+hnvI4Cc3MkN8RxlnMfnRG5K6PUrqD X+PM+jqxmFPIwbyoC8+td6yS4lrnYho7Wyo7KFIfoCM86kyNSVPCVuSrz6ZNEqLDwGC8geL8t cHdm58HWvtcjf9qh4aRmoGVXUHxaE032EE7Yy8xyPQPeO0ZyZ8wSM1iNqnz5K64ABfZKaK+8y V4lHl/bcoPhN7kfJMmjmXA+c1Xlg7K5y62QVK2Iaxo16nW68Z4jb2TnFD5c8VzZywCQilOY3y F6R0AZSgFwF2jzQ2KdZuvxcjNedEwPb4GBq8viF6r1YR4JnNSLacTw17AXXkcNuN2t2b9v9DS 0Oh8m/049Bzm6Jh+IkefCJpSP1F0L5mTNrocesFlBNKNOKOpSwJ/nHRRFlpgd6mQCmDcOK6OV nOQEvpgVZaOpZ+eOV+vDg59QuqBrGRZNp7Oara/VtO9P/wPRPxiryR9OMF0d3X5siiSFvaUSb WO/UId5J7GeCjyZ7WVi7UyLSIkxnjkH5x4pNuuQHCNRZyB306hKqL46p8OR++oeTVmIHZksQH P9qOjHftzvxSTKtxkJHN/AANS27inAd35XNh3dUE3Vna+A1B37rz/+pZkMDnLx9xRm1Rz1BX1 41a96d23xYTPb7f/5In6cHYSo1siUp3+0w3h6C5xqT06c4oNWRL+oil6SaBaG+leEDO99eGZh 6OB6sni9E/+LzF9yCNWvOf13yTzr/NDQ/sdVN1DdTfrsLcEBjraXHsyGKNPWXBcIBijnyhz/l GGHFJhQK68j6wylsoLyyTyeRj1nfXzM2HmMPQm6JKsLuHl/+wS89lBinpd6LzWsOCC7wmy6MJ rCnrwzO5WHG0/IqskC2AEJ9112krlXXMmbMZatFI9FnLot7tcSJvzFdJYdNHyxHLxIANND+ql C6pHruQkQp0ie7Y4MG2cNX8qmwYm98kRZSd26jfOZ1PEZeXgvaafoixtnKwHTFlmEiXcf/B1G 4N2PgqSPQprttvdFxjU2T8ykpENXAOFm9P+rPmXPVjBNxS0rcYOT80xTdyLUWUc8uFOWIaJA7 86Ko19Ef14WrHNwX6kIOdyvtc86/NP6MKkq02KFbtZgabMctH2T3vSF7nx/OBblH6cPGG+QVi sDFzatreGBR62S/eUZEX9PZNfcJvDBpIn1xZYjvSNChxRqPTOkHD8TetKTm/s91U7RFZ8eo01 00n1Vqb0kBkEGcUJGyC+POweJ1EAe2KeMZrvK3A== X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean The command 'exception' can be used to test the handling of exceptions. Currently the exception command only allows to create an illegal instruction exception on RISC-V. Provide a sub-command 'exception unaligned' to cause a misaligned load address exception. Adjust the online help for 'exception undefined'. Signed-off-by: Heinrich Schuchardt Reviewed-by: Rick Chen --- v2: If unaligned access is support, print success message. --- cmd/riscv/exception.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) -- 2.27.0 diff --git a/cmd/riscv/exception.c b/cmd/riscv/exception.c index 3c8dbbec0e..9687cec812 100644 --- a/cmd/riscv/exception.c +++ b/cmd/riscv/exception.c @@ -8,6 +8,18 @@ #include #include +static int do_unaligned(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) +{ + asm volatile ( + "auipc a1, 0\n" + "ori a1, a1, 3\n" + "lw a2, (0)(a1)\n" + ); + printf("The system supports unaligned access.\n"); + return CMD_RET_SUCCESS; +} + static int do_undefined(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { @@ -16,6 +28,8 @@ static int do_undefined(struct cmd_tbl *cmdtp, int flag, int argc, } static struct cmd_tbl cmd_sub[] = { + U_BOOT_CMD_MKENT(unaligned, CONFIG_SYS_MAXARGS, 1, do_unaligned, + "", ""), U_BOOT_CMD_MKENT(undefined, CONFIG_SYS_MAXARGS, 1, do_undefined, "", ""), }; @@ -23,7 +37,8 @@ static struct cmd_tbl cmd_sub[] = { static char exception_help_text[] = "\n" " The following exceptions are available:\n" - " undefined - undefined instruction\n" + " undefined - illegal instruction\n" + " unaligned - load address misaligned\n" ; #include