From patchwork Tue Mar 22 20:59:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608341 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=g4Xeezco; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP5Q3wT1z9s1l for ; Wed, 23 Mar 2022 08:00:26 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id D12CE83BEE; Tue, 22 Mar 2022 22:00:22 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="g4Xeezco"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id CBF5C83BC3; Tue, 22 Mar 2022 22:00:15 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0610.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::610]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 6105A83B58 for ; Tue, 22 Mar 2022 22:00:06 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hXykJ1GMHrPG27OX9crNkt3VDJIf+0rKfNCa5Y2mRqlBLZxqM8EldIrOml4Q1ewNEhin4/yVCQl8xW6ZCbLUc5brv6MBZNX1a980PmjfpnYdvtjyCgtSXuS2I5aSHyAE1YIrahMyDnbpPQ0kRqydLZUlwz4JT7qz6UGNmoQ1Q0rWlJcK4R3QQ5ps83OfkeZsET3tdTAt9Go/iQS7ZMn6pa0zQVk9IMu6LQnSRM4O5x1L/7TFrFuIZkiupfAZZGPgDkOqdtTfkFPgNhuXUfy1gDWdziv5FiEl1oOYOVVMsj9stevmjfsnVAwseUoGOePTbChoNPTSzAASSut4B0YCvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7HNqiVU7jS2ELuFeblQd8i7225uX+pJWvh7+H9Nm3iU=; b=FwyDTTQIE6KSMWLCFjm2VpIx2/2ih/2J2qJ0fYIOwdktN6NdJEDUAWQ3tUHrWQtbzlhc4CkXHdKoNk996/Aj6Y2Kk0rvNeyDdkXYTtcrrt16gxTgafr9n2k3EoXZNhtndA4m8GtsvnwBSJcPg0Q1zfF75q6FKB3dBE+POeWnX6YXcI+zc8bSBj9PblG7fp95jI2VoHpIv9wT6Ps/vSr/TGgBxQ5GyoLlFoVfIZefuMkDzkNy17eWCnGYKZm699G8Mx8YHSCo580bmFLwBiIVOLlAYXLDT+G7Zk8El5Bz+rfiEWeLPYwgPVz+naC1rRb+alplASrPBTS0EiXLzEUdtg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7HNqiVU7jS2ELuFeblQd8i7225uX+pJWvh7+H9Nm3iU=; b=g4XeezcoDrJN6DsxTKv0xVFposEFYNQeJnVP+if7xc/4GYq+1q7XgKLKIrPkfGntK6gZhY9j26YrzwXOeGAgtWbBoqxzxI7cbbm0BdGm51kIiakmsxtP+TArQkxld5ZmkrpccURZQyrFuksjPi0HVU9WW2qwZxhhu9t0K264Ob+rW6fKumb+x1+fTM5K9VtFun+OgNn4uNxwWyu6vy6WQ7eaC9DjH3hLYQxP80oDblwTL4oJdPNBRSANHH5RWUXAwG6A5PRRVy59RhrFg3S8nLiJnhlg2uP5wBdNu+wUJPw7xk28lC8nSExMcpDDhHJXfXVjrLxuMiCG9zU/EcyNtw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:04 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:04 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 01/29] doc: Convert semihosting readme to rST Date: Tue, 22 Mar 2022 16:59:09 -0400 Message-Id: <20220322205938.1721846-2-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ca656674-acac-465f-8f42-08da0c46f03c X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: e+gwT8kRHn06Y2FXBCEqUGcL66E0KTChsmaYsRAbG1aZmADeFnUGnDAeMuwqNHVOC2zR61HSQYTcXYLKW6svz9nH7eXsc3LtL0Hpy3tmK+2bzdFOQrv+/RPiDKRaaaR7CMBDy7t0VZCOxtbgeLMkoUgyWtr6piMgFIlEmKy7x/yFMu/bZOtvKmKOIOgx3nD0yvmvnda5dwCiJ/rTWY9K5vX7xPtS+P2F13k92dpsHoIceQO6rHfWF+ga5E71xJ900DswBJOsGguakx2QJqkakuOF516Shxov3LZo1l3BAQ4jPwBY2SXAp8lOhNFEo84kRGnaWVA3sydNdMd8tFpx67XPhDS8LLmSthVnuefD4ujMf0gt4cuszjIHCEQDFYIKat0K6n1qJqXX0PYNktHYUL2UGyWCEU59fM2MREjjmQgwHafPZziPI+31GnnQGUsD9IUJCcVkKb/fGYBPWaVoztFEQBTc5LZ11uZ6bHKGfY3SSpleNAuPmQY9GgOGv6ubseSySw6NVf58Kg0gxIZH2NQ4k3UubfATMDoOHqMYckDsWc0kE4ysBwzi1pFHkSBR3A7i3V8pDVfDyxmhZquhSr9US0L6dzxSxZBvfGdmU/6mYnME47xQT7Kz+e3885SAX+GoHrQ/jotWP27oYZBLlxgppOkg5AI0vfeKDhbwmIdxFyplllmwqr4sVGS/H0yEAUpExXh7r75biEU6nJD4P9LQDkw3ZBFMhFR42PRF9Hvw416l5QMNzZOzEfFtH1El4ZAzXc/WNnmQBlPgAlESl2fJP6uBkAGnUy8GaET0t/E= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(15188155005)(2906002)(508600001)(66946007)(83380400001)(6486002)(8676002)(66556008)(66476007)(107886003)(4326008)(1076003)(16799955002)(5660300002)(2616005)(8936002)(54906003)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(6512007)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Pay6fKLOMNlvTZnZRUc2sQyydDpJus+k6Uu4UXxmxltfWvOhh14RwdGbOXL/COHcg2sZSMptAnGW+WZSQb3TceXLVXZly/AqtZd1Lockk5bPxDFNehZ5ALWY5PQLh9TjEZNvlVGJ9GKihagCkFIOcNm0oTTIt4nKsTwZ+RJ4NDTiF69W9GlyXclNqp1auXiZeVjfbpZoROcAHR28F5cY/uWTxG/T5miHRne0IV7d1zcqYNr8mMYv6BlZNesQqiHtWK6DGc7q4/QiF8pr6G0fDdxCwCQuEVtzRU19gQ6EwaM6r7iK98On8S0a2LNsPHK2Q7bgXKpSttdFMoirBeKHe+DLch3NpQbfdlm0l9zGVSQ25kmTehn9yMU/iVtf0Wq/RQlxKa0qSchEnIm9+qGqodBIerMLTYazBr6vLk7WGFc836jSNgR/9QTGWWtIBb0tS7y5ZIJEdKRIa3AxkofhJ6nA1t0TAlJM+qfutQ5YFL7Mytzf8INYFfF9G0M1Kz8nWpvt+nNUyIb983dPNlYc9+BUEReXV6zO1/gx9s/Jdq9fidgFXBlZY3q2lx0VUqB45KbLtwm+naCvyRtGDy57SJv0rQUT7YPHUSVXfdHUjSN8U+mBdq3D+PdZta/glKamD7ppwYBTUdqi+jkddqH7Sb3ScBmzO2mf4+Q/7Okf1oDlcFZo97/gSHQxRxEK2IZ98+rBe3xlpXYa4pLTjMhJ9txBiVkE1koTMv/7RCInhnCiFa0yFr90yq8tSeR21FcGHKFGC+U/PXamIywBvS3jS/k52h+6Npp+hJSVhz5nQxzXNfHi974M23fBg92DRUkRm9LS3dcn2oV9azy9Sad62D2C4QmXDXx4Ke2SWVpSAyJvKiW90DjpFbk8TUyI42SK2I33UK1zSdGtafRi7ZB+ZpP6lNmEZRuvaL2x9VlqqZAyBLxLdXD2ugpu+RkBphblWncAR8bRG9a03nNhuWBqEaU5T5Z+RkZ79P51i2uD91qqws1+H1e+fDq9GjQLpGzTFbgJiz87hnyU0c6Sh82cv7YPYiijHU6+waZ9i/dj6TwukRV7NhWy67dURN2WKaUyIc8UU7+VfYmDoZuH9DL9dUxX+gmg5XTkFY7TyAGC07skor2UqtOWkTaiBHUd3l7UG2RV4/sXx6rxIgYE7YpfTPDo7Jd78P5gHmuNxbJb7JFGBDaYSXB8BYuC9tCKMdyGb9qctEQZC7aJdIURy88WG6zIWIvNJLfJYv1XSWZJVw2fo2/HftA6eCFQfy1JDsrOZc2ExH841toXP8Ie14yK84JpXt0qFt8fn8bCvHbHjKrnAOwpnaMUuRA7A9OkKueY9TuRZUqn5Z4DMqxEjMN5C3owWkkDd0SlaWr7LK2Yev8hgusz7Ytnxd6FbfSsW9F+XP0/7OQXv4dKwZR/bt2G6X+vON1QNavI//3RYVOoWLiSGI1ZI8ZMe8cM5EoLmis1uehiRa9Ng2vukhPk74ftSQ== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: ca656674-acac-465f-8f42-08da0c46f03c X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:04.6122 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: NiCyeJYuFhCIcQnbwmhHYd49UUX+92OT1dlUY2v7ZY8TJpInk3dkEARTU7KMXbR0+s6AQz550Jl7LQIn9dddVQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This converts the semihosting readme to rST. I have tried to make only cosmetic changes, but I did fix up the first link (which was broken). Signed-off-by: Sean Anderson --- (no changes since v1) doc/usage/index.rst | 1 + .../semihosting.rst} | 35 +++++++++++-------- 2 files changed, 21 insertions(+), 15 deletions(-) rename doc/{README.semihosting => usage/semihosting.rst} (53%) diff --git a/doc/usage/index.rst b/doc/usage/index.rst index 750102830b..bfa59f2217 100644 --- a/doc/usage/index.rst +++ b/doc/usage/index.rst @@ -11,6 +11,7 @@ Use U-Boot netconsole partitions cmdline + semihosting Shell commands -------------- diff --git a/doc/README.semihosting b/doc/usage/semihosting.rst similarity index 53% rename from doc/README.semihosting rename to doc/usage/semihosting.rst index f382d0131e..ed16e4d582 100644 --- a/doc/README.semihosting +++ b/doc/usage/semihosting.rst @@ -1,35 +1,40 @@ -SPDX-License-Identifier: GPL-2.0+ -/* - * Copyright 2014 Broadcom Corporation. - */ +.. SPDX-License-Identifier: GPL-2.0+ +.. Copyright 2014 Broadcom Corporation. + +Semihosting +=========== Semihosting is ARM's way of having a real or virtual target communicate with a host or host debugger for basic operations such as file I/O, -console I/O, etc. Please see -http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471c/Bgbjjgij.html for more information. +console I/O, etc. Please see `Arm's semihosting documentation +`_ for more +information. For developing on armv8 virtual fastmodel platforms, semihosting is a valuable tool since it allows access to image/configuration files before eMMC or other NV media are available. There are two main ARM virtual Fixed Virtual Platform (FVP) models, -Versatile Express (VE) FVP and BASE FVP (See -http://www.arm.com/products/tools/models/fast-models/foundation-model.php) +`Versatile Express (VE) FVP and BASE FVP +`_. The initial vexpress64 u-boot board created here runs on the VE virtual platform using the license-free Foundation_v8 simulator. Fortunately, the Foundation_v8 simulator also supports the BASE_FVP model which companies can purchase licenses for and contain much more functionality. -So we can, in u-boot, run either model by either using the VE FVP (default), -or turning on CONFIG_BASE_FVP for the more full featured model. +So we can, in U-Boot, run either model by either using the VE FVP (default), +or turning on ``CONFIG_BASE_FVP`` for the more full featured model. -Rather than create a new armv8 board similar to armltd/vexpress64, add -semihosting calls to the existing one, enabled with CONFIG_SEMIHOSTING -and CONFIG_BASE_FVP both set. Also reuse the existing board config file +Rather than create a new armv8 board similar to ``armltd/vexpress64``, add +semihosting calls to the existing one, enabled with ``CONFIG_SEMIHOSTING`` +and ``CONFIG_BASE_FVP`` both set. Also reuse the existing board config file vexpress_aemv8.h but differentiate the two models by the presence or -absence of CONFIG_BASE_FVP. This change is tested and works on both the +absence of ``CONFIG_BASE_FVP``. This change is tested and works on both the Foundation and Base fastmodel simulators. -The semihosting code adds a command: +Loading files +------------- + +The semihosting code adds a "hostfs":: smhload
[env var] From patchwork Tue Mar 22 20:59:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608344 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=o3V17EPb; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP685XFPz9s1l for ; Wed, 23 Mar 2022 08:01:04 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 694F883BE4; Tue, 22 Mar 2022 22:00:50 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="o3V17EPb"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 5C20183B80; Tue, 22 Mar 2022 22:00:20 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0607.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::607]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 924D983BA1 for ; Tue, 22 Mar 2022 22:00:07 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lGimGPVk7qLreEpInSSLqsp59O8W93gK8lP5/n2ugb3j7ocnuH5AdM+zoJZKmcb1Z7eJEGmrMWnR1iLXKGql4+5hjXxRvK9e92EZ3vADxVEJqkQcpdvlO3X0LGJ6KFbFQRTc0GOPQm+GcychEMina/oxfCbXXR+qp1X78azB+9NteWzP1VN4jt32YaYdXvva+/f94aYaWYYLpZjm05jDT3216Xf1fk7pwZj9IOew0Cg1voihkd0odis3pg6T48xpKCC8Ia6iTiktAu9He+Fk+hGxKysOLgHDB5N+MZjItJJcHJp9t9HoluZuykZ1nvhpVBnd311mYkrAg7693MjcfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=v6zWTpP3Q6aF3RMD3ypcU80TNJQQ6gESFV1qAoPYy38=; b=E5noSkQsFI6FTiw3kZDa60Z0r33/hCtmmoyDvf/BZa4pFD0Sd3zap77FHrz1ODIt5jnY7psHx5LF+lfIz3jHrYGVl/6HOyRWRs5yM7KF9akGLmCYob8qJxkc+OFsoxZriTn6E2ECbS2K+IN4cDR3/Y/MdRNV9nRw9uK6lcL9ONpCCzqX8xYpF9PxHdmr28Wpf2m3E4AS8dqjWyUr/UbMivEHX7LbXnil14yQ0bXm4CA6OVzXNxVbp5O6y/lolRFopuPUxCL5oqVIe2rBTagzDF31jXFu7GHCvHmlJ89jD/5PB3H2kk8dMQgh3jqKxb1th/dqh9jp/kINe3SEx005Ew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=v6zWTpP3Q6aF3RMD3ypcU80TNJQQ6gESFV1qAoPYy38=; b=o3V17EPbRfqPLQR/xKQjt5kmhGqa90rZdY9+wNBQDwjspbOvuIisxSXQNWKTm6RX++SqDeUIBcrj4p11+7g1ZgZuSOUEdOprwdO5HlbUyM7E6f8MVZqYtg2cXCkP3B5USgzSAi/S0zMcgE3wZEztT3wu57zcCHB95LCL7BuezD3Nt3B4TzrgiBUEqx/+rmiV1eVjDOKhPLylJxSOvzVuK+9Tz3KchZfKzL/vQ0UcB15TZwS0I7NLvu2do3HyQtzhouGpMt4kcwUPrvL80f3hWv/V5V8IvE7M6Q9UTi+0h3SyT8mlV5l+sBKGvCqVQb+mSC3/zuA4JfH0/x6SPXH2KA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:06 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:06 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson , Mingkai Hu , Priyanka Jain , Rajesh Bhagat Subject: [PATCH v3 02/29] nxp: ls1046ardb: Convert README to rST Date: Tue, 22 Mar 2022 16:59:10 -0400 Message-Id: <20220322205938.1721846-3-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2890a55a-0bd4-4b78-f646-08da0c46f12a X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +9dOv5KOu196YYWuI5Eiw5o1KWYw09jo2Rxb/9Yjy/G7ez2lDXOVMe6Zxs68DQ4yH6GiYsHCerQGERJsUXgHr0pW98X+mk0TWMOJOCWTMc9MU6CXQjwM0LYmgvEyVWoD/EQHQ/Nx/CsvH19e4pJyT5IeLQKR8zVofLHIMef6uo5RIsU7o9O7dTO4YwfEA9a7K2YpLL3jKVScr91IYZ2mYcAzFvQ2wtyWlxqjv2wkIYkxRwKnweMAVXS5PEaAckh0Gl2FNTMxqa6Hi9sEHLhv/IqwiFsx0zDoQRBlDl2SK6//w2T3hkkMboxQIOo5wC3bpd4IxZx1kkzSXVTUO1Ur5uUUNOMgtjJMUhVxFZuCTToGxJqdyxW9Gunv0bRhnBVCyaK8jmmFO/wFQUeJOLFxxXRUdhlYYkNc4Jekq8xDLUrlHjmgOxdaHhYele4RcRiO83ovvlZ4VEQiUPlwkEUWBmjcocAGrZ4k1MfKxWaiubGvAkdGaT2MQEGbITL3VPLT6RAjTSZpwi3sS+7DvJkUEM2PlkhcCwejxexH0vay4rfLBvN/6xfgadySKLgObsWpDgFg57zm5OKUqUdW4TI39SgLML3T04uKA8FVrxH1iDWs09XvDY5drf8dnAOPe6vvaGJVd42tF8wrHSNkE9k1woemWt6VWfBVzia1nmQPwj2NCajQA1P92/zf9opEdFncP7UW6FSGh+l8Ll7lexvGFw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(2906002)(508600001)(66946007)(83380400001)(6486002)(8676002)(66556008)(66476007)(4326008)(1076003)(5660300002)(2616005)(8936002)(54906003)(6666004)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(6512007)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: jCv/OMXTTIsx33PPsYzi0hwWymFJDTWdk4k5pRR1d99VbCdYjXViD7YoxzCtEs3ObS1itheR6va8rAfiEPTDeWgXJ/901+y9wJ2ZRF112KICBcONR4aR0cpstDehV6NHOUAM9J/C5FBht8aTer2FKnp7MD+Js9qp7ldjPLJeHgfa1u5W4HcxAysZbMPMkrOqNf9OiuZf/A+llkWPXzX0Nk9YzrLIrk6R0Bf8my3/uQ118xrrJKcvmWSclsaZ2Vl+t1ektF+1s2EQIaijEB78P2aIGN6PA7iFah24VteK+tUD9EwIbtI+hAdt8XdMRo6jKdOkISTp9C16mX/G5zjPxdeXhuF13Yr1Z/4nFQvbAzDBbhz08wGnUv1/iAC2nwXUet9jzsZ3WYni5NzUMpRzT8OEUrc/RckBkZV+i10z1nhjTv5hqbSQOc2hghaWwl6idR9tLEe4ZYdL5ui3680gCVRJ+1wPPecev9a2Yx4sdXrAxg+qMIoR0vxLFGKmvzhgHZFiZw6cy3ucb4B2QzJZjFda4Q6k9MA+WEHTL2nrxEv1HPckwwmKpedJKt7U72I4DN0jBnOg+Zbq4zAwYf9JS3sKRfhaSf5wmF94tZaQQ9wpH1t6iH472UUfdmrJ9jwZykqb/udS8Uu/cblXJPxQiysfthKTij2gyBLh8q6sdw9rfZkc2xOR8kBa/18hr1LYtZYgUIyzVAvUzc17T9kV8gCwShKCQsVqHdAtj4181Pz+FC7iNYUSjGvPgJVYGWrp5IfM53MJ8aKNinCsZElOkjv/XY13z1KuZZRg/0NSEl3yVN2XhrbM5ahsgn6gVbc+MOMZSXdbGXpZyu7pK1VA9KSW4l7sCtPl+qXfGsNGX6Y7C5Yy2OAcs8iTtmXGuPRAVxSVOdqbu+X3A8ZCLzFzP7hmbRyC0D8yWFquCqbR9TJz4Xw2UrHGN4K9Q92rtFpFVnaml9uAKEBvWBJH3X5Sms0GPSDKO9fyenqkREM0gZoe/T3flkHDESakOkKqA/gIvC+ihzaN3D7j5zNFk5LTql45wGG2Vcsuw00l3p5A5gNLnXgNxwG0m0pUT7diQC3xJ0zqAA5V/8ZH82GyaTzX3Wk6Hlhwl/gDJ+8DnjosK6RebijfH95V+CH1esY85/+46+bLHrOy1ABxp+kPDoB70fCiG9DGePKNKmu11WefAVb+p+y2xyWqLPQVYI70yVBs7JcsHVvmAeW3Bzq4EaLcRrVGUJRlIk9wnBM4brlm4inDJB51JScYiwmOJrfMkX+XW1fyNN35ql4Q/SNz2kOyQ9aLlhFXXCFSH2Nl6T9lG0hCqcb/OFH7sS0mTGhopVCCF75LPIlvcAQkw0Fe9khev5wVeGURGa/9NfsLEz2vQmoylAzUABEn5iKnCbW1x3Z884ZwdBkZrxiSsXTSbmoXnz+H3HQMMRclR5uHvVlvcp1lsVM5+J2Llzknd97Rooyp9ZNrIbBHnvjozjU6QMbn9g== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2890a55a-0bd4-4b78-f646-08da0c46f12a X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:06.1121 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: uooDL1NQa2e2nTIR6gFwbEktJ9qPWQd/kZYD1wH2toyUGwpK1qPLkw3sqTSwBnr2mw8ZJA6gUWpg0fyrUOtgPQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This converts the readme for this board to rST. I have tried not to change any semantics from the original (though I did convert MB to M). Signed-off-by: Sean Anderson --- (no changes since v1) board/freescale/ls1046ardb/MAINTAINERS | 1 + board/freescale/ls1046ardb/README | 76 ------------------- doc/board/nxp/index.rst | 1 + doc/board/nxp/ls1046ardb.rst | 100 +++++++++++++++++++++++++ 4 files changed, 102 insertions(+), 76 deletions(-) delete mode 100644 board/freescale/ls1046ardb/README create mode 100644 doc/board/nxp/ls1046ardb.rst diff --git a/board/freescale/ls1046ardb/MAINTAINERS b/board/freescale/ls1046ardb/MAINTAINERS index efdea22bde..3c8cfe720d 100644 --- a/board/freescale/ls1046ardb/MAINTAINERS +++ b/board/freescale/ls1046ardb/MAINTAINERS @@ -14,3 +14,4 @@ F: configs/ls1046ardb_tfa_SECURE_BOOT_defconfig F: configs/ls1046ardb_SECURE_BOOT_defconfig F: configs/ls1046ardb_sdcard_SECURE_BOOT_defconfig F: configs/ls1046ardb_qspi_SECURE_BOOT_defconfig +F: doc/board/nxp/ls1046ardb.rst diff --git a/board/freescale/ls1046ardb/README b/board/freescale/ls1046ardb/README deleted file mode 100644 index 90c44f4bce..0000000000 --- a/board/freescale/ls1046ardb/README +++ /dev/null @@ -1,76 +0,0 @@ -Overview --------- -The LS1046A Reference Design Board (RDB) is a high-performance computing, -evaluation, and development platform that supports the QorIQ LS1046A -LayerScape Architecture processor. The LS1046ARDB provides SW development -platform for the Freescale LS1046A processor series, with a complete -debugging environment. The LS1046A RDB is lead-free and RoHS-compliant. - -LS1046A SoC Overview --------------------- -Please refer arch/arm/cpu/armv8/fsl-layerscape/doc/README.soc for LS1046A -SoC overview. - - LS1046ARDB board Overview - ----------------------- - - SERDES1 Connections, 4 lanes supporting: - - Lane0: 10GBase-R with x1 RJ45 connector - - Lane1: 10GBase-R Cage - - Lane2: SGMII.5 - - Lane3: SGMII.6 - - SERDES2 Connections, 4 lanes supporting: - - Lane0: PCIe1 with miniPCIe slot - - Lane1: PCIe2 with PCIe x2 slot - - Lane2: PCIe3 with PCIe x4 slot - - Lane3: SATA - - DDR Controller - - 8GB 64bits DDR4 SDRAM. Support rates of up to 2133MT/s - -IFC/Local Bus - - One 512 MB NAND flash with ECC support - - CPLD connection - - USB 3.0 - - one Type A port, one Micro-AB port - - SDHC: connects directly to a full SD/MMC slot - - DSPI: 64 MB high-speed flash Memory for boot code and storage (up to 108MHz) - - 4 I2C controllers - - UART - - Two 4-pin serial ports at up to 115.2 Kbit/s - - Two DB9 D-Type connectors supporting one Serial port each - - ARM JTAG support - -Memory map from core's view ----------------------------- -Start Address End Address Description Size -0x00_0000_0000 - 0x00_000F_FFFF Secure Boot ROM 1MB -0x00_0100_0000 - 0x00_0FFF_FFFF CCSRBAR 240MB -0x00_1000_0000 - 0x00_1000_FFFF OCRAM0 64KB -0x00_1001_0000 - 0x00_1001_FFFF OCRAM1 64KB -0x00_2000_0000 - 0x00_20FF_FFFF DCSR 16MB -0x00_7E80_0000 - 0x00_7E80_FFFF IFC - NAND Flash 64KB -0x00_7FB0_0000 - 0x00_7FB0_0FFF IFC - CPLD 4KB -0x00_8000_0000 - 0x00_FFFF_FFFF DRAM1 2GB -0x05_0000_0000 - 0x05_07FF_FFFF QMAN S/W Portal 128M -0x05_0800_0000 - 0x05_0FFF_FFFF BMAN S/W Portal 128M -0x08_8000_0000 - 0x09_FFFF_FFFF DRAM2 6GB -0x40_0000_0000 - 0x47_FFFF_FFFF PCI Express1 32G -0x48_0000_0000 - 0x4F_FFFF_FFFF PCI Express2 32G -0x50_0000_0000 - 0x57_FFFF_FFFF PCI Express3 32G - -QSPI flash map: -Start Address End Address Description Size -0x00_4000_0000 - 0x00_400F_FFFF RCW + PBI 1MB -0x00_4010_0000 - 0x00_402F_FFFF U-Boot 2MB -0x00_4030_0000 - 0x00_403F_FFFF U-Boot Env 1MB -0x00_4040_0000 - 0x00_405F_FFFF PPA 2MB -0x00_4060_0000 - 0x00_408F_FFFF Secure boot header - + bootscript 3MB -0x00_4090_0000 - 0x00_4093_FFFF FMan ucode 256KB -0x00_4094_0000 - 0x00_4097_FFFF QE/uQE firmware 256KB -0x00_4098_0000 - 0x00_40FF_FFFF Reserved 6MB -0x00_4100_0000 - 0x00_43FF_FFFF FIT Image 48MB - -Booting Options ---------------- -a) QSPI boot -b) SD boot -c) eMMC boot diff --git a/doc/board/nxp/index.rst b/doc/board/nxp/index.rst index 63956287c5..4514b8951b 100644 --- a/doc/board/nxp/index.rst +++ b/doc/board/nxp/index.rst @@ -13,6 +13,7 @@ NXP Semiconductors imx8qxp_mek imxrt1020-evk imxrt1050-evk + ls1046ardb mx6sabreauto mx6sabresd mx6ul_14x14_evk diff --git a/doc/board/nxp/ls1046ardb.rst b/doc/board/nxp/ls1046ardb.rst new file mode 100644 index 0000000000..4bfeaa93dd --- /dev/null +++ b/doc/board/nxp/ls1046ardb.rst @@ -0,0 +1,100 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +LS1046ARDB +========== + +The LS1046A Reference Design Board (RDB) is a high-performance computing, +evaluation, and development platform that supports the QorIQ LS1046A +LayerScape Architecture processor. The LS1046ARDB provides SW development +platform for the Freescale LS1046A processor series, with a complete +debugging environment. The LS1046A RDB is lead-free and RoHS-compliant. + +LS1046A SoC Overview +-------------------- +Please refer arch/arm/cpu/armv8/fsl-layerscape/doc/README.soc for LS1046A +SoC overview. + +LS1046ARDB board Overview +------------------------- +- SERDES1 Connections, 4 lanes supporting: + + - Lane0: 10GBase-R with x1 RJ45 connector + - Lane1: 10GBase-R Cage + - Lane2: SGMII.5 + - Lane3: SGMII.6 + +- SERDES2 Connections, 4 lanes supporting: + + - Lane0: PCIe1 with miniPCIe slot + - Lane1: PCIe2 with PCIe x2 slot + - Lane2: PCIe3 with PCIe x4 slot + - Lane3: SATA + +- DDR Controller + + - 8GB 64bits DDR4 SDRAM. Support rates of up to 2133MT/s + +- IFC/Local Bus + + - One 512 MB NAND flash with ECC support + - CPLD connection + +- USB 3.0 + + - one Type A port, one Micro-AB port + +- SDHC: connects directly to a full SD/MMC slot +- DSPI: 64 MB high-speed flash Memory for boot code and storage (up to 108MHz) +- 4 I2C controllers +- UART + + - Two 4-pin serial ports at up to 115.2 Kbit/s + - Two DB9 D-Type connectors supporting one Serial port each + +- ARM JTAG support + +Memory map from core's view +---------------------------- + +================== ================== ================ ===== +Start Address End Address Description Size +================== ================== ================ ===== +``0x00_0000_0000`` ``0x00_000F_FFFF`` Secure Boot ROM 1M +``0x00_0100_0000`` ``0x00_0FFF_FFFF`` CCSRBAR 240M +``0x00_1000_0000`` ``0x00_1000_FFFF`` OCRAM0 64K +``0x00_1001_0000`` ``0x00_1001_FFFF`` OCRAM1 64K +``0x00_2000_0000`` ``0x00_20FF_FFFF`` DCSR 16M +``0x00_7E80_0000`` ``0x00_7E80_FFFF`` IFC - NAND Flash 64K +``0x00_7FB0_0000`` ``0x00_7FB0_0FFF`` IFC - CPLD 4K +``0x00_8000_0000`` ``0x00_FFFF_FFFF`` DRAM1 2G +``0x05_0000_0000`` ``0x05_07FF_FFFF`` QMAN S/W Portal 128M +``0x05_0800_0000`` ``0x05_0FFF_FFFF`` BMAN S/W Portal 128M +``0x08_8000_0000`` ``0x09_FFFF_FFFF`` DRAM2 6G +``0x40_0000_0000`` ``0x47_FFFF_FFFF`` PCI Express1 32G +``0x48_0000_0000`` ``0x4F_FFFF_FFFF`` PCI Express2 32G +``0x50_0000_0000`` ``0x57_FFFF_FFFF`` PCI Express3 32G +================== ================== ================ ===== + +QSPI flash map +-------------- + +================== ================== ================== ===== +Start Address End Address Description Size +================== ================== ================== ===== +``0x00_4000_0000`` ``0x00_400F_FFFF`` RCW + PBI 1M +``0x00_4010_0000`` ``0x00_402F_FFFF`` U-Boot 2M +``0x00_4030_0000`` ``0x00_403F_FFFF`` U-Boot Env 1M +``0x00_4040_0000`` ``0x00_405F_FFFF`` PPA 2M +``0x00_4060_0000`` ``0x00_408F_FFFF`` Secure boot header 3M + + bootscript +``0x00_4090_0000`` ``0x00_4093_FFFF`` FMan ucode 256K +``0x00_4094_0000`` ``0x00_4097_FFFF`` QE/uQE firmware 256K +``0x00_4098_0000`` ``0x00_40FF_FFFF`` Reserved 6M +``0x00_4100_0000`` ``0x00_43FF_FFFF`` FIT Image 48M +================== ================== ================== ===== + +Booting Options +--------------- +- QSPI boot +- SD boot +- eMMC boot From patchwork Tue Mar 22 20:59:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608342 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=lz2IURN3; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP5j5JXdz9s1l for ; Wed, 23 Mar 2022 08:00:41 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id AFCFC83BA3; Tue, 22 Mar 2022 22:00:38 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="lz2IURN3"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 66C2883BCF; Tue, 22 Mar 2022 22:00:17 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on062c.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::62c]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 29C2A83BB6 for ; Tue, 22 Mar 2022 22:00:09 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FZzM47DxGBxYfUrcRn5ztbQsXJJtiXbVBeCfacqnli/yA7raalcAWwQ9NoyFwybJAEPQ7y0F2/w0OE77yQMEv+saBoIMN0IJHuOQCKsSFuPjvFmpjO5Fe2g42SMPqxfbWUM80r0AApAlNng4aZpn2oApkBl8xg2os4wmAUDsE2tIuDmCjxR6O+Wrm6NZSuOgAPh8y4ohVOEqrP3PzMwUh+mhTpDb7EMS6ZCGGWIFs7Ul5ztnbFkDQEDBKUzLGLDnGH83FCsm9pkm+W82ulOsxCHdgzbd716oIR39kDamqcpUIC20NB+rSjGoOdhWAcbhW4pwAF8Yue+VuMD1dTUOfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=eOfNcMTs6a6yyePRE4uk1mNyFmvXS/HB6za7Ivwr+kc=; b=R8OByMxSRb8cH/5Cu/TVUXkc+5ouu5Te70tof0cIEji/JBvyt3FaJopx5LwSNsKCSaZwbC2r5KcUOr7F2D7UFCQWo5Ho69fees7Ew0ZznCZB6JK5nXLRkDZEJn+gKwC1BSrk7m2I3u23Ps8Ym7WzTXCEzl6w6pRA0BstsGIs1uyMswcF3WcRzQRY5jeHGeJXKajwkxGRwMBsid3V4aJzhEyWwDBgfz7quf1SOyRKv733heNbtLtfMXxZRKIQw1aLqH6geXcD1WVMvzQn/E61Mu+ieAN2NF7Sw98rEALJQ5BqksnAKawzzQTkDFpecVbcb0GEsOrf+gCzKfwPh5gwXw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eOfNcMTs6a6yyePRE4uk1mNyFmvXS/HB6za7Ivwr+kc=; b=lz2IURN3u0mAnup7dpYmuVhX6CeIjQUKR8QBMxo8YrpJkbaNkKFXggArYQfmJADwfJ1ciA7M6aawjWfaAp7GfE2r9FxTmn8Yaw1V34/1ExCa4x9vTvYvdIMCYMP+6F4/mQlpfHKr/cHJH/DiRzgEdn/pvdK/uaNtbIpd1qD1gkEomSJDMNsF+Tetvqo22GsVBGuDDMsimpzGdG7Hanz1T3LiYeIaoOF09lpcVVnVCaurbRgrTOXl3dnqvCT16f+3vkJZjTNUgztvHiCFDfIVczwGvZc2MEE1fefjd6JDVnojxjqynfFqwnUTiVd/1XhaYwwntNmUQJ/GVlEJ7AtGDA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:07 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:07 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson , Mingkai Hu , Priyanka Jain , Rajesh Bhagat Subject: [PATCH v3 03/29] doc: ls1046ardb: Expand boot mode section Date: Tue, 22 Mar 2022 16:59:11 -0400 Message-Id: <20220322205938.1721846-4-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b0aef36e-cd0a-47c3-d415-08da0c46f20f X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RTE8THk7qI271doeQVOyahbLJVMgcArTK65d1YiCSH7jf3CalSCsOYj+90ukjMataarezO1MllQ3oB2a6o82ld3IAnzuB2HS2BIb/PdzS5nBFZNlv+/j6ojIXlSRFGFmg5MPwhLfj6eIyvN18GwgLGTp01jf7ZtfpN/oDFRZnc+UWg/CAK3itnqi/LaygytZIslmueConzom3Cv6PbuDa3oXVFBfLFXs3Juguh/eE+yx3Cv7esfBrPN+ftBJ0+t693n3B/WgAG7NVpCfkzuQTmyx3B6b15ysvyGsqFHFFQfbevHCpz58uqhTJmDOL0Z5ocuH/+/vEu/FFYEqnBtG++Adz2MpljhbeGVUmBuA0gGnhefrMIvls+1wBYsN491mOOmUg2Vgg/3VZP5hiUEmmEgqFa8My76MSgdMzhqRHMMIUSQ77oFSaYqe2pY5/k3pUkAxCPNZMAz1EjVyDaqEwW8OsMC9T3vW+/v5B4g939H8k1mnDkp3aadYhtm/ddHs1y/1ObQoLpD+1mEcw5nkQWkM8zdPSDqI1MiX1WmNariOfCm/hAJ2exNk6MMsLMjCMkZQajMppkTgW9f+5XRzQSxh03S6oXiIwmnq/poqVvotWRYfo4r4cMy80ORlIcR0dYUmPcKLfKYBj3fKv9vYGGSV5WMgSLHy8Y48vAypvjzkLdE5quj6cq1x2J21pWlI7V7RtwCQ+6T9XgHAgbMaHQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(2906002)(508600001)(66946007)(83380400001)(6486002)(8676002)(66556008)(66476007)(4326008)(1076003)(5660300002)(2616005)(8936002)(54906003)(4744005)(6666004)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(6512007)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: SGDKh7btfz4laVH0aRudXVo+gtWJOsltD/nihAqbNGX3dYRaeEC2LwUTzwDO18ITQe4FrDEhIvWka8fmtfQZqZX/XMIQuOrnNagJvTJg7YndCsR4YKQJ2F4kgf0Xw3u3VA8PPAKIh3QKWdZV0wYeou+GNRN8Fh+loQG9yjtK8kd1f38AYz6O9BsK+Hsb9akm93X89xHByAz1fMS91M8t5ABURlwAfYp361LgsFEYZLzVNTbXxXEMNxybS3IXkL43lfOyX8GsXdpsUtIqWXitMMV7E8lUmfqm/8b4J9Zq3Ara+ISAS5WVPMmpbjI7s94mkTD77BT6ewiR2Gje1NcA9IA1eSyqwxy+LVzdEzAKzUps76vfmp2dWhIoFM0YOjGs1TWdi0CRepelTqVPpQ/u/n5xcv9yxrE4bBdY6ioA1wCciF9NtQ5s5lwCDwqnBLmSlrtlG6hU6Pox7Hc2DVYF0ljKXeQHlnuucx241PI8Zz8hBG2lyrGfvBu+L2CtkRWbPLz787CkYC1IAxT4vfNlibVuawEq28NkgSgBLhbjPWGPQEjrOQeXZN1e8upD3VpkN9FuSwsGr+7+xtyVXAxtQmNVwBD6LMXmXGAvv/SkCTg66seHD5zXEMaa0E9Ewzcz3i2QYbSONLMGE5ohIL7okXLYxJdKv+lOyomcOQVuQxpWHAVp73lf0XuRM0YVtLx5bZ5/J5HmhBH7NzylYn6X+oGjfX5VmC8e0r2mDfYXtn9HDx2f2PCNtIM/wIFNxO9t9+sA+zj2nlQEJWq7eaGbFdZx+J0K/yt5uhvDVTrn8U9qvl6ilPCO+vF1BziroFk6lVdTWIu20CCVAZSe9z9P0IlkR6o8NY/F06Ax1Ej8hYtNBei70eTh5ctLYPAGwxwRAM82IES/Yy4Gm932Ywbx8LK2+6/AApCH6jChmeDvfLnGW+C/x2/o8VMjFEWfOsBLGenphBKRpQsexoIMgwFKMgGBMn+rrmxFia74AjSEbWI5lrJp2wIiGF5xN1kGaiDcl8xDTlTLVk7r+eqd5RWAizg/KIZiESuch6lYP74WnN/XsbRiDaX3/ORzVQiZghiuwXUlx0rCu+yH7Chel72DC1EzBHWSuEV7wsn4+D8VW+4qWgXQfQ6gPuwS+A0/DZn0iXtEa90VcAwCAdLAvcZBMwqoTrTHXda1BH4vPM8ReoRrrJDbbXvegOazIDP2TycBVZ8chdwGGBMorhXG3e1gU4S1jPb69rdYIFFMghddINdaPAY/tIuPbwm+7VMQP8cIaDLqqp4Brx22ngj6F4k3fXd58yR6R5QuQPW696Nja8cMG2SAWH4LmkP7A47XTMXCnATJV6eSxm2P3zTLcmUTyi+L6IUBGLxFYkbp8qpHklmLuALPB4LJUMOS66igqY+6kjPjwxHB8UdfYllxHjoJwluhljq0wIBC9s1L8csMQNaSngLPh9HRAQSErsLUEuQiBzUiEbSEgYZU5rrsUfzQfw== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: b0aef36e-cd0a-47c3-d415-08da0c46f20f X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:07.6745 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: GSx7qpDkx9+K8/V1MatrdnFcqBCCwyJRGGxq00OXLD7y08XqlIRjjqTsM6EfxzB72jx3QbOrL+RmP9WnpiJa/Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This adds some additional info about booting from different sources, including the correct switch positions. Signed-off-by: Sean Anderson --- (no changes since v1) doc/board/nxp/ls1046ardb.rst | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/doc/board/nxp/ls1046ardb.rst b/doc/board/nxp/ls1046ardb.rst index 4bfeaa93dd..c73516c070 100644 --- a/doc/board/nxp/ls1046ardb.rst +++ b/doc/board/nxp/ls1046ardb.rst @@ -95,6 +95,17 @@ Start Address End Address Description Size Booting Options --------------- -- QSPI boot -- SD boot -- eMMC boot + +NB: The reference manual documents the RCW source with the *least-significant +bit first*. + +QSPI boot +^^^^^^^^^ + +This is the default. ``{ SW5[0:8], SW4[0] }`` should be ``0010_0010_0``. + +SD boot and eMMC boot +^^^^^^^^^^^^^^^^^^^^^ + +``{ SW5[0:8], SW4[0] }`` should be ``0010_0000_0``. eMMC is selected only if +there is no SD card in the slot. From patchwork Tue Mar 22 20:59:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608345 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=fQW+NnSC; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP6N2DXcz9s1l for ; Wed, 23 Mar 2022 08:01:16 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 1345083C97; Tue, 22 Mar 2022 22:00:58 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="fQW+NnSC"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 955AB83B44; Tue, 22 Mar 2022 22:00:26 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on062e.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::62e]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id C526583BC0 for ; Tue, 22 Mar 2022 22:00:09 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OQkSn5UGZQG9urswRTN5HGYMwDOETUhLX0KmuPFDkrbys3qC0ABuatLGg4KhLw00iR5/hvn84ht4MCurd9vWBI6EHqkgj21Fb6jLu1pBroXkn1P8sWQNfH9G8BVgg+f6P8EepXa1XPv6vq0ZCbWkMOdlymrjj8srIpNLRFSxSXqrPeJiMArmVlQ3oyhiAfzner5JMJ2vqLDPk25zi47mH0875R5+Bo8z8niL9AkSiSWC9l/ls0Y/WxKEQOhYNU5etsPMSiAXm7Mi435t9GDIVuBb0egC0Lg5WHFs1hTUwetWl9fSh2/AKL1nTB2Me3RRYWQUXJqItPsFS9+6xz0nyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KexIezXWeXleTxWg+PwYGD2tIzSeX8o3FWlYF4xClOA=; b=EXLAfk2nI796iXnE5d4r+r/u2oANS9Duq4uB1Md+3D0MHwyja8Jz1K4qBxxc+9YqGlMlXYlwL9pk9xRLaCAu0nWx5o0e7N/by7iKHHzRWnhhSTk3ZgFkUdRwRB/CkwV62vzFX0nWNqXlNUDDC7wC4xkzog/z4Y1vvZFDWI8EAK86ZPiyTL1ntFr431sz253RvU6ocBW02FeryPj08QEtGGQjMv6O6tSWt7ZFeXSxT4RV16jC4lzAO/9X7MJkRjpxJviA4m8nIVFCEUm3G4lWGIb+1I3bjV3lFx9rme5ZBILrj0Rb/oemCow3b+YMeg4rkiaLJP6GyGWvUKMbMQn+mA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KexIezXWeXleTxWg+PwYGD2tIzSeX8o3FWlYF4xClOA=; b=fQW+NnSCKq74TmlM7oYmJSH4074cuZ0tRfXp38dipoGILvmqHVN5b5TcH7xhuNgtvul/H3l9bESdrjC6oxAi16Ye2IDhUXWdUAyfybJkDDIz2LJnfq+shn2oa2meuN7xJhVbpOnTgsUsKTErdU77CvT04ec4Gg4PFXUn9nnlKhDfADoP0HVXbNPG8NJb2a3iZQhWVjmIeCz7tmPzIT0WhYwp9JKfobAuH4lFyRNGur6phFxz0XPhjWMY/XR2pUQl2F4h+KvMjhZxrMLrZE6FU1B/GrkCvIC5PnN6Mn8mQElP3+6owsK3Q2+avJn8B3qDaQf4dmaZCXsKfArlxqKhdA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:09 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:09 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 04/29] doc: ls1046ardb: Document debug uart Date: Tue, 22 Mar 2022 16:59:12 -0400 Message-Id: <20220322205938.1721846-5-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 12fbdd2c-5e0f-44a8-ef44-08da0c46f2d0 X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cLoTQo0jP558/TCKe7adhfDe/CTimDN14IRx4z8OrFFfnazKIHEDJwoxRExydqcgSFuYY/zjosz4cZoBQ9TtefEn4GKl8+2o4RpKpahGC8oRdfTWzWbh0coI661xF6jWYpNNo/9TVyTs9thUo9GUwCJGBBUqJlYfXtAmxJQeEY8IRGXc26T3ZKhvUe/FPH9Wb36WFpGys9g2AiF0I2OYL00Fdbb6egcjywfDiu6SsqconSWvraKrQ+r7DaeYuo/shcQKUPBZ72k7tzDU7EfwDmT7hUunWDdQ7QCxEyf4s0fvlU7DuMqHPO7u3YYV10tLON1aQbb9fTSYYqurgboPaPi5UTUo55x3wZMDvj6lo3OISMF3LfRzcBs7D9bWtZm/9sqfk+wWozqBB8Fq+athbN19U7cCNrfhQgrR9tudgQ2VsSiQf0r1DGTgQlC14hGB2V9N8uzcKfLpErFzayXcJlzxhWj/1k5hhOJOrW3mehU0c/2+EHKM9BaugcQIwPB8pPAp78UuExApfL2ktiXAQ4xO3xDNYUutTdu3zoAMdH4sJqSwWkSps36JfYth75cPT1HHYWfUbm1nIVbYSimksGToHDAomtkVzwYIHtf2IlgASMt2emYtTbLh/puy9s/8XjL9RYoMBgLfcSUeAErnaW7ADm6rDfUfqrRuqrmKFETBpzfToRGDy9XzXybQd495M1yqM7eO9baVbYiFYe9J9A== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(2906002)(508600001)(66946007)(83380400001)(6486002)(8676002)(66556008)(66476007)(107886003)(4326008)(1076003)(5660300002)(2616005)(8936002)(54906003)(4744005)(6666004)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(6512007)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: hoegqYkYRzbPI/dXRm2YnjBlniF5gAMkVugYA5se5mi7z/wA52YjmH4WFI972QiiHR9S+W+kaUewCxT9q14Wj7JGbfE7gv2pVs/QLZduyzo6o4uG+8asJITKrJBDiy7XmHZucVTPDGjiXqPkkOA8MxfCGxsHP0tqQ1mawxhF4z1R2uYPReTzX4dFLVxTDzEU9H+wF/YHG7xzhZi/g58AxUIUMRTbl/f15WDQkVHoIzA1GSAwh32LUd71MMt0z/oFtuB5Lkl2SqCwhHytf78nK/4NZ+XQswTUKVMr3DdetliXhFOLu6MHOv6ywE4dwZdBSIlb+HODFuV2SJhxliK7uOZg/pQHA+auRpOQ/dEZv/pESkC8loT7ODiPa+4OPJylhElRMI5McGXcC74On9mQbAGJL/5QUYjRqxNWi8XaEBYSX47RA7xoweD1N7oD4Us5rDWcoIvqGmmS+bn3tnlvpWxwpF6UJp4knuGuTMKKqzqJW0qwmD6q7sq+1pIN9jcy9UTChpTjKCQQz936TRbOOvZw1Mmwo3leiKQHJ7MpPc2BPrj607U5h8z4MVgsYkwOp2JNn9eqnMUYFlS4ARBtYRO3Oa9kFeaOxmn8EEBrHGxNnrWEbCQ0fBX+FAYEwd/vbVT56w6gnbtvO8QkoZvmZ5jMu7LIiHLVmu1fbBqmRzJp0JUpGgQYCQ3H+pgCIOgLrXatkNgKKEEtlmnjLkqcO7qGh1o4JVxbakLSMtwQNKN3lAkH8yLma0Nl9nPF3gPe7+5X/IiFn3JlfLpBNsgjyjXpB5GUDQixp7rVbn1aUjwH9K7Ka4avQ5yxO4rNNt+/kx+W/819vhLgzyE14nxrHvxKFZ/scoXLJFkJ+lbNOiAayYg0V7ecfir1JUSrkxdpuZJ/FS+5vFixtmTLjEyzFvN++ua1j+NNOMNyJ2raglzFtqHnu01/OwQfwWU5AHvs8PMLQlREWgSiCY+nkCrBzsuhyqWq1qU6TD5J9dynaLuzw8Jhb9unk6beaHgQYQ4VJsuJWuSZSjWpPEOcu/ra/NZgwNo4dUOE5TtBhRwOLeLuZDLldH47b4O6MoljL9j8TZriWmbovf/Fc3troRXtq8PQ/6zvtBd7Boqk144375slP3BUOWmNGpbSVDSMcq+EaCq3kQnpSZQut6+DBsp6wu8diptps++XxDGCzJYNCwW6TrbvNKrlmpUMS+Al4A4HETr14fw7nf/5qWdLBZ/TG3BJHigIDuWVE2PbafK2wiBct8aP/qbcsIUZg8PCWbEy1Apiu+SacS1kaK6yKsFMNoAJLb2CBF1hRF1b9FTruYWJbCEH7pWZuMuHhDIXTFPSElpwrMgd/ZyGIDLQIf9pd8f1dDZ1zs8tR9EMMIsFxilOQshKtZaOZTlcWzU5bMN9yYpi17JoECqvAG6b9X1xnivtLMYmZfDa8nqRobU3mZxyytH4EWwrUcPw6Xh9EdqbN79SNIZvCE/inDcDUBp2uQ== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 12fbdd2c-5e0f-44a8-ef44-08da0c46f2d0 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:08.9400 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: apjd0JOg5ijPF5sdc6yk6fUYgRvRP/1PxpdRKmR7NN9SmGX0yKjsLjnVAOJiH+FvnUlsYE3RKmkxLf1T/ZeXGA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This adds some instructions for enabling the debug uart, including the correct address and clock rate. Signed-off-by: Sean Anderson --- (no changes since v2) Changes in v2: - New doc/board/nxp/ls1046ardb.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/board/nxp/ls1046ardb.rst b/doc/board/nxp/ls1046ardb.rst index c73516c070..e4499a13fb 100644 --- a/doc/board/nxp/ls1046ardb.rst +++ b/doc/board/nxp/ls1046ardb.rst @@ -109,3 +109,12 @@ SD boot and eMMC boot ``{ SW5[0:8], SW4[0] }`` should be ``0010_0000_0``. eMMC is selected only if there is no SD card in the slot. + +Debug UART +---------- + +To enable the debug UART, enable the following config options:: + + CONFIG_DEBUG_UART_NS16550=y + CONFIG_DEBUG_UART_BASE=0x21c0500 + CONFIG_DEBUG_UART_CLOCK=300000000 From patchwork Tue Mar 22 20:59:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608346 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=zBdOHMZb; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP6n1XXTz9s1l for ; Wed, 23 Mar 2022 08:01:37 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 2173583CB1; Tue, 22 Mar 2022 22:01:17 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="zBdOHMZb"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 669E483B80; Tue, 22 Mar 2022 22:00:27 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0606.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::606]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 7174B83B9E for ; Tue, 22 Mar 2022 22:00:11 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Is3hcphL4AgxE6Pu3O7S+5ZGzrEvBqgJzHxHyUO5uwvnzP4UhYNaQXbc39BWj5W82gdMZTvPzOSUOUxrjEQXL45OS5rEeJHXo32kXlrVXVpynsKn2BWCWKWkVsR6PiwSPDU/i+4aj54eJFtFSjzKQHXnxkcjMAgNjuabgEb32POUNpJ67DQvWYNslRIW8xLFiYVYKG3Dg6ni+CAgosmTB1v4SOnM5bFmAIwBuC40ND58nmFniV3xaB2mec5pZDLar89+j7N3xpq1RgbccmSRNcQtlhUzI4lUk4/X68WOWL+76aXTx0rkToVsimVMyvWew3ZRi3dutY7C0vh8RDC6sw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NLO/ddfFgY9Dji4uzZjMzKoOGXvhVzzspjlKM/2bn10=; b=E/l/DTYTiwS4iXsFV4Vx0e6heDPmdv/plxHNqvLJ1H6Z41nsiJGt4Sun1ZNGEfYmOZVdTa99l9qHiV4sqKZ6Ws5TKAoGQPXyN1cARosaXiWkC13FUBGwigRWSstw5qQwMp23LkJc6cCPAKfj+4L4QUT2yJ/RKNyx8zWoGwGUQNvpxGWCR1C8fWAxmJydAVbj7XEICrs9xV0qIdmjM84whHvzIEPB3YdDtrXSPDmz1FVstNcvGDwwyDBB1jpFoNRlYZXQ20hGcWdR8U2Tx1Q/P7lVAJXUtqP69ZseLjil0XTavqqBt6HJQ6FMViRiAsLWjxhTvMr2gKE2qvwzY3lbLQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NLO/ddfFgY9Dji4uzZjMzKoOGXvhVzzspjlKM/2bn10=; b=zBdOHMZbvXomJnGEwk6Ui1/J8wmIX9gIwqdWZ3Nl+P1B6c1Hq13tbmmewjxw4G5bGUmaylWXPBmNmBmZKJKEt/lLo4ayu57did0JLLX+wVmoDJvBBtU/HkoESPnh71bYV5JHAnfnvVnP7DPB6TY28St6TYVRNiBWPRGUhR8BnaBjPpahzj88BoDwtyRNzzbgtK1gzO4Vc8668VKyWXFbTiCnxMegW50In0lzdG4489sV0Gz+G5Ure5+nq93nEWhXAAZQj6DZoh3roaa2jWIaQTxlgs9BCg7NW4TXMmcc1XBD0EPR4GKnZHVZ8Bh+0mHwNB9i+VYbsuPs/wMpUWKwHg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:10 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:10 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 05/29] arm: smh: Add semihosting entry to MAINTAINERS Date: Tue, 22 Mar 2022 16:59:13 -0400 Message-Id: <20220322205938.1721846-6-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 45318601-46d8-4eec-a80f-08da0c46f38f X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DDgEc7u2XCy9YRTr3MdM9mSZ+qxdWZ0I3od7lOREFzJuYCVaDFBoj2KWfUB7+9oiIpUSOsBF1OD3OgIuoT2jDY4rzMDGZNCRG1h3DhO9ocdINlw3OONAlar7vhvqHWp0KRbes1AZDj3/oaYykjUJaCFEHNbGNQIq8M1vDap6SefHPTIjmWYqjTmrOa+TU/dh7IlHy+YsEOAmPvLzJFnEu4j1WLOHGV2xoomRzMWWIm23cBlolPzhhsYcMC62ZxAmVRlQ9EZx+SERXiv0kGcmD4HDUeHqygvwJL4Uvkv/hgfuCffGiJ7om5pHrs+R02WntxDQVJVUdh3pKIephsPWDzk3me9TCbLt3tlJbrzmpd14KHe7otXQidFT7RUU3L/JZT07Svsc3G/G331Zz+coDsyAyrG7F6+Ly+gfqaKudSnnyTzjHKkx5u777oRKSj2tvMTDLyQitZBih+/PCMcnF1uHDFGTTzGJMR3MggZBPBVckQkPFHXp1NU2Xn2PyteDG2dV1D58pxgrWEZ6IYQXKy9XwfdGbtPkeQdVMqdteVeW7P4u623YSSlCm6M3JbLl2I33dAHYbeT6BBILEWy7rJs4ZWZkr/aZ9fpzItqJb83WTdAkNQ0drEoT+QFtQlNsPzufqHikiTtnOf8fLEIdldqQ+bj7IJ8tDpCRSq7/5bxhmeHnBnrOHW5q52GWbUYxd7dmbThPSY4Znzn1rthDkA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(2906002)(508600001)(66946007)(6486002)(8676002)(66556008)(66476007)(107886003)(4326008)(1076003)(5660300002)(2616005)(8936002)(54906003)(4744005)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(6512007)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: pQ+TlNXTxkNmGi1dN745X94G3HnXBtIvqOPYrQlGxsN35vB82JLQSm9M5+newqiDA9CKeqjm+If34lWZh5FCS+nE7i71gHyXk8M9ZrUA8A8zH38luIHJs8v6uCFNsu4frCOh8q6iyjymaPD8LQubZbSZ6pWBZsLfA+DunRqKf2xA6aQftjBMYATlCC+nF+lwc6ObERUloQkw9MN4f3518th+Q/UVuWTI1HmmC5Uy6tyrYcoN/CdNtYvkHCBugqgeUZl541GiOwE0Oz15UKrESCdSN7PI/U9fDK4xXyAjpwrd4HICtqqGd03RKS30AgxexYmfTfTr6i+ESnohWA77R5gqOqO7PQJrW5BkIhZBu0B/39OlYjv/Oh9TaldFMRfW03l2zT0IP2lwrWORbsD3ejeBgUXGxZE3Tpcqi19+F6nitkjpMeblsKkR4IkkxRozZC2jyoTkDtdSb1qIswsgK3vn8FgiTh1eyJEnR6Ny7KRH9t5YOZyPDtGmbT2WQuvFWtTzBhCfadgftjjfPuOOq/WompB9zm/IniUB3AKqgwe67hPQZjmzXro1+AbOd284b4CQreR70hnKcnr1fOHfl9gdAdrAT/+HNqVuSAxmAyAEsjaR2ReBOPw5LQgVYeBqnGscZ2bl3GV5mLGFW0cebfYD6NBE+y8/Te93FUwvze/9MoZN8TIQehDj2cP0r3xkiXKVxvs9DJGbu0o3EOODbPY3ceXH0by0NBmhRCaQthLk/o/7V6HPgqikN3xQ9GMDtkdWuD7frVHDuVjvwj4CeRKdib/BGbPxfonYUBHtzFvHklpDzM/uJbajbcxbt7oB90MdRMcl7Zv2zPTtYCQFvsz9kC/t6DBZN+r9O0wlk9XWcbaHpUU787BMRoCPX6qGTyZFArJDI2y90yUToG7e7FTrdeFuInm4yj3paEPzQ/NRmWgr4XNx9NiVmLLWpbJ7UeR0pkg5G4bdEGQ3t0hWAQSv+5pG1Ewa11ypiq0oTqERk8DIGzhYohtWhRrqf2amEjlCUu4uNuucbcYb5pTV0W9s9ckjDfB2zUU6U1c7pQ7S2bSRPA9OIEugrf8Uoiors1IO2yegsk08a1yDltLlo9qxOUDM+zNcQJUWM3QpAFaar+HC+ox8ovcvnxW/tbBc1pqRAQO+WwENcN9ThPo8kpN+VGY0IozP0V++Z3O8BBgyHpWHqC8uoxu0CD2wshZgFbZBHmxhfY0ClGMaqUljwfMnFTHrBmPOF8MFdS9EKQOh/hMMKbxJvlOycMdwoMx1VtwIdjP9bXwso3YEA0Ccp54kA+ve3/HEN/WKVaT0LYlEfNtvIeIXSD5YitoiAh0aFEUzp+RWiYKrONTJYNjTVsI76+RtyB+nk1xw6YO5bQSqw0bTDNFN6PQpekFTBO2LFoZrcMxOiNl/KYSgLZLBNw8In2RkpyavKu3MY0avSQj5pvqYkH0QxYje0X/h060bA9I/p+8Jm72Uh2RBHrB3ng== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 45318601-46d8-4eec-a80f-08da0c46f38f X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:10.1587 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: kwts0wQkiRTrVSrDWHM/OQGNGL7TltFT8y8WTH2U3Va5ZbTyvuwrRpZRbT+zjlWnLUb6q9b29WgFmzXHqLMToQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean These files are spread all over the tree, so just use a regex. Orphaned for now, since this is more of a "one-off" series. Though I'll be happy to review patches. Signed-off-by: Sean Anderson --- Liviu or Andre, perhaps you should be listed here as well? (no changes since v2) Changes in v2: - Add myself as a reviewer MAINTAINERS | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 126bb43231..3c9a275f16 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1169,6 +1169,11 @@ F: arch/sandbox/ F: doc/arch/sandbox.rst F: include/dt-bindings/*/sandbox*.h +SEMIHOSTING +R: Sean Anderson +S: Orphaned +N: semihosting + SETEXPR M: Roland Gaudig S: Maintained From patchwork Tue Mar 22 20:59:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608347 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=uEw2jHNZ; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP702ZR7z9s1l for ; Wed, 23 Mar 2022 08:01:48 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 91EB083CF3; Tue, 22 Mar 2022 22:01:21 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="uEw2jHNZ"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 7E8A983C19; Tue, 22 Mar 2022 22:00:30 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0619.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::619]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 6312383BBE for ; Tue, 22 Mar 2022 22:00:12 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Enpgi5WOi3+1E4c4IY+x+HgDoV9V7TDiOByOZKN4GnQu0IAT0UOjGN7xS5xsNXaUHWQHC24a/Lf9bxYHKzON78G6Fj04BgPjgiJXCf1UQkqAOr69aThFXaJQkNXRxugsvAxmAXajlCCuJDhRAeLWxqVrYm5nBtgMK4wyCEhbK9AXDrV29Pz9d5tBlR0PO0AWpCazrd6Iir+y1xHHs6ELpMmQ2HpI/JX54KlyydpsYo24EdEvduSqIB+E1ecqIvi2Tr6ILB5x+zlblKWNvjouhycATioRtmZO0bCAgcpCx4PQVj89SP5/cIWUJapXuprooiVGOq35u0pYBqc8picx7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=v5JBcgiuhxgZl/ZV+PxXYQ08kgGx1TzLsB5cePx7e5I=; b=CNf5w+CyUfM/KQFFTOc2HsG8+aADKEXOpEUKWyc4ZeuUmVSX0TdbyFUbznyKsugX3iMnIqyvSeRz5J4/YPcWDPn7azp5qolcLjtCu/SzFOwY1UMA+HZpWk/Vj+s4Emriw+2RroN3lMs0jWya/tdoHWZ6/eFNwX4fvxy/CjLcYgPF7x0ip4zzDJvzg8HvdbM6oZWonTHKI0EyRU6Yj/Qfu5iZX+HJV0EWWo7Q8Qv29NhA1faGtK0AtTRZIv0rTnsf5FCUZSk/N8Cx8wVWzUAU1RsmfgPji6axyO/Zjb533wgBwqt4bYixy/JQQ+SyMy+d8QAnMsUP1DsAD8K319kagQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=v5JBcgiuhxgZl/ZV+PxXYQ08kgGx1TzLsB5cePx7e5I=; b=uEw2jHNZ4eSmiI9Cvp3dKi5fl7ITFZZAR1bQ8jzXDevJNBsHZwFods5JPb07UFz5l25hnQT3sXEvZybshxCSxnYRsIO6gWyzTip1/39Y+57aajXkNX5SsjkkD90FbeAHrBqI1LPW8c9PvSlP4cJKGhvjluzV4Uv5KTT8HgC1dyvKHu2TBcrVUVObPAeecPuBLzh5YEQIWxxS0lhflQsIntecjmdTYKOav2cwV13KpGH5BwjUMjlmtQK2oUeIv64mgYviM5SE0xS943jXpVKcFGshQ9dBBi+pzb/JnBM11UD+mgErQmUm0w0xG1su7PKBZLJW2O/I5JXolbAH4X2/0w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:11 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:11 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 06/29] arm: smh: Export semihosting functions Date: Tue, 22 Mar 2022 16:59:14 -0400 Message-Id: <20220322205938.1721846-7-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ac4dcb2a-e952-4958-9c4e-08da0c46f449 X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RB3RdsAdJnv+Rg2W+Zlnz7uO/fJyr57LckaqHDobHPgZ2KvYrcw4B6S0u9557J7SS6kBZuL1BtsoTNLj/GmX7DrJ5XBzMiZMsmZMpMimkaJtRZYufYiovwl9h6LpbYVE8epAhbirjd4ygsY8L8cCNpbbQQAOXMRA1jleF4IODSfIAtPa5dM1wY5Zke0UpaVHZAZSem9rQY/SDoXRYp30YaU2yJbZEAywF1esz/nEL07ER+5UDcdFBL8XSMI34hkZjckMbi4o+BR9yO71baWe8MTbdqGNtqRgqp5N3sKvzl1T3cuDgodTwWNuueh63W0jL1dLNqc6E457Y9rxbGqN5NhWYUNiIbWzIUDyJRzWLL1iZtKdyILuv5RKPCY+p4AIUPIeJMoEpBvlduklI1/hHL+mZKEARA59M5wUqg9Lg8wrmDAAa93KqqLMuVs72zxgm26U2getuNke47nFDRdYTpOudEkT4sSqNh76eqqX4ZUPgRxdOLLOMcVmZcq8pB/5RAwMqhFOgJATpk9OBRLRTZp4E5Mf36LWeWheps8DkOL4sXzkT3X4I5XGMxmMiHa5kXWNtth2j7YzsVin9ZRAQkxFc6jTAsL/rnntKFAW+yoDvaWpDoLr3J6/vs61gwNrWTQkDdOLYXDDxo9hmEKgvJwdxzdeDJ/tsUxLqeETVKlFp7qS3S8Vs3YBQfO1KvuQo8MbQy+jBgjWPtUXa6sUmw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(2906002)(508600001)(66946007)(83380400001)(6486002)(8676002)(66556008)(66476007)(107886003)(4326008)(1076003)(5660300002)(2616005)(8936002)(54906003)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(6512007)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xzs+2cI3O2jFn5LAHut/VXMXI8Tw+uXSuD0X29oCkNUW7TMeV6gszWpkemWStA9JhFVHVMNGK2QpoA29UMd6WtMAh6Hsl2MD4wKpTDv3dxoMCqe3XeWdPna7rtm1dot2OJcgLoeXtcjzwYyYmgGucCeS6ZoqeRi0SvH16VqTW6nh+Ri/cF8V2PLiMs3oFVAf0Vj2McnA9MUkAj8Nw+o4GzlyIeluwDEJLr/aTDzStsPBzlc6P05twGTFCIEcurqWzsY0TLy5IS1zRuYfd0hKYPyHEfmIopaUgkq+MAJX9Fq/5/fmhgcQNP0MBfKI5aoR0a6CzrtUgi1+QJwLqYbA1K3SekZm4HMDz9apaNDVNmKX1oACPSo+k6oJWqVfRwiBlbVjqrRqJah3D3cM6XoCL79Z1NbmyCK1HIrE/41Chd6JPhu5haJy5J7OamENhnfi3bvCO5ibNCTUNXtn/drDKUtfPbUlbDjTb1UM0NgHbigfXqGpSVXMil8jiC62nje6E0kQhx7hzkMcsSld/rMqVrqKKIMjUZZjFqRGaLzUvnm39exOUm8MhXyf80j9VsCVYGEY6sfzerymTl4yFtDbCQ+FNPvymPd/UIVaK17SD+7kO+UTq8c2KMqZdbGDqHEb0RbxtgqUfJp+ZomOiiuXNw/wm/LPPLBmtrJz/CTAc/UyQAauohuL2HsoDYRQ4U8xrY8WPcVmHAxEWeZjj8s1r4O81eIkrVqZDojbcq2jCK9V1oUC1ezMSJ46+Hiej7UPZboqYx/uqQ0sqXij/0e4pK3kHBOUbC8KxXVeQuu6SYPNpjDPZLOyZkeBz7VzxVSnJvxT8L9U+5HM9xiV7N12XbXWA35aI+EEXvlEyUz+IbmVfMrb+lPD44areMRsNc6R2JblmmoJ4moG3dxeGgAf+vagG/zNz9ZGozyVPNr2Tc73t3UegSw+P7pHyHMnMNOoy6bfCIgwp7b71h3Aj/TSB+fNCDhxl0zikyysbzVm2LlOaP7ydoRiYBqMN3iYyixiMwJWuD/E0FG4oHAqqhhFyEfLxnB0/o8+8V7z09ljJ0aw4KLJT2/o6ESJ6jbsBUGVGkYZHMEuRtNjGd34yMT8512iIzJSWoCXpYANhYBJdGxTYkkM0a+fiMuDvd0lvcXn2Af9PVhsfavNFd0RBkfOIubhTCz9x7igfj9BueAGp0LgUafImKe/JcOBsvToNl5b49FYfSuYXqTDwYP0rf3I/8ArciWjeW2VZb2dbSbJCSoAtNzbDG/H0SE9LetSRFnQz7ItknHCngS1bG6vB+90Ih9YqS2YA1sFC4v/E5nl1hlUkPRjaFj976PTSMRZzseB90GtJO4CJrcBwWsPQK6oeAZxHrPsJbYo1z6d/m//K+OBvBYZPRCXIhhymN/s6k9V6RK16QePEO3+oqAjc+WQGOd4PFb1ubyLW5WQyIRt1NgwHakOOlKco//0o4NsHxHRGKRNHFUribYb3Oq8ss4+Hg== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: ac4dcb2a-e952-4958-9c4e-08da0c46f449 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:11.3461 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: I1WQUHUsQII+IzuK5TfwhULv1CwnTRjS2XLS/kcUmn3G+pKjPRv1caoIJIpVEhx8Ck19YeSm5s7kjGZAA7CXvg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This exports semihosting functions for use in other files. The header is in include/ and not arm/include/asm because I anticipate that RISC-V may want to add their own implementation at some point. smh_len_fd has been renamed to smh_flen to more closely match the semihosting spec. Signed-off-by: Sean Anderson --- (no changes since v1) arch/arm/lib/semihosting.c | 11 ++++++----- include/semihosting.h | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 include/semihosting.h diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c index 9fd82459b2..c38892fdd8 100644 --- a/arch/arm/lib/semihosting.c +++ b/arch/arm/lib/semihosting.c @@ -15,6 +15,7 @@ #include #include #include +#include #define SYSOPEN 0x01 #define SYSCLOSE 0x02 @@ -45,7 +46,7 @@ static noinline long smh_trap(unsigned int sysnum, void *addr) * Open a file on the host. Mode is "r" or "rb" currently. Returns a file * descriptor or -1 on error. */ -static long smh_open(const char *fname, char *modestr) +long smh_open(const char *fname, char *modestr) { long fd; unsigned long mode; @@ -84,7 +85,7 @@ static long smh_open(const char *fname, char *modestr) /* * Read 'len' bytes of file into 'memp'. Returns 0 on success, else failure */ -static long smh_read(long fd, void *memp, size_t len) +long smh_read(long fd, void *memp, size_t len) { long ret; struct smh_read_s { @@ -118,7 +119,7 @@ static long smh_read(long fd, void *memp, size_t len) /* * Close the file using the file descriptor */ -static long smh_close(long fd) +long smh_close(long fd) { long ret; @@ -134,7 +135,7 @@ static long smh_close(long fd) /* * Get the file length from the file descriptor */ -static long smh_len_fd(long fd) +long smh_flen(long fd) { long ret; @@ -158,7 +159,7 @@ static int smh_load_file(const char * const name, ulong load_addr, if (fd == -1) return -1; - len = smh_len_fd(fd); + len = smh_flen(fd); if (len < 0) { smh_close(fd); return -1; diff --git a/include/semihosting.h b/include/semihosting.h new file mode 100644 index 0000000000..3843863046 --- /dev/null +++ b/include/semihosting.h @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright (C) 2022 Sean Anderson + */ + +#ifndef _SEMIHOSTING_H +#define _SEMIHOSTING_H + +long smh_open(const char *fname, char *modestr); +long smh_read(long fd, void *memp, size_t len); +long smh_close(long fd); +long smh_flen(long fd); + +#endif /* _SEMIHOSTING_H */ From patchwork Tue Mar 22 20:59:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608349 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=WHHSr8E8; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP7N6GLjz9s1l for ; Wed, 23 Mar 2022 08:02:08 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id AD9DD83C8F; Tue, 22 Mar 2022 22:01:32 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="WHHSr8E8"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 4159583B80; Tue, 22 Mar 2022 22:00:31 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0618.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::618]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 8302383BC1 for ; Tue, 22 Mar 2022 22:00:13 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cpTk415T2CFVzAIyxdOKmZaHyEG7fpPA33u7uuSRedG3p7gvSqfxTuPMvSVRSTYYGOLt2Gv05nsSupQq2lZMG7arhVEh4n91lxuzzD2TaTJ62j9D6YrezGIJmrRLKWyb7XdVVB4cUi7WP8XSGMqxfNup4/ku7716qZdodkKQf6YVhtX13KV+SMDB3mZAtzG4GabyC1sL9BHzv6Wq7NyJ1oW39UcrYJn60VFIqiKq12Q/ABiQWKd/U698z09fL9FJ9cVvavtr1tOAirYvSyJ/mXIFENvPeoubkCFqL2hmJ6bnwbGZazs4DCyWII5SGkq/G87odyRSchAM+cM8qn2rgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1WeS8zdjL4b926M86705Co7VVPxe4lYx6P6gB0O9NFo=; b=W7zcE0iWygT7dbFDfPavu8E+GDrEqBKbOvNwcASS+d8rxeVuJ4UOAmzzj8/NjYgjZD+rKjQswo5r2ReQvtuUGEaerTaztgOYpkHC3kZx0vNb3LMzpN/YU5j3ZywrUXZ7+VrUW8BLd+25IRwAf1wgAbgE7VlMv8QL/8U8MgGiVPyOU5JQOlgXzmsBPYDY7n06TvdaW6abGtq+hf1sxp61eJgrTsdfTPiO37wWKNniJexD/Jny+w7iqqd8DxAFrS1VUG+EKvuChiyk7DsqaebfjffUc5aaOQym5aFQOUXgpEyB/s+8DbDICaTypKC3rn+njfbzmm/7pjFPiOzR/bM+YQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1WeS8zdjL4b926M86705Co7VVPxe4lYx6P6gB0O9NFo=; b=WHHSr8E8uBpkrTzjIPnboS/RoIrRTf6Vswd/STNde3H996iHr0E8I14ObZIy3NNwAeOzs2RJDN7mBzlVcUm2twnor48Ly+v1LE/iFIam5BB8mpwGnKcFsUcqa1o3HSFykXbVeiYJcIbJ/YS3kXQKx35zyDF2mLqU+EfhBC0ee+O06MYO/QNEe/00KxylSScA22Xhh5paCsScHUvhC/zRLCf16719XsSR723P16huTH4PQQDXrQg+TacEb9EVwnNAhzzmNR1G5voit1qcpOq12N5rorq9WT82qUERgUIJItZ+GczboTkEiMgY4et3jvfKd5XOKExvgtDLtxb3ovo9mg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:12 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:12 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 07/29] arm: smh: Use numeric modes for smh_open Date: Tue, 22 Mar 2022 16:59:15 -0400 Message-Id: <20220322205938.1721846-8-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c2f7534b-c73e-4bf9-2e2a-08da0c46f501 X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: anDNn75iAzktMyLaF35hPdOM/gb+ft/nAAN1/bUbCusvKOpQUjzFZ5mhrGK1Qf4EK8FQZninypRYrm/jfqwZkb3g0bJY+TDE02SqFowQfDGSWRxIknfp7NMHigc0TkXiX9/+b6UjUI8wSwhdFTBaRW29Au4g0rJbbtcRct3dft6OBozJUoyV3ZzZb7mPi0Jcpudivl6bm/0o+mwOL6u41DPEbVub5Nrv7YNTaVR7/G4UYhd1+0afD8O+LuCgETz8ygFbToHHWZpe19BG5WiuchcBQXxIMQjVtKo1rCJhAz+j4esGVSywFayUFzOMC8KCDEAHRXF/WG9Q3HJXA5DG22Zgc2Ea8U18FJnqB2JsJGFhpJuPfVtBAwpFzTGjYT8js8ZQ8Oq08t9yAuYNi7A5a3xjfYgVHFytLnSwiyjZC6vquHio8C0RIx0XGm3gaA3bEkcUioVIEDXqlpxIM0TZR+p07+qRvTrNkO3IlJP7IPhjWDbH2qwl1WO7hrcQOF8NbI+syJbG+6RZW95fc/rPmAnPkeGSRDHZUuskPhCMhNInwIksmFBefZHF+VOI1n/VTCGTsJS4Gv8MjBZ2wgH26Kqlz0XKa1s/pZHoQOIHe9qWO30EQOTE72qPG/vqkuS5bJhSfJUaJh5htQt7pFYIowL1xZOenJdZKO0wUe8aSTbSGZNbXbElplRNFDYvFga8Hqh8bsvkB3VnnvmKSDt6WQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(2906002)(508600001)(66946007)(83380400001)(6486002)(8676002)(66556008)(66476007)(107886003)(4326008)(1076003)(5660300002)(2616005)(8936002)(54906003)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(6512007)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: M8WytuSbabhLHg3HZNKxCXtffABZoVjy+gQsmFzllvCAx9GGE8rLPrl2HfWRpmRVe5EvrM1249jBiRXRiHuB00dKhghx2goDnbvQUzhbFg5ByH9WASPpJrmDln12dUkHAympmyU0Yi4NDGOukbhgPdWRo6MhQgroGfAKDas//bfU3JZcpLMbErJPNicof5C0UT+aj7MHfR6RP0mdfHFCoF5ZQolikTxcTRrug1f476VDNDAKgM2lK1dJYuQx8Du0zbrp1HQY4MNRid06DsialQCL7M6hfLxPuALUF4/sOwRU6E1WfdnZG+CcSsk+9nUdXp8M9rEidXvle8FnRN3P2DtehI96LQRelAX9bj0KPQyvNOiPc7Zg9o13wPd5IUvIS2qhPxJfqrnv1xHmL4qLyd2Ueg7uzRtT2DlWN5yQ/N3aAUjb4CPYo0AlWeAtnmUe/OjTA58RrhZc+LTrxOuSfzmtPkzdsSNLVtrT8ZJXgUKoIcNmEXY33RV9T+cySOZyykmiLRaUzcvd5YIq/y3ccgsvJscG3lrs/t2uFJSOmuuMBJFlEm5YAJsZel4Fmo+Ipf5P75kDJ3Mg0Ru+yUOWSBtSZVZtexU59o3AJE/MvgPzSNhq++cPV9zP+kZZ1fx567nayC/aZR5fvkWfMdSbHG0Q6Hh2gSU2OZ3DMN7nGPRep35nC69czjo5TZnGS4GdOP0BEjM/JUkUCVzsLoJj+/uE23N6aRoWES7x5CbL+qzDNHXwcvVX0f2bvPA0vOIkM+lJpQUrgLQ1rxGAjB1T24uXQJzuw3c7CWHyXbecxjJJwDA5umzwlA5F6iE4fZqZ+MayXObNa1kTNKgKumH1svfYvSnGMJDdTQlEn1G4BkmteIhF5TpwviFY/4HmvttZgyY0nuoXXavnBoN3arNs74hzJeQqz8+Qu6VrVXKZVssdUxAfvAblXGZPFWUI11FbKhEAIFxIejkrGpaioRU2/jX4CQi9h+L27tsBI1vVUnm1Wp/4Nv+Sr21tvqbDyhQm8Cl5ZHj5a8MTN9wGQ//s4BuH6p+7vaCeh3sIcd0kxRnDltPR7BPrH2b02UHDI5C6UV1NFaRlNg+QEMHGYidXprU3CsEH1oBFg7jerPe+j7WXNFNJtOUAEJ/xoDn5TFh0K16jstchqubb77hYXpjlEBiNgc7twJWlc3vST5bV8RYZ4AATrVzE1H1CPaDReMoGOceSrhLI/5BZxGoH3Tetdx6on+8NjanHDWWBUXeDMnzLuArVBN8C5f9Nx3BQ6EO4VkNAypnFkHcmPoWoKOqfIbucsG6a9cdzEuRLf1JDJvtAviAN2K3tZ2k5ToMRxQcgOoSuOKcw8JqmQ4zM0tVzwi1zoonKVli0yBhDAA9QTR/TGXqqlw+CtMkiJHfVe37DW51DtHisq8RfP/M7nqrMvAA1SpeiOcG7FurhSCZXn5/tiXunJq+SnmyRPQgr6dfLcdWmd+iRz6xRApnPskNAZA== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: c2f7534b-c73e-4bf9-2e2a-08da0c46f501 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:12.5023 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5ETs2fJosYECvgqCMRmaxZzKM7NoGOaH6qanjKYFfxvc/LRS5I6McM4SP868EpEAUHaInSoUaKps9ac+5PTY+Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean There's no point in using string constants for smh_open if we are just going to have to parse them. Instead, use numeric modes. The user needs to be a bit careful with these, since they are much closer semantically to string modes used by fopen(3) than the numeric modes used with open(2). Signed-off-by: Sean Anderson --- (no changes since v1) arch/arm/lib/semihosting.c | 21 +++------------------ include/semihosting.h | 25 ++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c index c38892fdd8..b983cc3935 100644 --- a/arch/arm/lib/semihosting.c +++ b/arch/arm/lib/semihosting.c @@ -22,9 +22,6 @@ #define SYSREAD 0x06 #define SYSFLEN 0x0C -#define MODE_READ 0x0 -#define MODE_READBIN 0x1 - /* * Call the handler */ @@ -46,28 +43,16 @@ static noinline long smh_trap(unsigned int sysnum, void *addr) * Open a file on the host. Mode is "r" or "rb" currently. Returns a file * descriptor or -1 on error. */ -long smh_open(const char *fname, char *modestr) +long smh_open(const char *fname, enum smh_open_mode mode) { long fd; - unsigned long mode; struct smh_open_s { const char *fname; unsigned long mode; size_t len; } open; - debug("%s: file \'%s\', mode \'%s\'\n", __func__, fname, modestr); - - /* Check the file mode */ - if (!(strcmp(modestr, "r"))) { - mode = MODE_READ; - } else if (!(strcmp(modestr, "rb"))) { - mode = MODE_READBIN; - } else { - printf("%s: ERROR mode \'%s\' not supported\n", __func__, - modestr); - return -1; - } + debug("%s: file \'%s\', mode \'%u\'\n", __func__, fname, mode); open.fname = fname; open.len = strlen(fname); @@ -155,7 +140,7 @@ static int smh_load_file(const char * const name, ulong load_addr, long len; long ret; - fd = smh_open(name, "rb"); + fd = smh_open(name, MODE_READ | MODE_BINARY); if (fd == -1) return -1; diff --git a/include/semihosting.h b/include/semihosting.h index 3843863046..cf54819192 100644 --- a/include/semihosting.h +++ b/include/semihosting.h @@ -6,7 +6,30 @@ #ifndef _SEMIHOSTING_H #define _SEMIHOSTING_H -long smh_open(const char *fname, char *modestr); +/** + * enum smh_open_mode - Numeric file modes for use with smh_open() + * MODE_READ: 'r' + * MODE_BINARY: 'b' + * MODE_PLUS: '+' + * MODE_WRITE: 'w' + * MODE_APPEND: 'a' + * + * These modes represent the mode string used by fopen(3) in a form which can + * be passed to smh_open(). These do NOT correspond directly to %O_RDONLY, + * %O_CREAT, etc; see fopen(3) for details. In particular, @MODE_PLUS + * effectively results in adding %O_RDWR, and @MODE_WRITE will add %O_TRUNC. + * For compatibility, @MODE_BINARY should be added when opening non-text files + * (such as images). + */ +enum smh_open_mode { + MODE_READ = 0x0, + MODE_BINARY = 0x1, + MODE_PLUS = 0x2, + MODE_WRITE = 0x4, + MODE_APPEND = 0x8, +}; + +long smh_open(const char *fname, enum smh_open_mode mode); long smh_read(long fd, void *memp, size_t len); long smh_close(long fd); long smh_flen(long fd); From patchwork Tue Mar 22 20:59:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608348 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=y1I1fjqk; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP7B476Fz9s1l for ; Wed, 23 Mar 2022 08:01:58 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id E237283CDF; Tue, 22 Mar 2022 22:01:26 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="y1I1fjqk"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id BD6C083BC9; Tue, 22 Mar 2022 22:00:33 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on060b.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::60b]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id CE9DB83BC7 for ; Tue, 22 Mar 2022 22:00:14 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I+r9Sl+lR1QaLLuDNBre5SsbH43H/6XeCStmy9bTWAOYMQdtD9+GK18T0J9fzKh1TvSVmTH7uBWFioi/r39R3NoPTW0mkGrI8FGcvl72OR4aYohgeGusGONJAfH6o7rEFhRlB1+1hk90bTQbiONWAAfWEhfYQxsbu6zqxtpftZQqhWot8o1+Wknxf0PAOXvxzjo2tRlbFYqv3/SNJe5oYvAuxLEeG+PlNPdVR6nyg/RRu1LsjoZTs9gJigsz6c92YsDl5LTXuAWT/qOw29t01NidYfh72kWsMRwe+nCqh2InrO2KHaTTT5h+hPC73ipKMynI7Lx2UgC3pmoJdK19pw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BEoCaRy1CH+X6R6XU4q/CGUcy/2gvxwxdIUs/OaTMNA=; b=nE7TY+VToaqK7cuzuhm7BaIbBmVwO+amePqU0q0B1Ijb7JbDf6VmTF33tsSOWWEYiQTRosfzXf+0+4+VuS5VLmhRO1CNlSPESC23ihSfjpZw6WzTpeIZ9s0Wq5DrEdzZ8gDH3he240vUhPUQ1JDWua7TUVPWWC1Ap5kUC9GAv6/DgbIrygfzyFSanGMzwwbINphViEhNpJ2xEn0BBLGhxt+pO16kugwmQ9FRZNXZBimznJ1Z8DZtTVH5nngCk/yDjUaGMZ6xM0/DOIrESVUIGs0H7AQCb+o5s6lrD99l1Tnxmf1LmIrRGpItuR/Li9z1TCiy1Vll5OTFA78vIOVroQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BEoCaRy1CH+X6R6XU4q/CGUcy/2gvxwxdIUs/OaTMNA=; b=y1I1fjqku+rMlVkPbbg/TW+Nkgb2+QwmtkbHx9XxzEK48qEUySEk2OmO8gZi9g6gYVz5ixu45b/KIdRkqxyKZNbyzh0P2/B3ED23Sj6710wN/86wwSwkQHvAbcjnLnBMeya/AMJEqSvNYRVGzzARhN/0hSa01eaDHm1J+GR818D0T5vdDScQpyO+en9iz/Jjsemd+m4EK50bfi2dCMSDWSg7Rh7003zcRl9PFrJnc27pvfvLOvNUb9JJI1g0BEFjU/zQTEK1OX9z1iB6PpaIplBIWFiIs+i1cZT3UFhbZhb8udv9l3uFxfq+2W14+S/Upn7cBm12j5VRzGC3QWVkog== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:13 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:13 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 08/29] arm: smh: Return errno on error Date: Tue, 22 Mar 2022 16:59:16 -0400 Message-Id: <20220322205938.1721846-9-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c5da7d2a-cbc1-4958-991f-08da0c46f5b1 X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RWxLtiLkOagRQ1B2tOOyc+/Hfy13/Q9UrqL9t1hNqT1HecQGBx67dHhSoeh2giKZh2qLsl++EhJKNenBmkawc64NCcUxiO9r+Lnw63hHmSD4kxl+I6otpfydogrhrMYaW1VDAr1ZBiDxuDvzf15CNZ0OAgOVhsFQia0RUR0vbl8x+pcPMyG4fZ4JHorFJGX3fndfQ0A/lBc6kBGtFtFQFRQVbjbG5QziOkpkQ54JMl+GzLLbCJq6cAw6ApJf869Y7UqPut41S1D/iBpnNB0Uhhz1eTS25rUBhAXVYdM5GAw8+3smj+aO6P06dNIxo4nanTIDQnXJHGC+RSjXaqFqBfDqW0vnjCOaztoA8Z6hyhU7Q32w0PArp28Th3q6eADR7aEa3OXVeoUagVYF8rejbcYGco3CATeyuyYVbaRQV2jdGqxahZY8vM/Ii4XO43nKKqTLdNr+E4HWG/FeUY7AzrNvI0/6bgD86pJSMAmC5ZgHNKKbf6DzVCBC+hHEGodFTklOfiGmYfP27KbS2esK1zRVWj7d7dXSM7vY9MOecRvOkMWsxI3j3v1MLJ/zD+QDCJ3ZRpxoXnb9DIpxWPKRaIBRfbS7l/9Mlbe2wJ0Q2NJXme7hEIKg3rdPWT6BlXhkUnyeu4Bxp4pdymb3UJ/b2sXHtFGvSaTC8PzDVJYvr6jiss1gIiK9WmgxaJHhXTGVQEr1YQ1c7VDgN/OXVIheLw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(2906002)(508600001)(66946007)(83380400001)(6486002)(8676002)(66556008)(66476007)(107886003)(4326008)(1076003)(5660300002)(2616005)(8936002)(54906003)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(6512007)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7JaAy3JUWqyH4yPNKc4u/hgGPK9ZTRuKbTBnAWeIGsKVZo+bLoCfuN9mfJP+A/FnWO1tUkVBlRQNah2YPJnSYiB+oGtVHqOQYD+ltikTG7/nBac0KPTR8rG+581haVobjrMJxz6jpw1nCMoB6T+H7n/+V1UJR5JE46ReLgOGjvVwdzRz+dBKWEXfujTGQ42BEDHi8eKdA9fYRJzox+Rwh4Yn99rlXzOXr916RlmAecpP2k3oe6814Z9eGkOj9udrhC5u4Y9YvuN7DuqmYGQxpmhsucPyNNYHxBzl91dd32CYFb1xYU2jOa1yxkU3g9z0TpPlpvrXDZqqSEMnUvWj0mibTnaWkROmXJynZSYqIUEI27lQAEmVBUUQjZjBLh0b+ISkaM1GmGDF1FjOCSMBc4igVtsofwBgUjhyzQ+494Sc/W6adorm/fOL1P+N1PE/G+78sem7+u4MzBPQyPaswRg3xPt5SQvTSe8Qnir4GqkalpdAl9PqO66cZEQfrSuwSNcJyoGezb0xOqv50S6ld/BHwj9QnvdUkZblmgAGIdBHsPrsYVYFarmQgGDwFDSQlyRZf2JjssV0VhXl3nFWGJKXfxprBJcgi3T7cRkOo9NeoMQbN3aAa932wx65LSIWdcfweEHklkQcHyprL+ezpKXbtge8J+c+56zGbHIpnMFdqXLQxHJr3di4dY+KEb8rib5HM2swQ+5NVyXWD7Wo1VhvxuZuaDkb/SezpQQ6xsZKsccdjE5ixB7v+eIv5jTHh0oYD4bIFW2YOVbfdiK8QpYDmQBOv5XyrLci22BfDFRf7vVJNGfmwG7w+JPtLEYyg9xLvOjE2WO5TP2s8jUUbpQa0Dfs2OoTXCyKa/nfeZCDB4NJa4JhKKS0/CDZc3NgxmRLAGe5cn4/boDsX7D/ELYmhkdGgx61hFks+6DaZAO8aaER4Y89w1FdPr3o3AhvK/nZYbBXlQimtMcp1W+08Q1BfgDj4OKypg9hY1D7QPvpDYigUSuP+rM9B6CQQeNVKa1yfuIEnlVyJhuB9FH2rTyZKDATXw5lOObS45/O3qQs6GIkw6+S16Z59UJDTLmaDOxVw+bYHujChQHedzkB54d3din+9XakjI9k2LBat1ACliB0tNDZEj39rZsM1S4IVC06O0V3q+/DROMNO59v90b5OFO7+2bHYENaFdXBQ+P8CGzt40G2JC5/4ZQuJ1uVP06YRODd2rF0I2VnoMb5O4zxseuQTucyOCAUdeG1gcA1L74q7EiO3EOoOKZdExdg99QxckfLPBtLCVhnpq4p9XOSib53Rh5C5rR2VyC44Ode7Hy2NJnt66by+SCIrhTQLWVzROO+jIh9o8Z9Qp95ihFzKZgvY4dLVy28PMG8G0XyTb73wzbL7Hbg5LQJUfm5Gt2ce8u7HK+BNXShFzOf3y2gCrc4+ZHMztMlp5mQTkD0Fk7/xpHxZMHgJKKHu/dbZnxw3C6akl0bexZWu/sN4w== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: c5da7d2a-cbc1-4958-991f-08da0c46f5b1 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:13.7053 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: K64QsVuIOkcVUyIcsXVbeCHj+3oueFg7lChBfnA6t5dnhWSFyXOx7hwFZwqPBfIsiebIveRGXzKfNgRxztaSUw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean Instead of printing in what are now library functions, try to return a numeric error code. This also adjust some functions (such as read) to behave more similarly to read(2). For example, we now return the number of bytes read instead of failing immediately on a short read. Signed-off-by: Sean Anderson --- (no changes since v1) arch/arm/lib/semihosting.c | 67 ++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 31 deletions(-) diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c index b983cc3935..1686457685 100644 --- a/arch/arm/lib/semihosting.c +++ b/arch/arm/lib/semihosting.c @@ -21,6 +21,7 @@ #define SYSCLOSE 0x02 #define SYSREAD 0x06 #define SYSFLEN 0x0C +#define SYSERRNO 0x13 /* * Call the handler @@ -39,10 +40,24 @@ static noinline long smh_trap(unsigned int sysnum, void *addr) return result; } -/* - * Open a file on the host. Mode is "r" or "rb" currently. Returns a file - * descriptor or -1 on error. +/** + * smh_errno() - Read the host's errno + * + * This gets the value of the host's errno and negates it. The host's errno may + * or may not be set, so only call this function if a previous semihosting call + * has failed. + * + * Return: a negative error value */ +static int smh_errno(void) +{ + long ret = smh_trap(SYSERRNO, NULL); + + if (ret > 0 && ret < INT_MAX) + return -ret; + return -EIO; +} + long smh_open(const char *fname, enum smh_open_mode mode) { long fd; @@ -61,9 +76,7 @@ long smh_open(const char *fname, enum smh_open_mode mode) /* Open the file on the host */ fd = smh_trap(SYSOPEN, &open); if (fd == -1) - printf("%s: ERROR fd %ld for file \'%s\'\n", __func__, fd, - fname); - + return smh_errno(); return fd; } @@ -86,19 +99,9 @@ long smh_read(long fd, void *memp, size_t len) read.len = len; ret = smh_trap(SYSREAD, &read); - if (ret < 0) { - /* - * The ARM handler allows for returning partial lengths, - * but in practice this never happens so rather than create - * hard to maintain partial read loops and such, just fail - * with an error message. - */ - printf("%s: ERROR ret %ld, fd %ld, len %zu memp %p\n", - __func__, ret, fd, len, memp); - return -1; - } - - return 0; + if (ret < 0) + return smh_errno(); + return len - ret; } /* @@ -112,9 +115,8 @@ long smh_close(long fd) ret = smh_trap(SYSCLOSE, &fd); if (ret == -1) - printf("%s: ERROR fd %ld\n", __func__, fd); - - return ret; + return smh_errno(); + return 0; } /* @@ -128,8 +130,7 @@ long smh_flen(long fd) ret = smh_trap(SYSFLEN, &fd); if (ret == -1) - printf("%s: ERROR ret %ld, fd %ld\n", __func__, ret, fd); - + return smh_errno(); return ret; } @@ -141,28 +142,32 @@ static int smh_load_file(const char * const name, ulong load_addr, long ret; fd = smh_open(name, MODE_READ | MODE_BINARY); - if (fd == -1) - return -1; + if (fd < 0) + return fd; len = smh_flen(fd); if (len < 0) { smh_close(fd); - return -1; + return len; } ret = smh_read(fd, (void *)load_addr, len); smh_close(fd); - if (ret == 0) { + if (ret == len) { *end_addr = load_addr + len - 1; printf("loaded file %s from %08lX to %08lX, %08lX bytes\n", name, load_addr, *end_addr, len); - } else { - printf("read failed\n"); - return 0; + } else if (ret >= 0) { + ret = -EAGAIN; + } + + if (ret < 0) { + printf("read failed: %ld\n", ret); + return ret; } return 0; From patchwork Tue Mar 22 20:59:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608350 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=qBxtANMF; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP7c6DZMz9s1l for ; Wed, 23 Mar 2022 08:02:20 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 9501883D03; Tue, 22 Mar 2022 22:01:38 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="qBxtANMF"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id A50A383C07; Tue, 22 Mar 2022 22:00:34 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0621.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::621]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id E0F4B83B58 for ; Tue, 22 Mar 2022 22:00:15 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fWJUXgAkYOwdC1F3/v9psjtz4uwP8DG6SV4LTZF6wwyrbRyRRVVGgahVXOSL3egAjlYzjxZR0VDtq5vBYWQUEaWbGq/zT3J7dQxKwB51fDXAikXo0HTN2RgHycApJrS6HrKJCwPFbkZ9uMjq3P/DFBjtI5mWzgiXc48fBou3wH1hPoF933ycexdi5CS2Oyzxo0exdjgsBltOZG2f+2CIjRMnfMMeuQzF37MFtUq3nJU0Kvlp88ojwIxhh3RQ8ZvKrGxkaP0ish2YfBLsC1hqF+SsU/9XFqXwmxQ59J2NZBibRSHxTjyptHrAuKrjKQMEiqh+NRdctAeLGOSR2gJMlw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GotR8hcH7NEumpw+EMaZQE6vrf2mXC4g/Q9ArHKaU2A=; b=O+QBuO6PCbHDpWVq20r3cMGt9eNVUFCrkr4zl1BeLdCcHpB9JP4X3Gg2WM44DF9p3FlgUlFi5En5JT95dbgMtVie/7AYG1bX02buA9bTbeEABoj4+w8ykhIz9PLyucTX9J1TRI+Ymm3TtEtBQ0woKC0U8eQHCjIqQeqRtwTQlTNYcumFPPxfIYoA2bKULJn/21SOcOyD6XE7Vp6WFCHCqua73RSbsHgknyyvvlWa6IwM0o5mUw2g0Aq7z8Aq1NtpzhxDh2E8+wYHm3qIXFqx8xT2E57q0/Gn2tCNmwUE+8RFUWllizjnFNketHR5J/qB1a7JZB/ZFbiFzwO60QqRPA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GotR8hcH7NEumpw+EMaZQE6vrf2mXC4g/Q9ArHKaU2A=; b=qBxtANMFfZsxdTzQyUDtGGlX4L7ckzuh3SV4qjS2Ue84zR+AR+ljBEq3I8iKTyZ7jOjQHGVf30vVovzgb9pK8VxkQCfSUwWFgi2YOM4esznqc1+L8/bmpngf+jZ/Pjf0ULDSJ9wh+oEvmFh7L5OwsX0r50WPP3PflPvjursEnIPoM0NDw7ojnW+hgiNV7oE6s7IwdnjdIPerAjYIasdQckI5LGvkJwyV9GQ/x79eIaOBDFhbXCuxuor4Yx8DGR+Da2mQ04o6ufL/7QQRIzYXimdJ7LR9jB57owGTc7bZEPIY+dA9NhmqNgLiN07dKlZKGgl0E6ufV9ZlzAQ9dQqIlg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:15 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:14 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 09/29] arm: smh: Document functions in header Date: Tue, 22 Mar 2022 16:59:17 -0400 Message-Id: <20220322205938.1721846-10-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6f65456a-0852-4e06-c8b3-08da0c46f666 X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NN3rCWuMbp8h/h7LM+qgoXD/ZK/JC8RSdx2tfTJt+3pqXPljYvTnGAwoOZmH0XCDqanh75WYlyXH+pdZzed1r/EyF7LYt3R8LJngqhf3Ehn0cV9+G487WwRT1KoeLX+gc/LDb/m89aOvd4yWJOxEfn6tWs6SL6T1jhF+D4gd9wh6sNGl3JwtZmfUlY12CYjTtg5oOtKJjkOQg15FYPRcNPuCpvWiFOUox3VfKHOZkIKmQTfyDEEmiVyj9JzTzvg1SJ1O7Gx9V629HjgR7C3HwdWc+C3kszuG69dCGQxEUa8/vj5rB1zegsbbfrBsa++IPYZlfn5VAoPzFtBmyO8v7hpOmpC4kdwJf+1j01tPj8oUjZQT2b6R68vl72IPoA1kuAytdL7wD+V1Ct8xwctVwqVcvZM1Ng+ZQkrP0lvYuo1Uz6z7Iwml633PTS5ukeaidXcr8qVEQVLI2fh9iPym2KIN728hZ0U7e1c94+LIRabTJG/wgms6Al//3iX66Ny9UaX1SDGQo+DNN0+guVTtXfVrl4tfkDH0R+34zak7ChdSwJlSc9iYM9OiUFrKpGIY9sCeqDMNQ0WT32Ct2W5XnuMoYyYFzNh1VCqUmgAT5jC9V8R9kL5IlgWngiCj266fZIbwWg9YFTpVtKrSCNfNtHoFuWYlZtmn5cBL7McKaIUMjCdUb08dUsvPhqv/Gw0PEpwqQXeObc/aTtIljnbStQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(2906002)(508600001)(66946007)(83380400001)(6486002)(8676002)(66556008)(66476007)(107886003)(4326008)(1076003)(5660300002)(2616005)(8936002)(54906003)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(6512007)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 0KQo/boKsXFmJvhA8KDzj+b8SxMcSlK1Ej+ODq35Fn+fbwT4rKecBX06PWjk4FtbaKDxiAxRayNndvvwihxXCzVakEXzpg6EhrkRbCkQ+z5v5jteJBPHQiXc8blnwuLcLU4cEvRchuVrTxUKbNA/K5CW4iMtb4pcvzmJT06Xf9cMR796mREtE1awcOkkxiByw7ZE7g2KenL4yGpnEoY3sE+4+PdveMlGSyr26yhYE9MxiXmZj4MY2kWCknd79ymYUvqqJ6RnrJqt709Lq6nC2jo9X4f59VV0NpJy5DqHhtIXlg8UgrEjPja3Jvvyr5bcpS6EQrCPL3X4WSqzzatlSExQyLGZqATEE+X9pxv0pEIc+7SvQph7Rj5otFnqqZKycJtP5h0HGHmARY/lx4M+yV5LD8vY8uqRSUEDy1/bu4LKjllbADwaH5vHHipxix/xSoiL0kMn/DvdyBj/9bGEUlrPdvTeLymd/af3zlepGNNHEjfmU2rxZoMdBPB0oPuWgeDImc1UB0sUJpsB0QG3t+ncLNs4mfa3DPIN3JvLEfCTVQSsXy69xDI2nJnl7HEXjjJ+QzgbilXG4H+dNuDKwvr3y3/wFQuXwBIbwyE1rVzX1GXkrn3yHvNXtRWj0+DLZchHdYT6EE3si3r4oBj9nuLlR6Zmz9U+dNXnJQDjIshb+DhPSMIGQrQrJTCH8CuIzc0nNf2UW3WrtGu391DXxIHn6aVrFPIxo5V9GpvZWbuqkY3bH6YzFzI2HKgqxmujwK6GZMjXf5OF+t+ST/UheM6RDzCXsT3b5XUo6AlKSg5OOFHWvTKWAJNrvCjwbK1Icyb05jLnftoIpxJ5z//sZc+UjnGRged4lMTR7WMgCMVnKUXS3/Esorr+gDTc7ie2rtDAQ0gZ/z6C9jDZDZ49fH8uemXwuQEtnYOEFoQQLcUSUpvOxb4Vx8PHXA6EEOmNtB8znUewnTNHB2kR1RAAl+OGrlUYo+Xt56seuU8BlqJ56/PIfokv5pRdxPl7YMoF0E1/4RUvcGKOn2Z8/JtLI+eaxQebV7RfFQVDVQ7Hz8s/h37fVDNgWZnYJVz2Pprb1Jt+JMDMa8twhX4xukjoi9RCpsVkMR6L3tVwy6T863vRelfUZOr2ae6JOixhqbiJc4y6klyjcW+649IxPxKNFfhgTLVI1pbdVMoMz3UmXwRVu/gEuSPHhIjkd8UnVFOoEUrMPgVu7MMnEPDoHqCmK/lzeyq7XajZhd/GcOYxrcUdfztvWdPcC6SJyeUX/GbFznz3t8Frqtp87F9ad7tJyfmpWGnU0toTfEu+Qk+wWSvSfa+elw/Gk2QUeAJFCw7x3o64mQAajax7q6PAvc+EAHItMhBQatnuOBp2RNAaayv8YYH9zu8HSNT8+3MgfmACiaKWjOmoXGOMuj3AF4SCzeRF+9hCLFU1rnj68LB8GNzN507YTHVnnxKftwKXAK5hbgbBoRpirj070J8K7Jd7DA== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6f65456a-0852-4e06-c8b3-08da0c46f666 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:14.8927 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: kn3yZ8c8XhAadq0jPK/zbR4mlZy9F0oZORrWHjxHmUygtj1X0pf13M6+JdpF0mVP7wtut9kpfIF3mp5MYD97RA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This adds some documentation for semihosting functions in the header. Signed-off-by: Sean Anderson --- (no changes since v1) arch/arm/lib/semihosting.c | 9 --------- include/semihosting.h | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c index 1686457685..2943f7b82f 100644 --- a/arch/arm/lib/semihosting.c +++ b/arch/arm/lib/semihosting.c @@ -80,9 +80,6 @@ long smh_open(const char *fname, enum smh_open_mode mode) return fd; } -/* - * Read 'len' bytes of file into 'memp'. Returns 0 on success, else failure - */ long smh_read(long fd, void *memp, size_t len) { long ret; @@ -104,9 +101,6 @@ long smh_read(long fd, void *memp, size_t len) return len - ret; } -/* - * Close the file using the file descriptor - */ long smh_close(long fd) { long ret; @@ -119,9 +113,6 @@ long smh_close(long fd) return 0; } -/* - * Get the file length from the file descriptor - */ long smh_flen(long fd) { long ret; diff --git a/include/semihosting.h b/include/semihosting.h index cf54819192..d8337b6269 100644 --- a/include/semihosting.h +++ b/include/semihosting.h @@ -29,9 +29,41 @@ enum smh_open_mode { MODE_APPEND = 0x8, }; +/** + * smh_open() - Open a file on the host + * @fname: The name of the file to open + * @mode: The mode to use when opening the file + * + * Return: Either a file descriptor or a negative error on failure + */ long smh_open(const char *fname, enum smh_open_mode mode); + +/** + * smh_read() - Read data from a file + * @fd: A file descriptor returned from smh_open() + * @memp: Pointer to a buffer of memory of at least @len bytes + * @len: The number of bytes to read + * + * Return: + * * The number of bytes read on success, with 0 indicating %EOF + * * A negative error on failure + */ long smh_read(long fd, void *memp, size_t len); + +/** + * smh_close() - Close an open file + * @fd: A file descriptor returned from smh_open() + * + * Return: 0 on success or negative error on failure + */ long smh_close(long fd); + +/** + * smh_flen() - Get the length of a file + * @fd: A file descriptor returned from smh_open() + * + * Return: The length of the file, in bytes, or a negative error on failure + */ long smh_flen(long fd); #endif /* _SEMIHOSTING_H */ From patchwork Tue Mar 22 20:59:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608352 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=RKW06WIV; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP822m0Yz9s1l for ; Wed, 23 Mar 2022 08:02:42 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id D05D783F3F; Tue, 22 Mar 2022 22:01:46 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="RKW06WIV"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id A7C5D83B58; Tue, 22 Mar 2022 22:00:35 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0617.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::617]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 8654F83BB6 for ; Tue, 22 Mar 2022 22:00:17 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OGN5NpMAjog2jv8te7qX06/XCEevb2nhguK474B0YtyCLoVYnBfR1msLA69FgLPLomS1hzpXaCV07EAJLz6NftPRhZpoIZmpydyv06dcLiOJriSnV7N6ksvliYl+7tWsJE5HSTwoMF5+C2DSwMpRqRK35ZfP7K6mQu3LDi8cyqQ1xJ2jt65P68NA9dqxjk34nRJXJTbyfR1p1pmRTgIMrmM63SazWgRUcCOl0ncgldvOk3xtTMzZRKKsUeNpUVg7LLDSsNUXYBkDsa2vtJYDxOXz48/tp9TwK33RuKDGKJBUxsXXNlfkzS6ROISiE5PE9Zg3Ln3bMgL6rbWj/me2YQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Fy5KMcA9+FrZlGJ5FXusQTIWJjNmhTJPb5C/16SrIPY=; b=O2dyKUwWgeontFT81ORobd6wQpPwAQ70xJv+j4iMPF3egFPXknpl5IxyeJ4wiapi16fv10eDdI0R5A9TJ10tdazslDbNTCeb1SbwpToqo3zOwF5+9jddpVkhX1JGt7I26kkkKZsUqW6OzcmeAdOmBH2z4UFeu0wNF4XTgfttgwrwcRgmwxyRDG4fmlErfxfGqbfxulbwG7VZ+R85cbtqQWxlyU2K8GCqQ+ARxafUuptgMeIszOzHOArBV0vcSfAkSCGRU9a6s4e93Mz59BnZnr+LbJcUOexFKY7fi7u33+31Iy7vKohyK1E7rpzoIHIoA16J+KMHabhIZlyY1vCKkw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Fy5KMcA9+FrZlGJ5FXusQTIWJjNmhTJPb5C/16SrIPY=; b=RKW06WIV3u3QI1L2n6jkL3g72CW1ZG/co3qKOjO5DMYqUfO5x04GkBQ761XjSyhnl/o+kJ35j920hhq6hAQKbohaEEp8e1MqK6IYLhYirrCAxrr05+A23cNcM58Qw1TDITQdFiQG2qDrdlTrsnRu1aB8uZ+Ny97S+IfTlJTe8JVSNod6EGqQstpMzAUf6lmE9YF5AF/dz167DvGuN0iOsI3LQY48xSumkQQr9Bb5MvrOcnCyC4/UWAej+Wrkk0Knhy7BzNmdz1YbnPfGVV27l2bJMgpVB/Bve/4PiJKXQ8bSRKMMUysz7CXGsqzDILti/te3G2JCvbdO7TYKA+jyHg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:16 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:16 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 10/29] arm: smh: Add some file manipulation commands Date: Tue, 22 Mar 2022 16:59:18 -0400 Message-Id: <20220322205938.1721846-11-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2de36c9a-0aef-4e24-1f32-08da0c46f723 X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yA3JJzmlyEthWSAubT+n17NOpkHqMGFhcvSz40rW1CK1gjPvp/rB8fphklbR/WDAPEdvBboKV3xulmFJ8lln7YGEhesy0mPCADKKXMtkhoi0u1wxMN01XqG2Kv1v/rM/vOvIbnsm3Utih2bcsC+SHKa3OMs8/9N4jVDoIhTVxAfGNuj+/Kx8zMERM0wVOSfXklrqi0CQPuwHJ2gtdJ61smSGB37FXukPDLFA3qWYKTXz2hJmbBRwkfWaWR2qCTOkt8vQRo/6mYJc7VW3Hx/rrIpxEQ5lv0XBPG7jdIlBmL6f6zrP5lYM/qvkgsOqOu/ZiuiNyKNjjy0MGh6KRaNL7dCjwU5jyKHRNrw6VwPzM0NcIEaDgewXzvTSByViyaZgeZQa81FxA+/iYPTFCE6sscdht0lIR37IFjNVc2ZrM8fea4reGI3LcZJIWNPq1vmXDiEksct9ZjFX4LfSoqttEfBPlW2BsE1ZclnrAsT7svXOtqpTYquaSuzkF8eCZ0IkjUtpVpfijjjZZOZZ9sBkGZwhdqDna+wDWUYwtx5OWohdbQt9aeEwU9dEL2ziua+iMBx6q5XSCScnBx33WeIrGI448xyXkSxYFq+js96bLK9W+rC0oAtS55YnAReEPvVfm35Jhv3kmARFrnxD3Tzh4NtoukP/BRWxonsyabna3rG2oGBL5dwxs8MogcxHAjdWhL8mFN3a6U6/+YKNluVrYA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(2906002)(508600001)(66946007)(83380400001)(6486002)(8676002)(66556008)(66476007)(107886003)(4326008)(1076003)(5660300002)(2616005)(8936002)(54906003)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(6512007)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: iHqQ4tFmY4gX2E6otDwAWo1PJDeDsvEgA5LTslEb5TB7eKhVZOe75/AhVA6BHsTQdTF8EBfZZxZNdMetjas8Q5EPWLjFXtCA3MqRtfbUCB4HTg/dCL5q6RkRUnHxKFRNhH5ojNan7wOvPjR1mdCVZ+wdgeyT+vSL4BVVXjbiA4bNy+JLqpwG5WxqNMK/ygUkcEOzja+VHvJE0HxCLKmZJdQzKXl5R6qA94DnYztQVqztKRE+nuKTE91QEFBaVm/J1ANlNm5V3+XTmEz5gHmNZk96sQhIC28woSITD9zgqoooIttSO4j/bkkTJ5NnRlhtXNL5WJo3Amzy1IOlq4uFFrwgUrYibwo5nQB/43Sug/AIqtFxtSrNhrfKLuNBuInw0LI3+MXTHxnYg9TajWfz/6uj6XzUF+FSevjKYqQcT125IoKxwN0mQaG6H3LEN0uESaCpz0DxJWxrvzArGUfPcF451vu6q+qiybrkzPHSahOuBeiKw1LqUBNB3z4zaR9jF5ZlR84y56sXpRfN3lX8I8PkEYI6tak1w8n6YCwKqw3iuaywFYp7PXcW7yD5UYjgZlmBwb+S6ncIP0T3d2cs/zOPTDhyHTeGkpNZPNBZFJgV6dWyr60oMZrhGuFyZrgycTAp7MRb/WzLhfF3+Bvi4O9gPIL55/YI/259qO7QLxahrMalZv7ObP3LF4ZDAKQC4QZwsk1sgcXVjn+LByvyAAxGFTAXAVlkeJpHjQxzF3O6Aywl4QWEirGxbNz7u68NmXPunD8kx1xrVdkGrV1T9mv3wC1g3/CqOKxcjh40JCKnogj5Bh6tLYVNUM1iQsbZ8NN2jgBN+TdzMWrF97bHrBVXObcHsM9pxe+iglljccI9PjXljq4KQ8nswJ6dgDpKlGzqIPU0q3+wFE9nxHBZh0PqdjxPjexh78FDj3Ljgfl9bWKWcWvkGRH0r/yAVVK5spdZsocBxmLL3gdsuHnkglmzNxog4H7bBOVR2/tHQG4qLwfZIFxWUdQax1y7/EyDIb1ocEevYA4jtONPkLzqwiuj4vlOv9tTQOXNumpGcnWr1GDcWC8ibF0ox0hGJxDf/M/4OAbjAEb+5vPOKRMeFWrsUeZU0djG9shP8gSbA9EO6aeJvi/gjSaS0cpggttvuObEAkRF+tXWgBfTEF68H/WlZbCUZINkGWacYfDt3/nDt4pAiQkBDQAyPsWcPGRrIFuukKsIE2UQqafSxKtz9mlZNCxSjkvfIOVSv5zD439+ZdwKxg/M6K0UbKcSag2U+xo41I0o1FEeFdaCG5dvchf/5npDPa4oCT58lb9nkSQ8tmzsUbjgPe1YviusZFHbzqv4KN62Lm1XH5y+XSNYjBmZjzzTK5j3/33nD92US4c4y01DBMK6eyDPnY40xa9kmWa9/TKSqoSSP+IT/h9Kxe1sXPImwt/E0v7cCeOquL11VbGb2aQKanqm0Z3J/GQ6WtRWNpABtDyttj0sG+6EgA== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2de36c9a-0aef-4e24-1f32-08da0c46f723 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:16.1895 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: l6FGC8h0XUKRJliZt9nSX9V1HKJD1XAO3SGhTbpXGVa6P6Ui3qJITSBVa+ZuZlEvGLX/Q8zg9sjYEQlLkSiT+A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean In order to add filesystem support, we will need to be able to seek and write files. Add the appropriate helper functions. Signed-off-by: Sean Anderson --- (no changes since v1) arch/arm/lib/semihosting.c | 67 +++++++++++++++++++++++++++++++------- include/semihosting.h | 20 ++++++++++++ 2 files changed, 76 insertions(+), 11 deletions(-) diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c index 2943f7b82f..d08003cef1 100644 --- a/arch/arm/lib/semihosting.c +++ b/arch/arm/lib/semihosting.c @@ -1,15 +1,13 @@ // SPDX-License-Identifier: GPL-2.0+ /* + * Copyright (C) 2022 Sean Anderson * Copyright 2014 Broadcom Corporation */ /* - * Minimal semihosting implementation for reading files into memory. If more - * features like writing files or console output are required they can be - * added later. This code has been tested on arm64/aarch64 fastmodel only. - * An untested placeholder exists for armv7 architectures, but since they - * are commonly available in silicon now, fastmodel usage makes less sense - * for them. + * This code has been tested on arm64/aarch64 fastmodel only. An untested + * placeholder exists for armv7 architectures, but since they are commonly + * available in silicon now, fastmodel usage makes less sense for them. */ #include #include @@ -19,7 +17,9 @@ #define SYSOPEN 0x01 #define SYSCLOSE 0x02 +#define SYSWRITE 0x05 #define SYSREAD 0x06 +#define SYSSEEK 0x0A #define SYSFLEN 0x0C #define SYSERRNO 0x13 @@ -80,14 +80,22 @@ long smh_open(const char *fname, enum smh_open_mode mode) return fd; } +/** + * struct smg_rdwr_s - Arguments for read and write + * @fd: A file descriptor returned from smh_open() + * @memp: Pointer to a buffer of memory of at least @len bytes + * @len: The number of bytes to read or write + */ +struct smh_rdwr_s { + long fd; + void *memp; + size_t len; +}; + long smh_read(long fd, void *memp, size_t len) { long ret; - struct smh_read_s { - long fd; - void *memp; - size_t len; - } read; + struct smh_rdwr_s read; debug("%s: fd %ld, memp %p, len %zu\n", __func__, fd, memp, len); @@ -101,6 +109,24 @@ long smh_read(long fd, void *memp, size_t len) return len - ret; } +long smh_write(long fd, const void *memp, size_t len, ulong *written) +{ + long ret; + struct smh_rdwr_s write; + + debug("%s: fd %ld, memp %p, len %zu\n", __func__, fd, memp, len); + + write.fd = fd; + write.memp = (void *)memp; + write.len = len; + + ret = smh_trap(SYSWRITE, &write); + *written = len - ret; + if (ret) + return smh_errno(); + return 0; +} + long smh_close(long fd) { long ret; @@ -125,6 +151,25 @@ long smh_flen(long fd) return ret; } +long smh_seek(long fd, long pos) +{ + long ret; + struct smh_seek_s { + long fd; + long pos; + } seek; + + debug("%s: fd %ld pos %ld\n", __func__, fd, pos); + + seek.fd = fd; + seek.pos = pos; + + ret = smh_trap(SYSSEEK, &seek); + if (ret) + return smh_errno(); + return 0; +} + static int smh_load_file(const char * const name, ulong load_addr, ulong *end_addr) { diff --git a/include/semihosting.h b/include/semihosting.h index d8337b6269..b53c650444 100644 --- a/include/semihosting.h +++ b/include/semihosting.h @@ -50,6 +50,17 @@ long smh_open(const char *fname, enum smh_open_mode mode); */ long smh_read(long fd, void *memp, size_t len); +/** + * smh_write() - Write data to a file + * @fd: A file descriptor returned from smh_open() + * @memp: Pointer to a buffer of memory of at least @len bytes + * @len: The number of bytes to read + * @written: Pointer which will be updated with the actual bytes written + * + * Return: 0 on success or negative error on failure + */ +long smh_write(long fd, const void *memp, size_t len, ulong *written); + /** * smh_close() - Close an open file * @fd: A file descriptor returned from smh_open() @@ -66,4 +77,13 @@ long smh_close(long fd); */ long smh_flen(long fd); +/** + * smh_seek() - Seek to a position in a file + * @fd: A file descriptor returned from smh_open() + * @pos: The offset (in bytes) to seek to + * + * Return: 0 on success or negative error on failure + */ +long smh_seek(long fd, long pos); + #endif /* _SEMIHOSTING_H */ From patchwork Tue Mar 22 20:59:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608351 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=2Sgn5IL2; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP7q5xyGz9s1l for ; Wed, 23 Mar 2022 08:02:31 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 4222F83CC0; Tue, 22 Mar 2022 22:01:43 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="2Sgn5IL2"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id F341D80F78; Tue, 22 Mar 2022 22:00:37 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0602.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::602]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id C4A4183BA3 for ; Tue, 22 Mar 2022 22:00:18 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LbyZ1VFTBQ3D0Ew+RYf6TWIcBlqQgApPE1zEAH2MIk0u1ZkZPBN0O4QKSqITTs6LZaff9j2TEc0HD4Obb8n2y1PUdU/+KpRE3QOuEnDU6VpwpIoRT04+uZiRYdELi4w5mSGC1oADSwJW/RLVQTv7Z1OKExv8rqB3OAxXK2rvn6kwr8rPLj2PdDE8O9uGhe/BjYg9KeJLHV9OJz+sBDJQDpiiXiQcl5POHpLFXFKYKygILD1isrzXuj3ZosW2uqJAhtjaI5B+m8kK9dkRgVbHcUE9LKO05yYWIfu4CjwYzRN/FXEwo+yfx7y73/rdAXDKpgxFxIMEoE6VJUAvN8+Ewg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HjbScahy4Eu3IOQHaMc57VmW4CrityOajMaSDhAn+mg=; b=ZferTK6FT1PiiA8EomVS99aT3IdgEkJ12W0Xcifvpr9iS53D8hX3rchmAefkQzZlvBtqtt5a0XEeDpiEmC76T+ba0Uz7fv5E7HppgqFll38BIRBkdYh5Q/eXboa1YfGS3MI1JRtpGcP+Bk5curoQNoV/BeSXOdcAES3KFLRdcmHa+iu17+xFIWkd7cO87iDs1XWeeoyVxsFGSq1hqXYwAoH78XsqYugyjuSW4+GWpUqffN69k/QVWQ7/Wijgj59Fdm2QH2EUk1wFSCkCGEbW5lXX02IFE5LfQGI/+bmW3+lhufd4uRMEIxnZ3+oHxHEmZpG87fHI36wB891x25puBA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HjbScahy4Eu3IOQHaMc57VmW4CrityOajMaSDhAn+mg=; b=2Sgn5IL2oGERgyAZ6qfsIKMybBzvYubDFeOrXA5k+c9WT0A0n2FBxz8Vj4dKLpt1exqnKZwjAfaDeZ3X1EggEqESQBel7koBt2xHahjBoYW7+bNf33GdbS0STNU/Xbto1zAy+3O08zonyR3vEkD+RMI4wnwLGMzWNOD7W9suMDU3CZC25dN4oFVzCtDu3yC1ngbNJpQpn3eotORbwSwqldZs06owT0/twPVTq+nE4GB7cFPNXJYI9xsEJq4dGAE6y7BKuHj+nxDMi833C4rMpNBODGoxC28+1eO2V+Vf5FhH52P1GgK2Cvl4jCFfnIgKQmN8MiNJl3jOwGm15Wl92g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:17 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:17 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 11/29] spl: Add semihosting boot method Date: Tue, 22 Mar 2022 16:59:19 -0400 Message-Id: <20220322205938.1721846-12-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b04817a8-4ef3-4d3e-d80c-08da0c46f7e1 X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ld5kdSlBPRiJlnlCJeRBLofzJDQegzdSytIBg2Wlm9hINRb3RtTGLchLQl6DBDOc7oy0ajHpIuqH/WlorAxRaTJ67o4qERSd94xe6X1wUVKTpZPvFEhXPK8bfdbSCOPrAOOPYbxzdfXcboI5fgMXeVj47cT/RrTNfyTa4BWL/xzWRJ4mM8YRBgyYaB3NOBgmi7UpC9OaeGG1aymfDGYzx+XW6Y1iWJ361sTKMNKTBVqfMnpV4cJs1wuKZG9zBlh9dwEFbGcZq76imCp3UavmJT2kw2+9VR/dtGUmZOwth7eWU7jI7iTrq0rYaMNMOiHyQtPE2Wl2TkRbIPbnKjL92WKqB+IRrhfqYWuOEUJbJLzdLBN5EiI8uxjtCqPFj5Br79opP7BiwehNKJsKZ2ChVX5R4xs65q1QlJYHP+Xjd7ttPZqfwnJWupCiFEomwJOYDsPNP2ACAXXYalgvGSeFXwTQert+IROU4RagOjpRz5iSKw0JjR6r8WVBbhJBj/xBuaFTMMrmgqTcI0+idZT/cBebpyG7zEip2IQFUZYAFAcx2geuRc6fTD+l+TESJiFigI5qTaf6qGt+JVGDwsvY7OjUkxF7+TYYRKFzUB2I2XJU/HDlKiAiPfaDkjt83tVWOlB2IpivVGNdJjvawdfuigOQ0bDvY5Ej/8gv8YV7IC+ZdEfNYruZMcGZqNmOpdfCBVTDbavO2ZZO3FcJzaeQqg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(2906002)(508600001)(66946007)(83380400001)(6486002)(8676002)(66556008)(66476007)(107886003)(4326008)(1076003)(5660300002)(2616005)(8936002)(54906003)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(6512007)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: v2e07JPRzphW3fMsGvayVdQtgzoP/mPumS7yOfW2TinUfhsX+Aadqs5ZpXP6dKVvlQHsscBiWQuTZZRN9Itapxudai4QfrtwzhdQ+arQDdizy0xtnDP5ZiasgYCohrUnMT8NK3HR4JjAFhH1B527c62Q4KoUufR8lEqY3ADWGjCZUEdv0gAzVE6zGwVWTCir8QY/bHsDEJeoodGap+zRNOWVs1nHPXawtY6qkPrisz+fLLtfxNBwH/wUgb03nW7ea6+Y4pjLC1dNqlXqtOIK6s57zJ8JCWlWB63TQ4PEO8pLh9FFosB+J1RhxcmHtaJSWePm5WhwtvDyn9QRwrssJNgDuZLo9/tIpE9Jtf/KNAJ+sdVO12G0imaJOrfw3bS3npsZSqLnCwqkfovfUMGAN+xaGaJfN4GbwQe1jNV9ZTSqI3TXINBSGorQfgDQ8wJ0xP+a5Y/gIfTvQeEjKT0PRi8i7njQpXU2Jou+r12cg+OUirhMyUplcH59eFNYbKQ2YLA0I+t4cM6Gyrv8Q+TG1CyHvsqehALTceedph/044p+FMQZ4xZcy4K2BKu1MDvNgMZWI/bbCyd3KYs40qbCSqh3CymHy1GSqpBrrtFDCenywOu+G+YYI2THZvWnIg9qKG3i2YLNqE/olbyx7hJRX/eQjCxIBoguL76qnOsQmkKIK31tBN7s9zN0/8bOG1i7FNwnENBRPypalbjOqfC4MZPY1gtTQoeAxQTD+RHri9az1+mE4jqmbb77bV+T5vPKy00YD0ATr6ZHBj9J+GOOcJNX2vP1E6fT3Sw0mA1WpyndG0C1DzghmjeR31czdYsZQd3jRX+Ya/KkwYLGgrnZkWFzFt7BCiBqkpX12L5HSW21DQzgFcKVT3c9j8dYagnxBQdOl/GjeTRUJdS2URANcsCR9ri5tfymtt7/wWy9gg0o9w1S594gYBcVS7oj9V66NW4/Uk1lrY9Ss5Tj52v/QIdy6gdymwVmqkzyJsz/YbgOg8lOZWlPWEIKYsBlU5txUrUJn6SpfIRMldR6HkRcBWFA2S0xKo+r0eoN+W2UiK6mpLWYy5B5BguRekPBOswp+mRipjvZ3a0SscP+JYt2qEtVisOkfRMLElrh5ocFkxsymW7b390jxVQahPdq7dt8c7SP6kQ+9R1VYJ8OGiMIknS8Fdpd74PCLNT5EoWuX01JGtscQVys2qnaGxidiTk4DDseyf3Jucy69c/34/9BN2sOD03qwzvS/FBCfhsq3sjmpirdeontzbuLMeOrw92pVgch/dXixPD41J/JAy36Mf6EB1VZ0N6ful8VXptn2BguILtBI2feviYvKpD5cJsP6IUVfS6yA+j2x6YZ03zHlASNXFPu/nWMTHDJ0p3NuwXalX317XlxwjV6o4hI3yHLkDWNmLxF3Rkioz6ljzW3p7LVlzjZf9DJP0iu91ffHgwry54b5g/YHgSynixm9CntesxemGcfBCaAs5+d8bE+nA== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: b04817a8-4ef3-4d3e-d80c-08da0c46f7e1 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:17.3457 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dnODfCVJ5Xg60i6mOM1jG90jN6YOyNgfy2b4u0btjmjzR8dfxgFI94o1pNCL3HPjS2okBojqAU6uR/3ZMBpqMA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This adds a boot method for loading the next stage from the host. It is mostly modeled off of spl_load_image_ext. I am not really sure why/how spl_load_image_fat uses three different methods to load the image, but the simple case seems to work OK for now. To control the presence of this boot method, we add a config symbol. While we're at it, we update the original semihosting config symbol. I think semihosting has some advantages of other forms of JTAG boot. Common other ways to boot from JTAG include: - Implementing DDR initialization through JTAG (typically with dozens of lines of TCL) and then loading U-Boot. The DDR initialization typically uses hard-coded register writes, and is not easily adapted to different boards. BOOT_DEVICE_SMH allows booting with SPL, leveraging U-Boot's existing DDR initialization code. This is the method used by NXP's CodeWarrior IDE on Layerscape processors (see AN12270). - Loading a bootloader into SDRAM, waiting for it to initialize DDR, and then loading U-Boot. This is tricky, because the debugger must stop the boot after the bootloader has completed its work. Trying to load U-Boot too early can cause failure to boot. This is the method used by Xilinx with its Zynq(MP) processors. - Loading SPL with BOOT_DEVICE_RAM and breaking before SPL loads the image to load U-Boot at the appropriate place. This can be a bit tricky, because the load address is dependent on the header size. An elf with symbols must also be used in order to stop at the appropriate point. BOOT_DEVICE_SMH can be viewed as an extension of this process, where SPL automatically stops and tells the host where to place the image. Signed-off-by: Sean Anderson --- (no changes since v2) Changes in v2: - Compile arch/arm/lib/semihosting.o in SPL - Make CONFIG_SPL_SEMIHOSTING depend on SPL arch/arm/Kconfig | 26 +++++++++++-- arch/arm/include/asm/spl.h | 1 + arch/arm/lib/Makefile | 2 +- common/spl/Makefile | 1 + common/spl/spl_semihosting.c | 71 ++++++++++++++++++++++++++++++++++++ 5 files changed, 96 insertions(+), 5 deletions(-) create mode 100644 common/spl/spl_semihosting.c diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 64acbda254..408d96ac8e 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -403,11 +403,29 @@ config ARM_SMCCC firmware (for example, PSCI) according to SMCCC. config SEMIHOSTING - bool "support boot from semihosting" + bool "Support ARM semihosting" help - In emulated environments, semihosting is a way for - the hosted environment to call out to the emulator to - retrieve files from the host machine. + Semihosting is a method for a target to communicate with a host + debugger. It uses special instructions which the debugger will trap + on and interpret. This allows U-Boot to read/write files, print to + the console, and execute arbitrary commands on the host system. + + Enabling this option will add support for reading and writing files + on the host system. If you don't have a debugger attached then trying + to do this will likely cause U-Boot to hang. Say 'n' if you are unsure. + +config SPL_SEMIHOSTING + bool "Support ARM semihosting in SPL" + depends on SPL + help + Semihosting is a method for a target to communicate with a host + debugger. It uses special instructions which the debugger will trap + on and interpret. This allows U-Boot to read/write files, print to + the console, and execute arbitrary commands on the host system. + + Enabling this option will add support for reading and writing files + on the host system. If you don't have a debugger attached then trying + to do this will likely cause U-Boot to hang. Say 'n' if you are unsure. config SYS_THUMB_BUILD bool "Build U-Boot using the Thumb instruction set" diff --git a/arch/arm/include/asm/spl.h b/arch/arm/include/asm/spl.h index e568af2561..b5790bd0bc 100644 --- a/arch/arm/include/asm/spl.h +++ b/arch/arm/include/asm/spl.h @@ -30,6 +30,7 @@ enum { BOOT_DEVICE_DFU, BOOT_DEVICE_XIP, BOOT_DEVICE_BOOTROM, + BOOT_DEVICE_SMH, BOOT_DEVICE_NONE }; #endif diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile index c48e1f622d..594fc1228a 100644 --- a/arch/arm/lib/Makefile +++ b/arch/arm/lib/Makefile @@ -46,7 +46,7 @@ else obj-$(CONFIG_$(SPL_TPL_)USE_ARCH_MEMSET) += memset.o obj-$(CONFIG_$(SPL_TPL_)USE_ARCH_MEMCPY) += memcpy.o endif -obj-$(CONFIG_SEMIHOSTING) += semihosting.o +obj-$(CONFIG_$(SPL_TPL_)SEMIHOSTING) += semihosting.o obj-y += bdinfo.o obj-y += sections.o diff --git a/common/spl/Makefile b/common/spl/Makefile index db8fd36a26..e71e7bee66 100644 --- a/common/spl/Makefile +++ b/common/spl/Makefile @@ -28,6 +28,7 @@ obj-$(CONFIG_$(SPL_TPL_)USB_STORAGE) += spl_usb.o obj-$(CONFIG_$(SPL_TPL_)FS_FAT) += spl_fat.o obj-$(CONFIG_$(SPL_TPL_)FS_EXT4) += spl_ext.o obj-$(CONFIG_$(SPL_TPL_)SATA) += spl_sata.o +obj-$(CONFIG_$(SPL_TPL_)SEMIHOSTING) += spl_semihosting.o obj-$(CONFIG_$(SPL_TPL_)DFU) += spl_dfu.o obj-$(CONFIG_$(SPL_TPL_)SPI_LOAD) += spl_spi.o obj-$(CONFIG_$(SPL_TPL_)RAM_SUPPORT) += spl_ram.o diff --git a/common/spl/spl_semihosting.c b/common/spl/spl_semihosting.c new file mode 100644 index 0000000000..df6aeb2951 --- /dev/null +++ b/common/spl/spl_semihosting.c @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2022 Sean Anderson + */ + +#include +#include +#include +#include +#include + +static int smh_read_full(long fd, void *memp, size_t len) +{ + long read; + + read = smh_read(fd, memp, len); + if (read < 0) + return read; + if (read != len) + return -EIO; + return 0; +} + +static int spl_smh_load_image(struct spl_image_info *spl_image, + struct spl_boot_device *bootdev) +{ + const char *filename = CONFIG_SPL_FS_LOAD_PAYLOAD_NAME; + int ret; + long fd, len; + struct image_header *header = + spl_get_load_buffer(-sizeof(*header), sizeof(*header)); + + fd = smh_open(filename, MODE_READ | MODE_BINARY); + if (fd < 0) { + log_debug("could not open %s: %ld\n", filename, fd); + return fd; + } + + ret = smh_flen(fd); + if (ret < 0) { + log_debug("could not get length of image: %d\n", ret); + goto out; + } + len = ret; + + ret = smh_read_full(fd, header, sizeof(struct image_header)); + if (ret) { + log_debug("could not read image header: %d\n", ret); + goto out; + } + + ret = spl_parse_image_header(spl_image, bootdev, header); + if (ret) { + log_debug("failed to parse image header: %d\n", ret); + goto out; + } + + ret = smh_seek(fd, 0); + if (ret) { + log_debug("could not seek to start of image: %d\n", ret); + goto out; + } + + ret = smh_read_full(fd, (void *)spl_image->load_addr, len); + if (ret) + log_debug("could not read %s: %d\n", filename, ret); +out: + smh_close(fd); + return ret; +} +SPL_LOAD_IMAGE_METHOD("SEMIHOSTING", 0, BOOT_DEVICE_SMH, spl_smh_load_image); From patchwork Tue Mar 22 20:59:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608366 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=R6F3Wvx7; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNPCr1VyJz9s1l for ; Wed, 23 Mar 2022 08:06:00 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 4E9B283B67; Tue, 22 Mar 2022 22:05:57 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="R6F3Wvx7"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 0790083C8D; Tue, 22 Mar 2022 22:00:40 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on060a.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::60a]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id B3AB883B94 for ; Tue, 22 Mar 2022 22:00:19 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BnJqx0UL4bxBz23o80NLfxM92M0H8U5CYIlmS+S/jJZHDuVD5hhz29jfkxtzTTBpLzVf/qAy0EuSv78s00riU/prRqvj+Ae/v3Z/XMpBc6oRtiqZdP0ijnY3IM3gkyYCY+PteaP/SOdSm4dk/sT2AeqkY+lEk0AVExF9SzJz3LQHl8grChKY7hgtHsOkGNwXw3kREuWflhQnUAYy4Vpvp2MrFbqDWD7IMlrizPTO/uPu5UEC7pFbKSZQHAuN9A++TQtl6BFz+Mj9QAWcVTgH0y1NAavSEAGqNRQIKY5z0vS0THbIZZJZVHQuaEBzuGS9ZJo914dgqFADYL9JT3DBLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wSki84NJm7WDOqgsdGnBJ9JWjIQvvlFMPE2l7KB+n+A=; b=OubyD/svhSFeWI94QpBfdW0vnh5tp2buiJ6m4OfaIRNFnhj/WUwqWVSHXWtDfeoHLNR2CVcfCiRrU7rhGJCv4zViL56KIFdmorxC5lHUPZGd9OK0fVy/6BVy6KToB2hmYpq1hlDHMQmh+thBqQdv/cXpluoKdCI57OkWoTny4OgYULYNOVX2InoRoi62svpSrefAWxZSkKgvinMN+Xse9GpkdYxV7T/G2Me5QfcUqkC8ewS+wDsC9D3daRgchQLL/1vSXCLTQzF/+C15mNmYzp/JSGIy3AbpZL0ejrRwR2POE+9M/vRoVSIkdDnIwOQ4y7i1v9iPfxIGYOllSBOh9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wSki84NJm7WDOqgsdGnBJ9JWjIQvvlFMPE2l7KB+n+A=; b=R6F3Wvx7p3cirbghHzAaOUlm+pCjadgDr9ikOBb+Lfa4hayv4BnAnd1WrLTIFsfJ46CEjvzuYJSjDY110RF1ERgw2K3DdR/v3qzCE03/fWj9g9gR7hNYt7SLwkty8YMF2mYPdp93IjRu/CEYZGFSVqcltPEFTKlEdcwB+p3PskJNpaMYe5FZsH5pWCuVyDXXFSM+VqhcLy0Qyrjgn5YeY78uwVZYazljwdV6YSd9y68nwYx5ZEvhZ6SV8u7TzNH/FitkBj9OIDYxtkp6d+N2orURWmO1SrwjCyMeE1eIVV4gOih7eoGP7fv9teR31ZAfmEc/7z4h2+uHabtT5s12aA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:18 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:18 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 12/29] fs: Add semihosting filesystem Date: Tue, 22 Mar 2022 16:59:20 -0400 Message-Id: <20220322205938.1721846-13-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1f4144f9-1377-4393-a54c-08da0c46f894 X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YWUUFvYrx5ANSRjLM9dW0AkVOmKcPPQvIVr9dZ2PwbpjDy1lbbsgJpMAbyksaARQON/dmgAXdQE5EKwteZtFFB2d9EqK4Vd/evhNQylJDTqdHcUJmkCVxTsj3bXNEEuYwlkNefQ3fSrejGeky2CtQfJDtWJJ970Ieq61CjUqzE4JTNWfatRrKcuicPy92eYSqgyIHE4p5Abs3iCP5RI44JovFzj8nMcGkjXXTUxuEMI4GczGf3eap9VIeBGp1AILjD8guWRj/fgRt1cIEOqJ/mxhdmpPt1BJ+uTb5Ejr6mcYW/VFijISDYFssXMqv/joPQUP6RGivfk7hf8zelZqvEBK2qdWdXkU/kR0TrXQxEbPq84vRCgIw2l5j0rE/79zDNa6RfgETFSJCg9kAhRqBXCVqH7GxU++JRGIhYlLW3Csw4AuQCCUfqGMI0v0ImeM04BczYDbMXeo7hqGQeTgDguv/N6lef9g4E5uFwcBURQI9lgSSoeBwByFSOFYv62vMT3/AwFv/KZXK3jQwFXSibyDoNrKjH5TrwdNLxWEpaOcUTfA3qc22reOYvjq4UYD9IxE7u7AN/pCejTKCuG/qCmMicwnEmhx1JIw3a4uYTHGZU4Cp5OAEmLQMUpDuXxGpariCKbK7+PPmuf63eCJY5m4bcDzb2uECAk8RhUVaGQhia1gd/lZHgQ3cq2NRNNBRp1ZBRs27zZNwMGfa9pPahCfzSMQ+xz8QuZUbod/gJE= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(2906002)(508600001)(66946007)(83380400001)(6486002)(8676002)(66556008)(66476007)(107886003)(4326008)(1076003)(5660300002)(2616005)(8936002)(54906003)(6666004)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(6512007)(316002)(309714004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: dySgawct9Rd/XtG96qrRh7jMmplqypZZq6sXC/1GoJVCF3LxJUKo7gn7tvE11PvUoL6lFI0y0TxH7XkfbB69IPJWjaNIfQjx4OwBDaIHnz32zVlOK8+SSqZ7fx/QNpL+/7JjOwzJL0qHDJhWY5f9bqumZExnXvHKusdD8lZ867NyWVyeajjKl7RkD46iazoCisHbkQ2nPdgjQjV45/Nx+rxFxsFzPWHyzCFGk/ZWjY/JzbKnM/YTeypnKoBaPOp+y6fbt5jUY98sr1Jvky0WU+AZMgPYO1pBgTM28sx4TcGp9pNVHhz8dBBn0ZwKbH7nNSX4rETBqM0AlWG8tbBDLshkEwZSJ4nXJ7afvRnaJCblus2jiFnQDX83YwvYGl4UQfx/AuevECrrV2c9lTX3sV+MSDQlONoy8lf6DYEQyXWD6+hk9c4jY5U9iO/icTFYkVKXbaazVxqBZtsX1nGrJvlPjg3FbsvXrSt4wUUdIQ5vyS+fBgySRZ34XEMmbDahtnCmwPgmppcxFNSSxglAflCgbWVOFXqvosveW9JqAWE8Qv4x+Wb+fSvAsEqhIIiTrQr0xETaxJqYSrvHNUOCs2uxL+QMKLM8dPckJevsIBXyOPmbFe0Uf7BNa0HVZ5xdS2LRnESETdqDSG+mnZMsi+6vO7x2rSFXImYkT0mGfX0CN7EWtwaoeI+nDfSJtFVonLg8KsUpwke2FzZv8/CkTLao0S7U4g/fHOfwm3OwLPhXD+E+l061WGM4kkLEoncP4IeN6p2GF9cDH7D4VMRz9g8FdkvpfTnTXbAoXlgyqxfnl8a8nIRnS1vQoUxmyPB3kMWKV2nAOeoxwVQvV74D6WVUpo5Zd61eb+LeJK4/tf3kw9S7fYGX3Cb+JciD5DC/MIgBjWmpi0x8QWZZ4O8UyHTq91CFJxmbItzvz7ocCydJ8iOxm32+ytasp/DX6Nd5aTw/RRKTXTNVB0hZEOsPQLVueLfX98Zz1qEXQIXwSOe9eK/kPnk/HkNjjtgu7mJ6UXXqh1YWJ7MAEr2O3JyNvwtwdOIyt4Hg5ZohMY9X3ZNZwIh0GHHZAw+WeyOREB8Pg9b4NiTzcoQ5XPvl53xvX4XN2WuQR9qNPcrjVD/6qAVB0Hz3Fr4b4oQqVsB14WQKS5iTxjeA3uboUwwjSCNy+OIj39iVVe+4rp9LD8FRSMTs5yull1C/IytNNqy10CM6ORTDzptL5PK+hSfpAwyL4snNssnItwtMpIna+iONeeFxO7nLtDj2s/ivxgOleyz8kwFwet3flvbzaGtz7/6jeR18L7jAMX7hErm2/8PAAO3uxuz+EDJDmHIPpZOlmiomoDlu0oQJ8gvpZlS/ZoSI8Vk7DeqqeVPDeeDA31p4rRhGFUucAXStaVGDqPcnnrELdkHvWcY6DCiLaVA61Evm67pwW4YU1T+2+tz+2WhTttVzNegDkbK/Juorf/4AIoiIF2Qw1mhckGk+O7/8h3fPRg== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1f4144f9-1377-4393-a54c-08da0c46f894 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:18.5331 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: pgsg+6P0F9/RUn73RwU/ERYbm+fjisOS3yuZXKVlQdRMdqi/X1Aqrkhm6W+6pEdqmPAWlfasy5zgXcT8aQfUSg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This adds a filesystem which is backed by the host's filesystem. It is modeled off of sandboxfs, which has very similar aims. Semihosting doesn't support listing directories (except with SYS_SYSTEM), so neither do we. it's possible to optimize a bit for the common case of reading a whole file by omitting a call to smh_seek, but this is left as a future optimization. Signed-off-by: Sean Anderson --- (no changes since v1) disk/part.c | 4 +- fs/Makefile | 1 + fs/fs.c | 20 +++++++ fs/semihostingfs.c | 115 ++++++++++++++++++++++++++++++++++++++++ include/fs.h | 1 + include/semihostingfs.h | 21 ++++++++ 6 files changed, 160 insertions(+), 2 deletions(-) create mode 100644 fs/semihostingfs.c create mode 100644 include/semihostingfs.h diff --git a/disk/part.c b/disk/part.c index 49e39a24e8..b95405bb49 100644 --- a/disk/part.c +++ b/disk/part.c @@ -455,7 +455,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str, int part; struct disk_partition tmpinfo; -#ifdef CONFIG_SANDBOX +#if IS_ENABLED(CONFIG_SANDBOX) || IS_ENABLED(CONFIG_SEMIHOSTING) /* * Special-case a pseudo block device "hostfs", to allow access to the * host's own filesystem. @@ -467,7 +467,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str, info->blksz = 0; info->bootable = 0; strcpy((char *)info->type, BOOT_PART_TYPE); - strcpy((char *)info->name, "Sandbox host"); + strcpy((char *)info->name, "Host filesystem"); #if CONFIG_IS_ENABLED(PARTITION_UUIDS) info->uuid[0] = 0; #endif diff --git a/fs/Makefile b/fs/Makefile index f05a21c9e6..4bed2ff2d9 100644 --- a/fs/Makefile +++ b/fs/Makefile @@ -21,6 +21,7 @@ obj-$(CONFIG_FS_FAT) += fat/ obj-$(CONFIG_FS_JFFS2) += jffs2/ obj-$(CONFIG_CMD_REISER) += reiserfs/ obj-$(CONFIG_SANDBOX) += sandbox/ +obj-$(CONFIG_SEMIHOSTING) += semihostingfs.o obj-$(CONFIG_CMD_UBIFS) += ubifs/ obj-$(CONFIG_YAFFS2) += yaffs2/ obj-$(CONFIG_CMD_ZFS) += zfs/ diff --git a/fs/fs.c b/fs/fs.c index 99dac0fd79..c3a2ed9754 100644 --- a/fs/fs.c +++ b/fs/fs.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -247,6 +248,25 @@ static struct fstype_info fstypes[] = { .ln = fs_ln_unsupported, }, #endif +#ifdef CONFIG_SEMIHOSTING + { + .fstype = FS_TYPE_SEMIHOSTING, + .name = "semihosting", + .null_dev_desc_ok = true, + .probe = smh_fs_set_blk_dev, + .close = fs_close_unsupported, + .ls = fs_ls_unsupported, + .exists = fs_exists_unsupported, + .size = smh_fs_size, + .read = smh_fs_read, + .write = smh_fs_write, + .uuid = fs_uuid_unsupported, + .opendir = fs_opendir_unsupported, + .unlink = fs_unlink_unsupported, + .mkdir = fs_mkdir_unsupported, + .ln = fs_ln_unsupported, + }, +#endif #ifdef CONFIG_CMD_UBIFS { .fstype = FS_TYPE_UBIFS, diff --git a/fs/semihostingfs.c b/fs/semihostingfs.c new file mode 100644 index 0000000000..96eb3349a2 --- /dev/null +++ b/fs/semihostingfs.c @@ -0,0 +1,115 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2022, Sean Anderson + * Copyright (c) 2012, Google Inc. + */ + +#include +#include +#include +#include +#include +#include + +int smh_fs_set_blk_dev(struct blk_desc *rbdd, struct disk_partition *info) +{ + /* + * Only accept a NULL struct blk_desc for the semihosting, which is when + * hostfs interface is used + */ + return !!rbdd; +} + +static int smh_fs_read_at(const char *filename, loff_t pos, void *buffer, + loff_t maxsize, loff_t *actread) +{ + long fd, size, ret; + + fd = smh_open(filename, MODE_READ | MODE_BINARY); + if (fd < 0) + return fd; + ret = smh_seek(fd, pos); + if (ret < 0) { + smh_close(fd); + return ret; + } + if (!maxsize) { + size = smh_flen(fd); + if (ret < 0) { + smh_close(fd); + return size; + } + + maxsize = size; + } + + size = smh_read(fd, buffer, maxsize); + smh_close(fd); + if (size < 0) + return size; + + *actread = size; + return 0; +} + +static int smh_fs_write_at(const char *filename, loff_t pos, void *buffer, + loff_t towrite, loff_t *actwrite) +{ + long fd, size, ret; + + fd = smh_open(filename, MODE_READ | MODE_BINARY | MODE_PLUS); + if (fd < 0) + return fd; + ret = smh_seek(fd, pos); + if (ret < 0) { + smh_close(fd); + return ret; + } + + ret = smh_write(fd, buffer, towrite, &size); + smh_close(fd); + *actwrite = size; + return ret; +} + +int smh_fs_size(const char *filename, loff_t *result) +{ + long fd, size; + + fd = smh_open(filename, MODE_READ | MODE_BINARY); + if (fd < 0) + return fd; + + size = smh_flen(fd); + smh_close(fd); + + if (size < 0) + return size; + + *result = size; + return 0; +} + +int smh_fs_read(const char *filename, void *buf, loff_t offset, loff_t len, + loff_t *actread) +{ + int ret; + + ret = smh_fs_read_at(filename, offset, buf, len, actread); + if (ret) + printf("** Unable to read file %s **\n", filename); + + return ret; +} + +int smh_fs_write(const char *filename, void *buf, loff_t offset, + loff_t len, loff_t *actwrite) +{ + int ret; + + ret = smh_fs_write_at(filename, offset, buf, len, actwrite); + if (ret) + printf("** Unable to write file %s **\n", filename); + + return ret; +} diff --git a/include/fs.h b/include/fs.h index b607b0028d..e2beba36b9 100644 --- a/include/fs.h +++ b/include/fs.h @@ -18,6 +18,7 @@ struct cmd_tbl; #define FS_TYPE_BTRFS 5 #define FS_TYPE_SQUASHFS 6 #define FS_TYPE_EROFS 7 +#define FS_TYPE_SEMIHOSTING 8 struct blk_desc; diff --git a/include/semihostingfs.h b/include/semihostingfs.h new file mode 100644 index 0000000000..25ebdbbeff --- /dev/null +++ b/include/semihostingfs.h @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright (C) 2022, Sean Anderson + * Copyright (c) 2012, Google Inc. + */ + +#ifndef __SEMIHOSTING_FS__ +#define __SEMIHOSTING_FS__ + +struct blk_desc; +struct disk_partition; + +int smh_fs_set_blk_dev(struct blk_desc *rbdd, struct disk_partition *info); +void smh_fs_close(void); +int smh_fs_size(const char *filename, loff_t *size); +int smh_fs_read(const char *filename, void *buf, loff_t offset, loff_t len, + loff_t *actread); +int smh_fs_write(const char *filename, void *buf, loff_t offset, + loff_t len, loff_t *actwrite); + +#endif From patchwork Tue Mar 22 20:59:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608353 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=0q3AB0Wu; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP8D4nYSz9s1l for ; Wed, 23 Mar 2022 08:02:52 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id CF2CE83C0D; Tue, 22 Mar 2022 22:02:12 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="0q3AB0Wu"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 432F583BE4; Tue, 22 Mar 2022 22:00:47 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on061e.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::61e]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id D5EC283BC3 for ; Tue, 22 Mar 2022 22:00:20 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U03vf3zfcXiaz39tasYU3DGinjlEOVtcnEtyKzXZO5m9jbIBj5whLOeYhqThU6Y9OCz0N299D6aFbzhKiO1yvgkIRYzmQRifs+43s6Mtf11meniFV4YLeV0KP67LMgldpvB3Amd5jn8DkkO1LkbUXmr0630+c4SBZjpVgNL2DVEm790ung4FHoTcIGlP5hXr1uY4mW6Woy6G4bm4HfgRvA2b6GPzGY8P+KEdDfrsDepw6zZDWuwri6jtnGSzvP3e1cUqEUHZUTgkKXpxDTIAgLSW2/dWn8aNCk+htVxGfT4hnMCC6X4JOdVggKUTa6QiuYAdF41NOJ/KrWquUNQpWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0KJdwOl2WaQA7zYs7OtBwMdA/cBvZBH16m4gyZ0J7/c=; b=TltCRtCYFrYwks2lUeihYahf/KVf8PN3M/Dspn9l6npp58S8oIAxyETj46LEP2q7HdO9hWDHKQg3KaQvonKZaubFHG29bKrdKjUK98qf/8yNpNnT4OapmWMJaq5hlxJR1GClzI7vXDLLBcyVL4VxX6gt0UPRQ2eu83WD6u2wsZQGxfZAlMhWheYmwBwm21JSCBz/Eaj7/jDs2i6KF1qKEurTx7bwgx6VBvD3SOgXPej5CgM+ZJs7CkUxdInxTzFkLl7G5SUMU5DzqU3GwL8sm8qkHpIEZ1w6UZQq5DIjrJ6D0nu6zt6TW/+cvvpXNG1aIiJqzyVV7ZIZh6YGoH5juQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0KJdwOl2WaQA7zYs7OtBwMdA/cBvZBH16m4gyZ0J7/c=; b=0q3AB0WunbS9YPp65vTstxb5h0GB/Hkkngcp86CsOGJK0biui5cF884Nany8ACUJ08sIQ1i8VEavQalmXsePvw4uXyj5jvuZGJF3lzeu1IgSsZ5mJH0reUJ/dBeG/YCSEA1N8kwHfNnA8mn2D9pSGOjdPTNbdVLwYtRF2Y16bEa3/p3tkQRapHFj+V8Nk4XyuG/R13h6FAvBthl29AINLINzYxhF5BQk9vdnVNH3MKEALp8o2mPK2X1uu1ctgjC/Zyq//cq4ARpOWt+k0xEvNwtT+FKdOXT2zQQdxYAmppIc/D8q7V+XIsKYhCzAAZfaXkHlRnrJAHkqVDNXpziuGQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:19 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:19 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 13/29] cmd: fdt: Use start/size for chosen instead of start/end Date: Tue, 22 Mar 2022 16:59:21 -0400 Message-Id: <20220322205938.1721846-14-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 10b2e8b1-d137-4e10-8514-08da0c46f95a X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TNgc6e1IkS0OFdFYmKjn2dBLCiN29o68t7QRChvikdnLnYY9sG+ws6D7zQQ2O8yK4YdYOBmPcw7PTBRNipBbqN6bZpE5fSckYfxRgVulfbB+pJjtWJQedTW1A5x6wL0CJtRsze1scXNjhPnwM5QxvwNqHh4Uydozh+l0kzuCxfNK9fJadNEuwlGU4+zSxi2lNEayXowwP5vlCyrCzzhPrTU1bqWYYc223iKvSsa2zmhljvcpu1WA1OjRHLSaKoESisVNmnuTT9NDBC8LbucSJwxkIFKiQEFsGnD+RFkHXtpn/tkD9xM7PbRXQB+MIFtmfsnSjpVvsv/8STi+GCmyy0LO5EfMNEE2ix4oBsVY7Aj0T/0UhOYiAS1+X0xgqHfq0o2Bu7cFlxFrjJ1w2cHcu7Zn4HXr0ayG0osoCWmkjNRVXy8PdN6KdqulAzTHmufObbMAZHv/ZKp/vsdTKEoOUW9CMS/b5UHCV9kVm15R1dpzdIPyqLL4gz99tN5Wmrxk2TPamaMhfgXoXAmpOs+q3lkojby4jQDU/Pb/NFBFyC/hBLrkoumYZOhyzSkA9xetkGKtHMLx4OH/ma8xk0+3PpdJPsKeEgzne1+WyVtVGSUARxs+MH+2z+xwoiUZ6RPB82qIGZ7i5izhZ2wNU1EYlsPLIYxU5VXmxQodyINSwg9goQ41rDTJiOSnySYKdlAojWQaWvgwpx/LhioVZsfV3w== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(2906002)(508600001)(66946007)(83380400001)(6486002)(8676002)(66556008)(66476007)(107886003)(4326008)(1076003)(5660300002)(2616005)(8936002)(54906003)(6666004)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(6512007)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: P4JrRV2rL2f/IEHKfY8bypHOmHsOVlrzC9IQOc4wzB6uMtcI2DSR70Y4UCfPo8MrzjGftAJGJqprrMcD6fXGA9lJlzZqvsHR5fhgPx3SyhRc27Rb8lECln2AELA+Mhg4xwF5H/lEOeRyiSA1i2qLORuK3nxgM7E/9qTQDqh73rhBVnc1oVj+HWRUbCHFL+o24au8Q2SPBHsQHxDcjtqPI3bOw54Ld7TFUTdscA1RIHQEiOs2zBvztbUpoylmkawyPRwgc5RRSGbOB20rts2O2XbMb9gB34CZpPHNsZYjqzydFy8MudeOU8FTNKvmSIxA36a3MfI7jicbB+zFTlN4CetE1WiVlzmXIx6Zql2wDp4WKyGWyCveotjwk3g2m36EJKMSHtn1Wu+6yI4dR+qncw3FyqEpibcwpZwILUMmEdFSqsS5MUclo9GdbNVv+szbNtuFc9ohf0fgso7blqHAVOdqHito7VdkiAFKus7n3wYUr1R0iKiOEBif7qBLTx8uFlqTriWDrGivyvFken8d3zMI5JfZeN9I3dU9T/5q9E6GBmNCwL0dpur3AVf2x+0a72/Y7BW4OfhjmA9YU/YZLIWZfooMbDEx0rrIjgzfLgmae1tqnHP7vSHNWKsWIGcruK4F9Z/mgW9xx3vI7ZMJs9mYwxBC68WomcHTDcQ7jhegwy7crS/HlFKmu+V3ezhAxrii6jmBWFqMlFSj0KgapRRQEvdSGKZbHLM15xPUvVpJjpC4DETAn2nYH2lGUg8EflKa6dQYE7ilVaAb36kGzwrTsbj43WmC2JyLKY2Rq2ImSiUrm6uLFs8EWLQNe9rANdMj0ukwOLHJr3o1UZBQg373/VgdeS1qI6+sCY+sD5H4LOJixU1h8SSUwaZ2PVgtFC7Ac1W9EnCFOQY9Re8X9UT/p4pxmO4N+WGxV92LdpjHp0FmuInP32bIAtOm+/fI5MKVktg/QEZj7LyskHLK4ZqQvC9tZEFywmaoEKezMjU0OUuPsssDWaGYuPT8nL40k20bh47PrDvGStlggCXzbj1pldgDk19IS8h1y5DzB8zusQgat22TBpewH7LpLMriQrJuazeT39Ywzpr2pRjVbIwAKk1qcTFjmYyHP5wkOgWYrIDyyh1uaftxDbjwvEwPiKPKLutrZ0gCj/e9gEYN42inTDWdKKl2CqYyr0/Uiz7oxnJLW1l4xVOh+Oqe0fYqtH4w8wC8p3GdSs4342914/fy4JfIgAJXYete2PpYB/63zJHHmdhaiRLTGHNY43Zur31/7tf7hOGQ445IjeCO6DjKyFOmVBrwjfn1Bk9A0QKXJa2Gm85njDcvxj7cQjYW2xKzUpcPRcQg/wyXQVx+yaxtK16BQHXQHGRro7ZSbJhnPE4trAXPFibOD2nJUfKkLLBQJ9KmShwB4TevVJZLeasDxTJc9oasIiOuJA83a3p2qyHdxxAc6RmVCY+fstw8IUAgLCgjQgg7IC9hKz3hGw== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 10b2e8b1-d137-4e10-8514-08da0c46f95a X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:19.8299 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 2oXw0hTxhfwZq0s/NgGUfU8O7Xerat/f4JcgUwHdZyTizp3NbK4WbSVtlq7R4GqtaTFoFJAh3pwornG/fPcsMA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean Most U-Boot command deal with start/size instead of start/end. Convert the "fdt chosen" command to use these semantics as well. The only user of this subcommand is vexpress, so convert the smhload command to use this as well. We don't bother renaming the variable in vexpress64's bootcommand, since it will be rewritten in the next commit. Signed-off-by: Sean Anderson --- (no changes since v1) arch/arm/lib/semihosting.c | 16 ++++++++-------- cmd/fdt.c | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c index d08003cef1..45cd566cfc 100644 --- a/arch/arm/lib/semihosting.c +++ b/arch/arm/lib/semihosting.c @@ -171,7 +171,7 @@ long smh_seek(long fd, long pos) } static int smh_load_file(const char * const name, ulong load_addr, - ulong *end_addr) + ulong *size) { long fd; long len; @@ -191,11 +191,11 @@ static int smh_load_file(const char * const name, ulong load_addr, smh_close(fd); if (ret == len) { - *end_addr = load_addr + len - 1; + *size = len; printf("loaded file %s from %08lX to %08lX, %08lX bytes\n", name, load_addr, - *end_addr, + load_addr + len - 1, len); } else if (ret >= 0) { ret = -EAGAIN; @@ -214,22 +214,22 @@ static int do_smhload(struct cmd_tbl *cmdtp, int flag, int argc, { if (argc == 3 || argc == 4) { ulong load_addr; - ulong end_addr = 0; + ulong size = 0; int ret; - char end_str[64]; + char size_str[64]; load_addr = hextoul(argv[2], NULL); if (!load_addr) return -1; - ret = smh_load_file(argv[1], load_addr, &end_addr); + ret = smh_load_file(argv[1], load_addr, &size); if (ret < 0) return CMD_RET_FAILURE; /* Optionally save returned end to the environment */ if (argc == 4) { - sprintf(end_str, "0x%08lx", end_addr); - env_set(argv[3], end_str); + sprintf(size_str, "0x%08lx", size); + env_set(argv[3], size_str); } } else { return CMD_RET_USAGE; diff --git a/cmd/fdt.c b/cmd/fdt.c index 2a207bf2b5..7d7cae88a2 100644 --- a/cmd/fdt.c +++ b/cmd/fdt.c @@ -638,7 +638,7 @@ static int do_fdt(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) if (argc == 4) { initrd_start = hextoul(argv[2], NULL); - initrd_end = hextoul(argv[3], NULL); + initrd_end = initrd_start + hextoul(argv[3], NULL) - 1; } fdt_chosen(working_fdt); @@ -1083,8 +1083,8 @@ static char fdt_help_text[] = "fdt rsvmem print - Show current mem reserves\n" "fdt rsvmem add - Add a mem reserve\n" "fdt rsvmem delete - Delete a mem reserves\n" - "fdt chosen [ ] - Add/update the /chosen branch in the tree\n" - " / - initrd start/end addr\n" + "fdt chosen [ ] - Add/update the /chosen branch in the tree\n" + " / - initrd start addr/size\n" #if defined(CONFIG_FIT_SIGNATURE) "fdt checksign [] - check FIT signature\n" " - addr of key blob\n" From patchwork Tue Mar 22 20:59:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608354 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=VuE9/1Vp; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP8Q6Sb5z9s1l for ; Wed, 23 Mar 2022 08:03:02 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id E0A0583C07; Tue, 22 Mar 2022 22:02:16 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="VuE9/1Vp"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id C708B83B58; Tue, 22 Mar 2022 22:00:43 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0608.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::608]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 79A8983BE6 for ; Tue, 22 Mar 2022 22:00:22 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BFmefidAG8TBFgtjIhZq8wrdO0AIMIKTVHgKRzbVrK82xVJvaUSfypWB1FcHJNKqVmRYctyVw/z8qzvSlggRbswCIbmBWwr3xdOqolZHt0dVT84zMbT6sK7Ffy7U5TZeq2mj/seiwqwVlL/3CnYrUtFMQ9/SX9XIkMlmeJD1oNfZN+/seFILmnbLCNwvoropiJSDrDNtZlqqp1nJW3RrlkS6Fb1HnXdJIlBmKPuIQkXp8cjxv8Sz54ZG542DyvZ5s8uHogY9dVcGlhp3YJfL/ZgJvHqykuqY00FUsNUN5d/tFgOMEplEUDzJMwQrL4PVTjtwBnphpOa2f7r3uMPiMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xW8NPc8kGHO6DbjN+2L9upVV801nSQPQCJ/A0K9+mBA=; b=CHZl60YrPxXPvk18ncwHRH2aeAXMZeItXAcEz07LguzJI7C4PH/1S/XAakVFg4JmeBEd8cPw4UIRauISO49Z/HFtieZbFRyt3ovK0k98IzEBEjbMwljl52K6btzLqGH6Fk5xlFMWFw5RcPe/0pZW8U3T39JIqznV2AZJTuD3iBgORzvtluY7hduyWOWTvZq2J2sEA7t+DNuKVSmttqeCN2vwcHFtnZGfmHQcXTHDapzjTy+zt8MboHZxCLUEzJktSyCh5XUEs9D5IBkXHVCWAh5sziJhi442iI06xZBzhdXYynJ6ZCD57XlyoMbzVpqVz2urTSKg9xzCdb9wVfBeRg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xW8NPc8kGHO6DbjN+2L9upVV801nSQPQCJ/A0K9+mBA=; b=VuE9/1Vp4122Dfe1VaFKLy6pBQsFNV30soTKAzL8rPMfVnLhXfeN9fUChrQxMDtHKAqbSGhhNdjiC8qN6xVFRW3NkBNMu2kKg9+fzmsA+hxumyomOpBxQl9iSKMgLfvWFWHyFx44H9HbMYBmoZKLlEZin5kZq+xvv93XpKPnvLdgilbWwqTHbunz3SWdPMCboZT44TDkj8Dmu6UqYRZVwWvE2n96K3aUuLPrBAS0HwgGtwh2Z4kBxm7O8P9kbHaKttbT/e/DyffibLpezEjHTuDUAVWt/gTd5QqJ+ESksP/18uCGXfPdns2jVY7UT0SiOKEimGRxKK7RzVGQk7nQQQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:21 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:21 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 14/29] arm: smh: Remove smhload command Date: Tue, 22 Mar 2022 16:59:22 -0400 Message-Id: <20220322205938.1721846-15-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 74e0df78-e55c-41f5-b4a2-08da0c46fa0f X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: W86Wb42UANwbn8+7S8BLfbxZuFu4W6yOf7ksJxz+V45Kn0Hftg8vIRRI5lX/CSweY9uVqanoVsfsKkR/Vwevbjx1FcJyIfkUDOUWotJmntVyK+riVsSx5xe8KpIwYg4y+KnKeE3Ut21+A8Ic8hPC/SeTLcjieSIgHQV+OunSjYz1q09hs+q7PAo4tl9km3AbWtdT2BtNW589fhFgRFZLSNHoDjSEk420wA+nHN9zitqUGQ9AXGq63mOYSCw84MTacZf+hZrw5j4SztUXEuu/xd7MyTbibzugt7rKvXwgILzGmPmzQEIo/XvFcZyPQopKw1wauSpio/w4onnBuAM9DS9L+JFZLpWiCDrcO938REu3RCdsdDTdEf+3ueHsfnpXKem8/UJM8xiDpEzSFEOwFDFS57FINb1WL+so0Va2Ac5xThFjdWmRa/FeEgc6BPJFjEHrov8RtBLAHARm1a1mbcQ/JxdlwZr38oGuXPdpLkeuMNlle80uayLoPWD2ED0nPVTwtFPUmQQV61q6HjYfFzggRShKdu11YcWdVZ9VV1RKDVrVUoALKNltZsFS6k14fHomIFGXYHfftSZoYicnyEU1IOOZGinUqIZ/HcG95doWSX8EWh6V+nmPQMgcyjAfdEZeVF4pIFO4N16nY/ORRx7aZZDJctj+FyPu8FLAC3IPVNBVWimBW03iAf1rvkVju1ljSv1c6sNL6nGXo8AAAQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(2906002)(508600001)(66946007)(83380400001)(6486002)(8676002)(66556008)(66476007)(107886003)(4326008)(1076003)(5660300002)(2616005)(8936002)(54906003)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(6512007)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: H7aHrUiheyG9iFSLUEflsVf6j9LjfOTOn+PZCWfkWsuJ7t/qv5SkYFaMksouZf08AGDDTYY4mynZ4j5MsXM974Ih6Fs8/WKpUbsrcAtBUnZvzicchorPQwfk5iiCLBDhA58XtRmiUDg2LzNJQjNH3wPIdSzA5pBwICRgmS4kzCVt754A84twvWc0LfBneq1OBHwD8oyz5x0dUbCgEgPypN4gV4Imh3GMOOgvl8DQslx8XGFzHngOeIv15x2OLR/rZxetfvck6YkdSokeVwL6Aig+Gv3RziUsqcYUbmvqMzdT4H0S7mkODImDfr9+rLJ84FQZaKHEQsAj7tP7mjUiQ9Dk4pBQs6wbsqAkvqqTujgyOxMxcm5JZJZCkt9a4omO80Je+BuVg3ULVjB0vbSO14bbvK2Fv+saSpTO9JqN3Lia+5xaF245quDTlaFOcYAl/kIm7LeyleI/TOa0xca6PnmNR3rAjsN+NIDutP+Iu5KTyxR4jVyz7sI0vuBJ8LyG9ndaWV1WXHlUwAyQTzv7JaGlMtkbomitz2OpuXeT6/070MUqHypHuMUPckZk/ohytqcufR6GZsgLLpOd0jd/GN9l43qLNErli2E3VOeFU2pfkB2jR+bPTF5pFerxzBCdJIgPrGHHU/kdEwBmUJZcZS1pnPo6O4YIAaNhWmJoMZ6UN8Zopu6Cz0K97vxIRpkIWX3gqmx7g+nTSXon+ZiAGgfT82MwAlmvulo8zwNzOZ4JAF46Vf/I7z9qP3k67Njwwec1Zo8eeMzPOGBsefuCKHfHXYkERPQXbQufamRWfa4Vb5dhP7J3oCV340pS5XhSm88X1HyyEJ3Bn+uyAB5I+AJIFQpPBxXkNwgE9JGPkmg7oZT6qIJgEVgc1YtRp6TpCidvxyxIByiF0LuF8SeZMnhNlTDj4b4LAIRZh2iS6ucfnFlkOtqhbeJM9fH0cwrSo1F4ftOjUSysNEbmw99KjcA6Tiu3WpqxM/Fds0p4ehC0aF5YZEgMIRJOM+rvEBKJTmha4KzamzUM9NId4wMuY/UkGU35loOAWyi43+oizpIjYK20uMKgXjDoS78FmtjxoU2jshHLwAw9QXeYW9cKxZQ2U+UoCIekK1xNcRzDVikiAm2dGV9H6vBSB2Er94DqVIgEXGqTpSYHmj4VzzKMoOZ+Y3pLM4xk/kSFdr6JN75FqJEtvVwX5NylicYDJvVSaV9Gh2w71hV/RePQjQ6FMW7yDw9PpHmHg3HDU7aKDI/ebWQIPjdzw45cpJn/dSs/iIKTX59nerDoOU2FpDtXDvhdh4s5ELace3Xa+NBgD8XKfo433tSiC4tPlc0ITT/oRETbeQx379C3S2Yt15iN3OlFyRo2FPH7QpL9M71sXXAChwpifD5MbQZnIniqx9ECafrcOhtCONnKrJblTXj+yQ6Fs2FN7a2FpSyiNJ7B+S58k/gN43PraTay4PKcz3fRI77tC18qBTca7PhUrxWfVA== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 74e0df78-e55c-41f5-b4a2-08da0c46fa0f X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:21.1579 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: FdWPpeC1eETgXPs0nwseKOYhD25WR9Flu5MUJyTgFzNaD3iNvQqxqCOOe9R3F//9BJ7AkT2YIosLnjucaMsFLw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This command's functionality is now completely implemented by the standard fs load command. Convert the vexpress64 boot command (which is the only user) and remove the implementation. Signed-off-by: Sean Anderson --- Changes in v3: - Add dummy device number for hostfs Changes in v2: - Rebase on Andre's series arch/arm/lib/semihosting.c | 76 -------------------------------- include/configs/vexpress_aemv8.h | 10 ++--- 2 files changed, 5 insertions(+), 81 deletions(-) diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c index 45cd566cfc..57ab25294f 100644 --- a/arch/arm/lib/semihosting.c +++ b/arch/arm/lib/semihosting.c @@ -10,8 +10,6 @@ * available in silicon now, fastmodel usage makes less sense for them. */ #include -#include -#include #include #include @@ -169,77 +167,3 @@ long smh_seek(long fd, long pos) return smh_errno(); return 0; } - -static int smh_load_file(const char * const name, ulong load_addr, - ulong *size) -{ - long fd; - long len; - long ret; - - fd = smh_open(name, MODE_READ | MODE_BINARY); - if (fd < 0) - return fd; - - len = smh_flen(fd); - if (len < 0) { - smh_close(fd); - return len; - } - - ret = smh_read(fd, (void *)load_addr, len); - smh_close(fd); - - if (ret == len) { - *size = len; - printf("loaded file %s from %08lX to %08lX, %08lX bytes\n", - name, - load_addr, - load_addr + len - 1, - len); - } else if (ret >= 0) { - ret = -EAGAIN; - } - - if (ret < 0) { - printf("read failed: %ld\n", ret); - return ret; - } - - return 0; -} - -static int do_smhload(struct cmd_tbl *cmdtp, int flag, int argc, - char *const argv[]) -{ - if (argc == 3 || argc == 4) { - ulong load_addr; - ulong size = 0; - int ret; - char size_str[64]; - - load_addr = hextoul(argv[2], NULL); - if (!load_addr) - return -1; - - ret = smh_load_file(argv[1], load_addr, &size); - if (ret < 0) - return CMD_RET_FAILURE; - - /* Optionally save returned end to the environment */ - if (argc == 4) { - sprintf(size_str, "0x%08lx", size); - env_set(argv[3], size_str); - } - } else { - return CMD_RET_USAGE; - } - return 0; -} - -U_BOOT_CMD(smhload, 4, 0, do_smhload, "load a file using semihosting", - " 0x
[end var]\n" - " - load a semihosted file to the address specified\n" - " if the optional [end var] is specified, the end\n" - " address of the file will be stored in this environment\n" - " variable.\n"); diff --git a/include/configs/vexpress_aemv8.h b/include/configs/vexpress_aemv8.h index eb1f7a78d3..7f47880f70 100644 --- a/include/configs/vexpress_aemv8.h +++ b/include/configs/vexpress_aemv8.h @@ -170,20 +170,20 @@ */ #define BOOTENV_DEV_SMH(devtypeu, devtypel, instance) \ "bootcmd_smh= " \ - "if smhload ${boot_name} ${boot_addr_r}; then" \ + "if load hostfs - ${boot_addr_r} ${boot_name}; then" \ " setenv bootargs;" \ " abootimg addr ${boot_addr_r};" \ " abootimg get dtb --index=0 fdt_addr_r;" \ " bootm ${boot_addr_r} ${boot_addr_r} ${fdt_addr_r};" \ "else" \ - " if smhload ${kernel_name} ${kernel_addr_r}; then" \ + " if load hostfs - ${kernel_addr_r} ${kernel_name}; then" \ " setenv fdt_high 0xffffffffffffffff;" \ " setenv initrd_high 0xffffffffffffffff;" \ - " smhload ${fdtfile} ${fdt_addr_r};" \ - " smhload ${ramdisk_name} ${ramdisk_addr_r} ramdisk_end;" \ + " load hostfs - ${fdt_addr_r} ${fdtfile};" \ + " load hostfs - ${ramdisk_addr_r} ${ramdisk_name};" \ " fdt addr ${fdt_addr_r};" \ " fdt resize;" \ - " fdt chosen ${ramdisk_addr_r} ${ramdisk_end};" \ + " fdt chosen ${ramdisk_addr_r} ${filesize};" \ " booti $kernel_addr_r - $fdt_addr_r;" \ " fi;" \ "fi\0" From patchwork Tue Mar 22 20:59:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608355 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=oVVKi4As; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP8d15HTz9s1l for ; Wed, 23 Mar 2022 08:03:13 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 924A583CF4; Tue, 22 Mar 2022 22:02:20 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="oVVKi4As"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id A7FA383B94; Tue, 22 Mar 2022 22:00:45 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0608.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::608]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 22BD183BE4 for ; Tue, 22 Mar 2022 22:00:23 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SlGzbpIJyVr4khm5D6GgXUIyERORQZTpC84VDjJISqm6Fadfp1xZk48CHWHKPULDn9A2pSQuj6y0R7TyHFqRAPFbUTRNCzQ87sWxKRKoMF7ENs89TTVrrcX6EcQJvPvyWcy8HI4DrQ0eTPiQnCOGz/I/2nDmTotIvkaZ6+JaWSPBVZFMrufmb8vX381TQfWKSa/m1aS4j3lriRNlEYgo0I7fNNl287YcqR+8I+hb+UxITF9aPrEYrI41YUeHb2ryirNRbRiRX7gJ4SjLzcPB4yN3DsRdW92zJPQOlJxFOx18ndjHEqtNSYSsu+HUhY4JTq2+YAdwVWt5iDkAyGCIYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=n1gaTfxYw5HTylMHf4vLWUzAIorK4Rcf3P3GecncYXE=; b=oC5XcMyuRuyw7EWRpQdqTcQVgvZv4nX1ZRYZkS5hTntjkmIRygRUHiOpNO6txw68volrZlnMJVKBh6sfOmTP4wYkHYz3pH/x6i96QlvxM+Xhi1BKf9xulU8WXO5FV9HvlRQX/0DWoj6LrTr53lMgym2GLSg9QzCTv1sIgYu7973yMx+nKpsET7n2kOnQhSiKchAKkwhgNoCpNQibgebku5Aj9Romv14sXM0fYiBlx+dP7hRFCRsI77kUR3ncIqMyek7UwMgErqoIjjfqMjbQvkWHOsDmw5bToYia+Fi5x34KdRE2BzmUqVIsuoMB0S8xxCUku75Iy/ed5leR4a6A/g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=n1gaTfxYw5HTylMHf4vLWUzAIorK4Rcf3P3GecncYXE=; b=oVVKi4AsFZCOO+uML6mQTOgYUCtuE4hEGxZNtv0K3iGXReyySzRpBPHML3892K/hy7D/TJVpj83eb4s/HqTL4hXak3CRGTQDecQXJ1V/Zyyx7MqHBO7qVL4L1gD9K+LJ2RyLAXtrXMxojPVxTekxOgaoJi+nDJmwRyr5DdEwWWQPDAHHfZiAArY1aPT4COnzLJyFeByhXsAeTA3X+kr1DHDCsnja17pB51coKpxeF2+qtWvGXa5BihLBkDk80E9cqupccLwHZwov4HLwUvZ0xZThVHQ0q32fHX6qPCUEaPgpJVc1rVSjxLxUFPleri3g/DVL7RU6jkL0dxhfB+1qtw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:22 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:22 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 15/29] arm: smh: Add some functions for working with the host console Date: Tue, 22 Mar 2022 16:59:23 -0400 Message-Id: <20220322205938.1721846-16-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9b38d842-9145-428d-bb52-08da0c46fadc X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: U2Yv4tBD4cTR4np+PcDPkS73QtPn9fxmp8XkTq5snVTTXcG+p4OY5+XLc+5FuEC7IywphRWPW8xRReULiLit8tfYU1ld673PUX777A2Dzcu8khtr/cM0OquceQUjbE1gWnAeDLj08XB7AKwuq+V+68DIllGX15IkcIsTyVV1pE6GiQ+3MbAsNzm1A31lo5aZ2YI66Pgtgw1sKltxV+MBx828dO3uCY0UkaAyxp7a31t+4le18Cv28zF5fa5M/z0xjIqilJY8oT/60waSbOtSxWbqrY/iUhpyn/UqLSaDc0iAqGREeRcLSxp6uCOs8oeeH66HyCgz5lxbfrJWhKCWxUMPyDWHfEGhIRKIFaFMIUsMHnEWeqoscvN75NO2ebN7zn/hkevjxHqS4C5rgRZh3FfYZwchh3gMK1Z0MT1uhYIO6OYMEpnf516p2lPyDhhPvN9+bWDPXD/C81hzzTky/MkbpRGuks2DFHDeIv2MHQ1pW0Ty7yGk5Yh5MGiUgyGMLuvL7Xlpoq4tzy4/40FY5EdGciXmJlEzkKKsL3//03kPKEAwtDNjq4mpfR0qPnKMxk+3PZGvOUv3fDnG3Hc+fU1cqTIk0WqEwOKKsmMfdMOhvAOJtlG0XLXWWOJo3gDyn6l7DJG9DMKBakdXIMlnGTH3ulMT7dkDJnVG50sQIrP1OYUpA3n2Ab1OjjCv6ZH6T99XrlEoIGkk9DZDcEvKlQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(2906002)(508600001)(66946007)(83380400001)(6486002)(8676002)(66556008)(66476007)(107886003)(4326008)(1076003)(5660300002)(2616005)(8936002)(54906003)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(6512007)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /gEzIytFM3e0q31daQeW/SOMH3bXG9B+Z17zAquH6YSwMEL4Pe2g7Ko6JAW3S/Ya1f38QR/8of2ZRQpbY5cgxRM+hX/qSobartQuoOmwLt48KGqnLL8MIGu8oVODRwwTCZY7GRui3b6siPrDq6kyhJHsI5wELP/hFzUJRNhpqiLeJUUPE3QE+LtKQXxaX+35dD/G6TLrE1Qu3IHjjMD+kmiJF/C8oZqIh92R8ANPk4kjMODEzVEWcuDW0gNpusJF3cx1kG9DDDKK8x0deDds+wEkfSTTGarol4LNGTorhbay1YTS3eo4N0Af7tLp11fhkNwNNFkPmh9BDRA/HTIb0t0wZdz+0FxXGmhXMDZxqz/QsSj/nIlve7RHGCOM256viBYkws1DeWbgLsEDYoLrNbQDywBXIlndWg4orUlObMsxImK5zinZJLnQWk2Lh8/dkr5utNoUxxFfTd7gsRLAYKsDQA737Tjm6QgDIu4jsUNSVg/tZBvCfG3sZR3kJV8CsdASxpAxALibzjv6yfrWT5QXT5j+TnMgrVyxsJPC4BC9Vk8lKbCyJRccMiY2wuKmblBQUVQ84gAAPWvmypAu3uyo6YD0Z0ajIHi9DbmXC9tiQdLcqEYGdMy3mShICiF1+sQXywtqn77iA9QHFylvenzhe9G8rxHx9e4u7plm/wlDywWCjRIN9RulHzdmX9JmIUjTmlW3B5waxkX1FyFIjZ6PYTp6Cc6dR77pT63EyYx4myPq+0g5romrBqbfs8yYxiGO2OPj6cFMioOihRiCXtdbQOT9EXlvVuVHXFc8unWw/B94ftotcy8M75ubhS23NIfYyjAQDYl3OeaUhMjUR4wV8/ve407YAxR5kPM/5gC48l12F+b6UJGIBPmaVA3QFxDubmupa+PL/7aoY5RdKtNTTO726sPNb1yWEwooAl3upsH2696iFwYuum+unOxq6QNBfmh846UFeae5mhNvJ88UDUlS58Ciu0LnhSAGOpTlz6mKj+8HAZCt9Zvh7Fzf6dnPy+8mtFV0xuO1I866nhF3A8IYZB1t0YWkRycKozX/hFeMlfEz61v/wPYPzpngh04rB6xJXzcZVh2xTm/XnitRX6BETrTXCubMcBiqsTJLELiDiKIFYY6OL00Zyy5eqfP225QP3MLMksxh809OokUwAIZmnB28mJZKRzct1pyAP5uDWcwoVj5t2Oi45jxl+NNHSgQTk593gWloa1bBeXyqrfOnSLKbcdAt9urQkxLlhI9CN/OlC5Uie2Mwclrk7mjL7uWYxJK8mU+fBiZMaEBDbybIN7GwcDUsTb/RuZdejnH54U72JHP8cxeHniyfnNi2ZcAbJFaL1fxtCrJsttEKosszfXBUMrnRQSPoKhGCE5AkaEB2PDbI0oMPTWmTNmYYmPhaekJWFu4bKbN45hsJpt9U8+qJLJI2DG5UDZi4D+54zAW9lFNmjLxOU5CqQo5F85ElziRBsfUmZMRYDw== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9b38d842-9145-428d-bb52-08da0c46fadc X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:22.4079 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: lpPOcoYhMAkWM8D5xEN3Aw/UDq/K2BU2Y0ejOboYx3D+GN1cCNqe20DpEZmHJo1FAi3Oxp98K9HV9hVgLsGBXA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This adds three wrappers around the semihosting commands for reading and writing to the host console. We use the more standard getc/putc/puts names instead of readc/writec/write0 for familiarity. Signed-off-by: Sean Anderson --- (no changes since v1) arch/arm/lib/semihosting.c | 18 ++++++++++++++++++ include/semihosting.h | 19 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c index 57ab25294f..7595dbc4a9 100644 --- a/arch/arm/lib/semihosting.c +++ b/arch/arm/lib/semihosting.c @@ -15,8 +15,11 @@ #define SYSOPEN 0x01 #define SYSCLOSE 0x02 +#define SYSWRITEC 0x03 +#define SYSWRITE0 0x04 #define SYSWRITE 0x05 #define SYSREAD 0x06 +#define SYSREADC 0x07 #define SYSSEEK 0x0A #define SYSFLEN 0x0C #define SYSERRNO 0x13 @@ -167,3 +170,18 @@ long smh_seek(long fd, long pos) return smh_errno(); return 0; } + +int smh_getc(void) +{ + return smh_trap(SYSREADC, NULL); +} + +void smh_putc(char ch) +{ + smh_trap(SYSWRITEC, &ch); +} + +void smh_puts(const char *s) +{ + smh_trap(SYSWRITE0, (char *)s); +} diff --git a/include/semihosting.h b/include/semihosting.h index b53c650444..6f3c29786c 100644 --- a/include/semihosting.h +++ b/include/semihosting.h @@ -86,4 +86,23 @@ long smh_flen(long fd); */ long smh_seek(long fd, long pos); +/** + * smh_getc() - Read a character from stdin + * + * Return: The character read, or a negative error on failure + */ +int smh_getc(void); + +/** + * smh_putc() - Print a character on stdout + * @ch: The character to print + */ +void smh_putc(char ch); + +/** + * smh_write0() - Print a nul-terminated string on stdout + * @s: The string to print + */ +void smh_puts(const char *s); + #endif /* _SEMIHOSTING_H */ From patchwork Tue Mar 22 20:59:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608356 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=pwAZo2gM; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP8p23gCz9s1l for ; Wed, 23 Mar 2022 08:03:22 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id A6C5583D6C; Tue, 22 Mar 2022 22:02:24 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="pwAZo2gM"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id D958F83BAF; Tue, 22 Mar 2022 22:00:52 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on061f.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::61f]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 2658F83BF7 for ; Tue, 22 Mar 2022 22:00:25 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VCcw1LMxKqwcRmag3fRjvdwk1yatQUPMWB0dakWfmeEAt7aQwUssqQwvPUmJx84gPU229t9uj1f90VilTgpZK0zVKxOLkTakZTkvLvcLBrvRh5Wzlas58xVNQF2oEBkwRWlDRZLBERh3NlbaecXllhOGj6MZ8ShbuANJEGIbEPf+a9mCrfAtmD+i/ZLIe0qvL4sPJLkp7HMBPHAdVW5rJuvHXqNlESUsi5qL1OzTOMjnZ8FSJF3ZuFU22+akUDn81bhh4DQIf7+hJsgZzo8IQvVs1EuPBgkGApjwwJfzYXs7B1Ghb5v99PULW4xmpZEYxIxS98FogVZxe2xtMu+EjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BzLJabCqtDlKPoUh/MD1SanoNXc4zITvmVdcRTRcKQA=; b=Xs5xykHQ+Um2dVXBrL3mv7QJgWt1BijETP94sqXl2T/td/keQblMEn4MQjYWnu5qBuWRb53z3wOWTvU8PsnECxidroYLVmGnkcFYdTLj13hLxoOxIanATpj/d7cGaJ5jYBcrOg+1kYOmYlQ324M+zvrz2DjIIXbntMC5QZcvNhJbA9HiJfM3kAdrkroZJ2ag8jpQ9b6CNYEQUnBismzRYWp3Vr5MjjLCQzHl5NTmK4ReBA8SYFCBv2Xo1DrEBFnaOHvzSSa49uw4Kd1Eui6eUhNBsDIqjf1qCNPsFMXVgFscR9rbUsuye1aiqzsOZ7nbf+ZeRrcm3glVVAk/yDpaMQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BzLJabCqtDlKPoUh/MD1SanoNXc4zITvmVdcRTRcKQA=; b=pwAZo2gM23e4875MGNVs2mWdwl9mRm96K9svV2AllvxCSj76cigEn4nRMEd1y4IlH0YWrPIEuvkyF0OI6YrqLJI29zz0DSZgWzAckQZ15+g7/S6XHFOCA3tDWlDSkM+N/Nte8VEyfbBWD9sTlE+vsfp5bETMxql06lLbaKdtvPYPjVkweanxWzTGo/7ehKCmn9mWC5ItCcmeV2QMqUDA7PqkBpzDMdAt6o1FmC4u12to+oI0wCH46OR/qGLD/w18ZOsjN4B6EiSjHOy42mJpQ2lmpFlLujfz1InsM9o0g2GtkGI4/Mpp11F1l5jd7dP80oDeCJwFETyLBOGwF2wmpg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:23 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:23 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 16/29] serial: Add semihosting driver Date: Tue, 22 Mar 2022 16:59:24 -0400 Message-Id: <20220322205938.1721846-17-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b4bfc583-6a99-4d73-11e4-08da0c46fb99 X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: y1p7PSSau3lyBD/ILXmQhJtg72UeISN6N28SFE8N5ic/ZLFV09QHPe5HalmK5WuEw2enE2ONLaaEhqGxJVx7eULsO+ahvEN/qdaljTyyDqUyFL+Ug8Ojab/1oYVUce7DFXM6YNJ+nasCCeJMTnJzL0YZgGFbZ8JJMyqgUPniVCQxlj1tKNDvgDtKDTklObTX9y27ChBC0ZPgeENkvCVLBqs6t0rfBK3Vp7HzwgdT/p+/vmzON2/rqdpjHVAjUX7p9Fx/8FGDrTcXHt2mki3QWH/RHY5h9k290vHGCen/XVyR+cDr1q62Q0M9n2cgquGh99F+IfKHgZDKnqvQp0gWUXYKGxjEFuMElY52ek1ntFCos42KNaVHns5BSiAe7qJ3G9KQsXmNqB1dlixirgFmyF8+4SllCfULsmj6ypi58Ccjpcz8m9QCl734KMw8oNuPfKEvCCWP3AFyybFWpcX1TtyUajSCH2j1XW6z2WVglIRdhbAiADyPYsrzwCIGl9QwNPmzsCL/oy3sg1mlm8E1Kwa80Zuae4TvXPyhUdgVeyKzz6Gwwd24bMTuO12uthpy2pquQv6vdIv/xedclz5F0tDFGCECZVx/f3J1aNMo/j3GdAfCgd+31WWiv3TmpHDlEI9CzQU00OR7zcLxmsPtoObJZDZZ22FGlDwCsj9YUiXcQmO/QeOSpxE0uZyA/0mNfRcKyFg+94i9QFv2wK5SaA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(2906002)(508600001)(66946007)(83380400001)(6486002)(8676002)(66556008)(66476007)(107886003)(4326008)(1076003)(5660300002)(2616005)(8936002)(54906003)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(6512007)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: RfANMsYFP85D+y8Gw0dXf2TBXWiVzzTnctb62iDlo2+ip2+aIV3eLi+vfN73OG5NAwem5fG4X+ctAVtr8rBj4PFiLOX+aPogHFwYJKzD2QK+8rqvgm5nS5sf4lrF+7bWxq/go+nBWGuIUV9qpsTyX7fbf6/093jhs7Z0+/4XvvdL+a958KCv/Qr4OT2I0ABsWoiVH/b0LGpzBAygjZbcTt2tmJd55tBNGlLLAAJ2PZf6Y5yIIISDPU16pjkQuZTtAOPbw4jeq61Y/H2iisYOyAkj3TPsWEcSjiypMoAxUwNq1aXNDsp2Ed8fWsBox3/oBOI/Vl7MIplGqDw75rv+InH8btYsVBokuddBiqsVoTVgKhfc8zP57GeRgEe/sFb+UyU9Sb+Uc0+zVRszbCkXo6Ym4Hg9eYwXruPgilrQxL+WDQcSaLLUv3GX6WVw6vt0AMj3BsFG7ksHeENyOClq1XMzw5XgJeucbTyBtdDd7LzHZuO3funM/nKrvbKzlKDM4u6QbwtOCd3UlGGs74RSrTse3fsNp//Aw4lAX3zY2IWIWT40OkWThuY0kwqUfPR3+mq3SzC3My17C6OSo7kdgBYv7emetm4nE0yU2CSDhZrDQDGYAprprzzS5O3kaI+yLIfDKJb4+Icbg6cg84WgXJ69gjFYN6NojHl0cfYEVpPJEP/ZPKDkKgFNz0uMTCGHCceY3raHP2mo8/YZwIgSO+Yb+J4mKkLLExiqCUAgoiiJvhOd8dzGjGAmi9FjB9ecuPHb9aJ3JwVXZmjdYkP4oHFARZpLPADoyqYgyNgub5Le/dMWdn1rz+vCF3c1alXk4HwELTtgFQcwjyqh0i32MqdcmVrMvP0Ut7xbE31GCjrMO/l9uXE1LgQIQT60zrz559juPkNYjHpYU2jAuCoEyVn/i8LPDO+ZmksURsQ+6lxVJt0fCt9tfLqGBhQiUbSM2fdwcjoRCiNt3z0+5VMxIJk+zHwaXvXK5w+dpQSJeMwHhQ/YU17mbJiFUmyg1Oe4c0C9GaCT6ykbGbx34R6Tp+S7HDLB8jSiydWnD8W3s9cu254zVwcGja7qPN/X8fJdIdY3FfBGAVFuf51FXioH6bL1KUEp3VSfEijQYEfJrk0tIsTVjrJEPcUZ00QRcBHtg2lKzshasBnM+i6EuppJ9Mc8AA1W11JieaZJ30RqRvtHcVtdZ2D91Q5CAsTp1V3UDgujIYZZRpu3UCup9xOWCVYSvsT2uzKihaJ2CN0bKBlcEmFC+0Cz+ExyQctEXftFcl3gYvoLBZJpthXoqHOGwPzJfWvnXqud6/JaA4bI2slJHjMK3vlU78Igjzwh7IPc9rBmkmQol3gZcJnt1FGacvYGNfa72nHGwhFjAKqRV2EzLyGAUZL4pRpWchpg+/vWtdUYJEdfaSX+uQv5ugpxLIgW+hErxYO/7oY8BduUWYnlbm3lLIxqkK00Lm2mTzWbBGTGlDzKHhx8g/zHpfybhQ== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: b4bfc583-6a99-4d73-11e4-08da0c46fb99 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:23.6578 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7o8hZXjt/k72by/mRST4XxrP2VP3shvHRuIhX3KAAWGg+pG5ujl6Rshe2qOdl98y0IL3XtieA1yFJE/NDbarUg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This adds a serial driver which uses semihosting calls to read and write to the host's console. For convenience, if CONFIG_DM_SERIAL is enabled, we will instantiate a serial driver. This allows users to enable this driver (which has no physical device) without modifying their device trees or board files. We also implement a non-DM driver for SPL, or for much faster output in U-Boot proper. There are three ways to print to the console: Method Baud ================== ===== smh_putc in a loop 170 smh_puts 1600 smh_write with :tt 20000 ================== ===== These speeds were measured using a 175 character message with a J-Link adapter. For reference, U-Boot typically prints around 2700 characters during boot on this board. There are two major factors affecting the speed of these functions. First, each breakpoint incurs a delay. Second, each debugger memory transaction incurs a delay. smh_putc has a breakpoint and memory transaction for every character. smh_puts has one breakpoint, but still has to use a transaction for every character. This is because we don't know the length up front, so OpenOCD has to check if each character is nul. smh_write has only one breakpoint and one memory transfer. DM serial drivers can only implement a putc interface, so we are stuck with the slowest API. Non-DM drivers can implement puts, which is vastly more efficient. When the driver starts up, we try to open :tt. Since this is an extension, this may fail. If it does, we fall back to smh_puts. We don't check :semihosting-features, since there are nonconforming implementations (OpenOCD) which don't implement it (but *do* implement :tt). Some semihosting implementations (QEMU) don't handle READC properly. To work around this, we try to use open/read (much like for stdin) if possible. There is no non-blocking I/O available, so we don't implement pending. This will cause __serial_tstc to always return true. If CONFIG_SERIAL_RX_BUFFER is enabled, _serial_tstc will try and read characters forever. To avoid this, we depend on this config being disabled. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- (no changes since v2) Changes in v2: - Fix baud numbers being off by 10 - Fix typos in commit message - Rename non-DM driver struct to match format of other drivers drivers/serial/Kconfig | 22 +++++ drivers/serial/Makefile | 1 + drivers/serial/serial.c | 2 + drivers/serial/serial_semihosting.c | 147 ++++++++++++++++++++++++++++ include/serial.h | 1 + 5 files changed, 173 insertions(+) create mode 100644 drivers/serial/serial_semihosting.c diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 345d1881f5..cc20759505 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig @@ -399,6 +399,15 @@ config DEBUG_UART_SANDBOX start up driver model. The driver will be available until the real driver model serial is running. +config DEBUG_UART_SEMIHOSTING + bool "semihosting" + depends on SEMIHOSTING_SERIAL + help + Select this to enable the debug UART using the semihosting driver. + This provides basic serial output from the console without needing to + start up driver model. The driver will be available until the real + driver model serial is running. + config DEBUG_UART_SIFIVE bool "SiFive UART" depends on SIFIVE_SERIAL @@ -778,6 +787,19 @@ config SCIF_CONSOLE on systems with RCar or SH SoCs, say Y to this option. If unsure, say N. +config SEMIHOSTING_SERIAL + bool "Semihosting UART support" + depends on SEMIHOSTING && !SERIAL_RX_BUFFER + help + Select this to enable a serial UART using semihosting. Special halt + instructions will be issued which an external debugger (such as a + JTAG emulator) may interpret. The debugger will display U-Boot's + console output on the host system. + + Enable this option only if you are using a debugger which supports + semihosting. If you are not using a debugger, this driver will halt + the boot. + config UNIPHIER_SERIAL bool "Support for UniPhier on-chip UART" depends on ARCH_UNIPHIER diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile index 52e70aa191..b68b5e7b2b 100644 --- a/drivers/serial/Makefile +++ b/drivers/serial/Makefile @@ -52,6 +52,7 @@ endif obj-$(CONFIG_XILINX_UARTLITE) += serial_xuartlite.o obj-$(CONFIG_SANDBOX_SERIAL) += sandbox.o obj-$(CONFIG_SCIF_CONSOLE) += serial_sh.o +obj-$(CONFIG_SEMIHOSTING_SERIAL) += serial_semihosting.o obj-$(CONFIG_ZYNQ_SERIAL) += serial_zynq.o obj-$(CONFIG_FSL_LPUART) += serial_lpuart.o obj-$(CONFIG_FSL_LINFLEXUART) += serial_linflexuart.o diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c index ebbd21916d..6cdbb89841 100644 --- a/drivers/serial/serial.c +++ b/drivers/serial/serial.c @@ -126,6 +126,7 @@ serial_initfunc(mxc_serial_initialize); serial_initfunc(ns16550_serial_initialize); serial_initfunc(pl01x_serial_initialize); serial_initfunc(pxa_serial_initialize); +serial_initfunc(smh_serial_initialize); serial_initfunc(sh_serial_initialize); serial_initfunc(mtk_serial_initialize); @@ -180,6 +181,7 @@ int serial_initialize(void) ns16550_serial_initialize(); pl01x_serial_initialize(); pxa_serial_initialize(); + smh_serial_initialize(); sh_serial_initialize(); mtk_serial_initialize(); diff --git a/drivers/serial/serial_semihosting.c b/drivers/serial/serial_semihosting.c new file mode 100644 index 0000000000..7c7c5d9455 --- /dev/null +++ b/drivers/serial/serial_semihosting.c @@ -0,0 +1,147 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2022 Sean Anderson + */ + +#include +#include +#include +#include + +/** + * struct smh_serial_priv - Semihosting serial private data + * @infd: stdin file descriptor (or error) + */ +struct smh_serial_priv { + int infd; + int outfd; +}; + +#if CONFIG_IS_ENABLED(DM_SERIAL) +static int smh_serial_getc(struct udevice *dev) +{ + char ch = 0; + struct smh_serial_priv *priv = dev_get_priv(dev); + + if (priv->infd < 0) + return smh_getc(); + + smh_read(priv->infd, &ch, sizeof(ch)); + return ch; +} + +static int smh_serial_putc(struct udevice *dev, const char ch) +{ + smh_putc(ch); + return 0; +} + +static const struct dm_serial_ops smh_serial_ops = { + .putc = smh_serial_putc, + .getc = smh_serial_getc, +}; + +static int smh_serial_probe(struct udevice *dev) +{ + struct smh_serial_priv *priv = dev_get_priv(dev); + + priv->infd = smh_open(":tt", MODE_READ); + return 0; +} + +U_BOOT_DRIVER(smh_serial) = { + .name = "serial_semihosting", + .id = UCLASS_SERIAL, + .probe = smh_serial_probe, + .priv_auto = sizeof(struct smh_serial_priv), + .ops = &smh_serial_ops, + .flags = DM_FLAG_PRE_RELOC, +}; + +U_BOOT_DRVINFO(smh_serial) = { + .name = "serial_semihosting", +}; +#else /* DM_SERIAL */ +static int infd = -ENODEV; +static int outfd = -ENODEV; + +static int smh_serial_start(void) +{ + infd = smh_open(":tt", MODE_READ); + outfd = smh_open(":tt", MODE_WRITE); + return 0; +} + +static int smh_serial_stop(void) +{ + if (outfd >= 0) + smh_close(outfd); + return 0; +} + +static void smh_serial_setbrg(void) +{ +} + +static int smh_serial_getc(void) +{ + char ch = 0; + + if (infd < 0) + return smh_getc(); + + smh_read(infd, &ch, sizeof(ch)); + return ch; +} + +static int smh_serial_tstc(void) +{ + return 1; +} + +static void smh_serial_puts(const char *s) +{ + ulong unused; + + if (outfd < 0) + smh_puts(s); + else + smh_write(outfd, s, strlen(s), &unused); +} + +struct serial_device serial_smh_device = { + .name = "serial_smh", + .start = smh_serial_start, + .stop = smh_serial_stop, + .setbrg = smh_serial_setbrg, + .getc = smh_serial_getc, + .tstc = smh_serial_tstc, + .putc = smh_putc, + .puts = smh_serial_puts, +}; + +void smh_serial_initialize(void) +{ + serial_register(&serial_smh_device); +} + +__weak struct serial_device *default_serial_console(void) +{ + return &serial_smh_device; +} +#endif + +#ifdef CONFIG_DEBUG_UART_SEMIHOSTING +#include + +static inline void _debug_uart_init(void) +{ +} + +static inline void _debug_uart_putc(int c) +{ + smh_putc(c); +} + +DEBUG_UART_FUNCS +#endif diff --git a/include/serial.h b/include/serial.h index 19a8c0c67d..2681d26c82 100644 --- a/include/serial.h +++ b/include/serial.h @@ -23,6 +23,7 @@ struct serial_device { void default_serial_puts(const char *s); extern struct serial_device serial_smc_device; +extern struct serial_device serial_smh_device; extern struct serial_device serial_scc_device; extern struct serial_device *default_serial_console(void); From patchwork Tue Mar 22 20:59:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608364 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=i7drYK3l; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNPBK30ZKz9s1l for ; Wed, 23 Mar 2022 08:04:41 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id BC95583D03; Tue, 22 Mar 2022 22:02:51 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="i7drYK3l"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id E48CF83C04; Tue, 22 Mar 2022 22:01:50 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on061f.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::61f]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id CB33F83C04 for ; Tue, 22 Mar 2022 22:00:25 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HL9v0GYHZ7ZzibwY+T1dQ6xDoKEf3XzLhOkjlc5YE5Ijb0Qy/lDRmcAInN/sUXTa0atq3l5T8+TB28DwtQ+Oho8xC8aJoryKJ0ramy+NLqMYCU77lDyCyEBA7lF6icbieGjcEdeisUlK+/zFSo6Qd3wWp8fh3ps3lZdi+kGZhdsh5Rn36jTYUho9F368PdRzfruZIk81c6P23V8XubP1m8TB3DmEByQBLDhjsLZiRori4+Q02m9X7cHQ/E0CzcUTtAbLmshDT3m47XlpwwFkdGamEZ/cGQPYa1zbCWLOg6iFeNs5VCHzn4TShLuvpM6st3zENlPsEz44n1YXuQg9zg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Z+Q8MPjRlmO1xeHZ7C37kXOQ47WbUQiXBdb/rYqto+U=; b=Z6NMfjN+WsrLejbQRjCtSYZSpk9pH+EIzDuav8u6Fw0O65BbHzq9oK9S2vaq3tWMeTd5k0jrAcX8Z0A/04h5rItcFdI8gRQPw/91DCP+h921BJ7tfJLBvZAolKrvZBiFLFjHi0XsE1HUtqhVpjEojXhNw8mV9EjhTf0tRg0WXtJljz3RP/ntOJyZTOPdEk44Op78eKlM11KWX/r8qzCOyCtOMjAY51uKRw08khKqPF4cePRqf9lVKX57VugKCi6p7MS+iDJyf4g0OE2FR9xO4WmdL6Dblp9WiD2lxCchr/lQcMyMIyhspXBIujCs7t48NlDxPrZqXUA0o32KXi6wLQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Z+Q8MPjRlmO1xeHZ7C37kXOQ47WbUQiXBdb/rYqto+U=; b=i7drYK3lHuro2PljDVgg403nw09kg+LXzl+UyPoOJmOW9S8rbd1CzGiNRJUKsP5mbB67MvWp22oXyA7sqhqMsR9msgZ1JNzGxhH6svV8EXsPFSGCdP1VOSmvPcEq429CGlOmI4i5MivkhiSAnk6c56oxyXYEpKKsIbpyVDiO6T6mB3fbbQ1FHQ0gkcxuFi4rQkNoX1DlueQaIpNQz/fiiPPLoGvoKdqo9uOv1uaOlQFD2HD7wjjXfv8hXBCuEWmPMrYeOiSN2aBqrmIHADGdeXIqLaPNP1CtQdd7Wzcj4JKCF4yBa9J9jGj6lUvsLl0eo1g7i4h/Ntfrjn7J4Lcw3Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM0PR03MB3938.eurprd03.prod.outlook.com (2603:10a6:208:6e::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:24 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:24 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 17/29] doc: smh: Update semihosting documentation Date: Tue, 22 Mar 2022 16:59:25 -0400 Message-Id: <20220322205938.1721846-18-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4d83f377-6d2f-4796-8f45-08da0c46fc5c X-MS-TrafficTypeDiagnostic: AM0PR03MB3938:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1JAVIW3GnEJeRJJRu4m3yLPy3YhRz5irjZs4wZcL9HOSFBH+lq6ymsEbxSJpHLHsINJwc7DSzi9MEkf9JF3rwyfbN6s9ruGvSVdmnaX+N7HzTgu33WzElfshYmT5BHR6cHnfrGY9MKbOqgBo3zv7TYHSGghzaaMP14Dmp5N6D76TdEN6/XL2NYmtNb6p36bRt1VIDm83kOHCbQevUbBylBPg68Ea8D13mUmVQXq0XA+wRQ4TiaEbFlWF6wFIVL39z2nXEc7Rfg6GhIhYthOB5Hy9leO+TAYbvc6H2zk/YEzlWc1c/kfgKcGIV++t3dDjVIjjYhGD7wrnfyv/Iq9qZiTXjammAF6pomPmPhrLL5y3vtS5ePBaxZNo3wY3WrVYZxwscyE9LqRFguqGLb8CgoEsHHPP/dIwHUCLZxJVlHsHaH8e1YGmsEhrpr6Klz6UuNFdB5PeLQqEyOfOQpmagLzzY4pj/QVaLfCo97KAF7943US32SSl/ud5+CGjShtihpVX56d1skvGAN3yLqPOfySsCnrcu92YXG2yb2JW2OXgJiLGCL79sRxMQiVy+GImwVFfaPwG2Pi4OBfMVCH0Qc/DpkacnJ712l2FqQS2Ks25c9vUoUgzy/v/rmAzllkwj/J5oJIVaeGM/h4NiQ9KGUrKDVJsKrxxOOBm40D8nWcDM6vDu6znBFlThfbAkiJJw9WvsIJiNrf6Y3djMabOH4btfa61oy0cabB4iGkFg+YRsNa7E1jqC3ff6GdQ3cuONnUdcXWm3ZRXkfrDy8wH/IAwxdnPIRo3IV1zR0BN2KY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(38350700002)(86362001)(2906002)(508600001)(66946007)(83380400001)(6486002)(8676002)(66556008)(66476007)(107886003)(4326008)(1076003)(5660300002)(2616005)(8936002)(54906003)(186003)(26005)(44832011)(52116002)(6916009)(36756003)(6506007)(15650500001)(6512007)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: CR4fTKspgNiugfBkoGt4dhqVO8j0pdRRrBzFHk59Ulll4oktwu51z6mm9qrqmtfzDfq9AKBAFLWjk/FtVjOdQ6CAAUt6U7TerhYqtREwgf39rg7INDyt0rDYKPWSbUYJobwSrRGh+Sj9mePSILX8BFGSN1QASl/OWweMZsUvcevz0adXHI8UjuWIG4K28T4JtRVH3s0AyjvAWKEsdfT9mWBQGca7Lc4YifDAPAv7nLPbbxFp2o2WBHD3J72BzRr9rXs0/JZvtedO5Yl93gSsG8LLpj7WyWnpkyBgftvMKkx+NkpaCtmdlQ8I1r4+9E+HStW2RumBORtb9y6JYzy33CxfQXchPFHsYfGyWhqh8Mw6Xn9bzcKNW5iLpQRwMcu/9GxKtSp3wM6mX7+V2+2bV93q5diPw3Qr0RL7FHRc42n2ErsMiTae29KhuO5BfDBSGFwJj7YYAd6DapFK3AoMsRaF0qK6oMBRaFeH96fjilSG6PeCj4ZGQyEFcP3oPrwdyXsXA0PTCGDjxP72Msy5ibsdVkhV6Hn1hwol55goyY1yzIHWzrYH+Z1sHOh5De6bfpA3RtXZk3/J/IcCcPW4hNB1br6/HfV3ZQyHIXWW0xl5vPc9LoA7y7DUBmmWFn9B3R8SQv/a5caOsrjLNtHNwwWL816nMZTa7uzwsdNV4Gnm8+bI5L2Re50NeVyHYppuq6f8sRP016Lu329T/zKGwUn7JoZJyPeRDbJgNInpwZVkd38J2xoktgYPNUYE7OFL1fPRuWEXSbn1y96mWiOAWkY1IY2Eup1W8Q1d71IeHKHSw8VnctZKp1GjknGrWosHZiM8VvyaL8GtZdzXplWQTeKxUUZo22mrK/v9knNnyk8wMalMDTSU6+xiUkSAmrEu55NOpIxkshrz97x+UXlORaYEg3wCxY6d22V32uk+4Nt9yuj7B2o3pQbhpbFBnn3hpAzsunAoOcPIJ0wu2nh/Nz03p7sSbFujktm4F33VsNTZOKotPz4QGK1jApJquvfAJ7NQJwlWK3Ye+JTCUU/A9uEurE2yE1JGgYNmdj9y355YTekc5qCiwJwjalL/a4SYGVe82A3biDHDfVIplROYsk3fo1y0Xs4F6f1A93SyKqjYz5hEPwHVOBcMlzyM9Au1kYPew3OdcyAHZtx+2ZYmxlvPYARDMjGwb/lTX8793kWOT4Aq/Cfyzt8Afkh41AUvP9xtAg5tUQgKOJ9Y+PkN0EClguMxaUe67qUPxXJrGtAAySGTEWqdQMKPqflTMUgdWbT/+3yD1wwLzaaS45/1OCe3vcHgSYpv92SQDy/A/+WwY/3DLaRY4r1i/BeT/u8f28rGplGsqEf9VxDJviG2XVbD3xmzcRR/uxck0ijQEybzUUHyCgVIIonUdzSOt4n5/uniRpFI/HuZc/uVKXoQoks83Ke+3LgLvIz0hmc8Ud2OBAQer+R5B8Vp+VZWUQvPr9+i+UHfHWLSPN1qOC7OHw== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4d83f377-6d2f-4796-8f45-08da0c46fc5c X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:24.8139 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: XVxQYwxEZykYntUqvU0jXDdLvN6+oIemE8akGiiC6EYhRjUUvgLE5dDrap8XH54POfihKowkQFKQwG3dNTXonA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB3938 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This documents how to use semihosting, the new semihosting features, and how to migrate from smhload. Signed-off-by: Sean Anderson --- Changes in v3: - Add additional documentation for QEMU and OpenOCD - Add dummy device number for hostfs Changes in v2: - Add migration instructions for smhload doc/usage/semihosting.rst | 71 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 67 insertions(+), 4 deletions(-) diff --git a/doc/usage/semihosting.rst b/doc/usage/semihosting.rst index ed16e4d582..1d793983a7 100644 --- a/doc/usage/semihosting.rst +++ b/doc/usage/semihosting.rst @@ -10,6 +10,12 @@ console I/O, etc. Please see `Arm's semihosting documentation `_ for more information. +Platform Support +---------------- + +Versatile Express +^^^^^^^^^^^^^^^^^ + For developing on armv8 virtual fastmodel platforms, semihosting is a valuable tool since it allows access to image/configuration files before eMMC or other NV media are available. @@ -31,13 +37,70 @@ vexpress_aemv8.h but differentiate the two models by the presence or absence of ``CONFIG_BASE_FVP``. This change is tested and works on both the Foundation and Base fastmodel simulators. +QEMU +^^^^ + +Another ARM emulator which supports semihosting is `QEMU +`_. To enable semihosting, enable +``CONFIG_SERIAL_PROBE_ALL`` when configuring U-Boot, and use +``-semihosting`` when invoking QEMU. Adding ``-nographic`` can also be +helpful. When using a semihosted serial console, QEMU will block waiting +for input. This will cause the GUI to become unresponsive. To mitigate +this, try adding ``-nographic``. For more information about building and +running QEMU, refer to the :doc:`board documentation +<../board/emulation/qemu-arm>`. + +OpenOCD +^^^^^^^ + +Any ARM platform can use semihosting with an attached debugger. One such +debugger with good support for a variety of boards and JTAG adapters is +`OpenOCD `_. Semihosting is not enabled by default, +so you will need to enable it:: + + $ openocd -f -c init -c halt -c \ + 'arm semihosting enable' -c resume + +Note that enabling semihosting can only be done after attaching to the +board with ``init``, and must be done while the CPU is halted. + Loading files ------------- -The semihosting code adds a "hostfs":: +The semihosting code adds a "semihosting filesystem":: - smhload
[env var] + load hostfs -
That will load an image from the host filesystem into RAM at the specified -address and optionally store the load end address in the specified -environment variable. +address. If you are using U-Boot SPL, you can also use ``BOOT_DEVICE_SMH`` +which will load ``CONFIG_SPL_FS_LOAD_PAYLOAD_NAME``. + +Host console +------------ + +U-Boot can use the host's console instead of a physical serial device by +enabling ``CONFIG_SERIAL_SEMIHOSTING``. If you don't have +``CONFIG_DM_SERIAL`` enabled, make sure you disable any other serial +drivers. + +Migrating from ``smhload`` +-------------------------- + +If you were using the ``smhload`` command, you can migrate commands like:: + + smhload
[] + +to a generic load command like:: + + load hostfs -
+ +The ``load`` command will set the ``filesize`` variable with the size of +the file. The ``fdt chosen`` command has been updated to take a size +instead of an end address. If you were adding the initramfs to your device +tree like:: + + fdt chosen
+ +you can now run:: + + fdt chosen
$filesize From patchwork Tue Mar 22 21:16:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608367 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=GaMZm52B; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNPSr4wvvz9s1l for ; Wed, 23 Mar 2022 08:17:14 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 2391A83B49; Tue, 22 Mar 2022 22:17:09 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="GaMZm52B"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 3F73983B4F; Tue, 22 Mar 2022 22:17:07 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE,WEIRD_QUOTING autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on20616.outbound.protection.outlook.com [IPv6:2a01:111:f400:7e1a::616]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 95AD583B3B for ; Tue, 22 Mar 2022 22:17:02 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Vic+VUv8LJh6L0nbFBt4gYOHZHNyM1z4QbBLuyIM0BpFuQRmRIE25bSIEsDMYvfOeV1srwbzgXD2h/UOLBbCjCbAxNR803aRuj1g0O+jiKbYV+JyrvnDcndfVkyZFaYQ0xWoi2ovQ4t71Y0YXv/DGPeCtI9MYLt7v2bo9WEx+FuXOvVbPTvsFIZnfyNHMd0hOLKqFIRUg9XXF6DkADVq5APuDuNkeyuRa1YFEbwHxoamhXTeFK7oGH/6b3l2ZKBALk2mYcQ1PkZWHM5sUOmUZquZkX+2qPbS4JSpkMdVo0rYgACjnnG4TuY/rpOALW9lNnHx4SMeWda5r5wBGwSwFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XD7VxtAWWDCprt4w88DIZnhSzRC/gIpfbAAv27cISpg=; b=OFgwUxUdxDSDbCnhN8rQ3IEQq4Ort8Mgmy+R6ppumjramEpqyPlLQeDDHqszmbJ+HaT5G2IC8RjBRIVPSmnzBGr+BTC1E21dnMP5MvuEVvJBTUJ64mZJ/DWf5qQT6vExWZA4mbHO93fX1O2CXt7S2hW3tQlYB0uW8kiGcuyePZivfB3TldphIISlhz/tYgbjElk4tUsYI2K0Q7cf4wlLGliOtI6IRFpXhttJZcUHZlh3flcQLiHBG1br6ECmY7QijHRYH8tutRPibEmcCmAkoMwKCtJ5uHNmzwLc9gZW2+obDM2To874uf6F3Cplrl2bL0O9dUxrhyq3XdOlO/eBeg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XD7VxtAWWDCprt4w88DIZnhSzRC/gIpfbAAv27cISpg=; b=GaMZm52B6Jy7wPCKr9keeA0HbjKwMg+G/2NF9Wjsx0Y53QNuJBYnpWvU5tEBYGkszBmqijnBWJjiBOP2A59ARFXB85M6DmhpeXCxm7exu93mHXo9I46oaD40jo3lO5jpMhvefFqterduya1ln3PNOILM7b+KNza7tGD2POlldLuTc5oQH0k7UmUALg4YYZ2RjJmqi1uItMs7Nbef0bfZ25oXWOwEY4XXiQPF9h1tK479eeIfB4Wbjuk3e2lpvdI9VzH8V1Y0i2yps471oRDITRz6YN5f054g7XTy8ncbQ5dWmlmdN3uDa2uVjqoEHmg5RQokC6Oe+bKECR2bepM7RA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM6PR03MB3736.eurprd03.prod.outlook.com (2603:10a6:209:2d::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.22; Tue, 22 Mar 2022 21:17:01 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:17:00 +0000 From: Sean Anderson To: u-boot@lists.denx.de Cc: Sean Anderson Subject: [RESEND PATCH v3 18/29] ls1046ardb: Add support for JTAG boot Date: Tue, 22 Mar 2022 17:16:05 -0400 Message-Id: <20220322211605.1723837-1-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR19CA0057.namprd19.prod.outlook.com (2603:10b6:208:19b::34) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: da025622-a27d-4ae7-f619-08da0c494de3 X-MS-TrafficTypeDiagnostic: AM6PR03MB3736:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9W7ZiHG9jkJxAc2jQcFvup4eW8XpSckYHW7nUBSKRRLZif2GxDh4x6r/Uuld6r046MjMo1Nj98VFooPMcrFpmJn1NNn8ok+iHPKrlsy8vAW5DvwnTRxii/ATa9Lk+UkLoTBkFx+GdrtX3PfLTc4QQAAqyxYs+TA/gl3Nb2JlUIGH1utEYiE9Sgq3pXOQr4OJU3ek1pzbJ79V3mKxNl3TM/2miCL5pQy08FygFYVMnRlB3SEgVGGqmCdQXdH3HScYCJT1HgwCLuchTKdF5yKvDrYT61ojVxPxAESZXDerCnsAdsYOHdiiltV9SW8rp01ezKQTyWvgoGMpUjcNBFU8BmJlMu5KWAWFQ3t5c41LHGiW7f8y6HVBbju52XbT7JQIhc7f6NdJ6kiRTYEMN/UTI3nQ569T6aoZquvtBcZavjEJ3qCtxvPJBH3nt+fhTvJfZjh37OB0znq+Y1kA3vKubzGt203VGs+ggGGmgHA3UVYjOMCZM7gHnHqmyE2giJcbS6MmfgCS4lFoFS2miFXjkwexGGpmYt1WTLKHMI26qZLdviDl3luGUlvEG5sFGPgvl1g3kx+uo24ngBedk8adomOHKjb/0mAxR4avlpUlTpfNmDRf0ObRgHVGY037jjitEnYAQx1K1iRyCA+eaibjjI61/k+/GIoP2OOqiA8rVWHnZTCTA+ge12WAL2/iXM9A8F8sXR9YDH4flTAzIy79mI7IxGomBvelATTbm8QUXj7ig90o4ujs6H5Q/zlY+nfvH4j0GEACXYj9RUkV0Y+RTgDmcNvmgqa8oM9MNw1OvBo= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(52116002)(2906002)(6486002)(6506007)(6512007)(508600001)(966005)(8936002)(44832011)(36756003)(5660300002)(66556008)(38350700002)(38100700002)(66476007)(83380400001)(66946007)(86362001)(6916009)(316002)(8676002)(4326008)(2616005)(1076003)(107886003)(186003)(26005); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Go6dkDYiHq5QkBBT0F/99QLzZH86c56kIxDjVovDcB3u/lbfRpqhghNpSWWDUl3eXTuTOh1D+s9vhA2bk2r6itRGWlwAbFLR7PfqvnuChRJRmrXmaTO8P0NVczA+4xt5WvHf+sDRepHSA6oloGN370QPLbilU5vivg59uF8Lg++3KY+YgE0GUhejwxqQ+XV4LHmlrQGZyQQItgt2hRmbla3K+45AUZ0L/8adVgjjJALCIJjpQKi1ZmhwikAU/jv9OLuXTH2HCwG1O0kJAtlAtjGG+oZ9B24s1CUOia3Y30gKq8lUW2xKQTV6RCRdQca8rjbjtjzlyG5pArlAOI6TWs4O5+IMlgvERs+zG94FNAm8XX3UcVj46kGwTmcfCD4GjJLCEiUnkdTYTCjopl6jdT40TJMg9OdkFwgEuZwuZ9Avt+IRfTBJUz7A0bT8lWiyMYL3n6ZwZBnLNbuxSw/tOgAqzVytN8S22FNU0Lt4qSzDMufVnUlDdC+1gH5qp4uCgYGDcEolzOOM+KYHFoa50D+rAl1QIcjHE6U3R1Dn4xZ83mcuQLHoofbyA26IOfs8sPXmjv5FHntLd13ZX7IzfNWFczWUdoerfsIu/9EKqWPOrn4UiDiNBTeD2sc4i8O9Zh6J60cbVnEQxUMUz3YJARovBYDo3J8DJ+AqtZxBmeP9rRp/Rgkm9yQe3QUkVU4mBmmDSayZ+dABPIPzjhkJEfapLF703xGRg9N9g12A9j0kzenZ4zzVW39uI0AJvKd67hTSZz/meZAM9zJWH2TiFHmniAIPgKTg/EfTgAyugjFSiN6RK//hvhdUQS8j4WOLi/cTNSm7uZDRddOWaIHCoX9goAzUzwNq6q5+okYgGW1+RjPG7JKMSUPe1TcVqJb2UvE6xsMTdXKs1c3+cJU59EI5eArQ9cD3I3031CxN9ZU1wGHNsa+hqfaaATTK1U7FFRAG2fsaKnT1M7XUxz3kN0HPUZrtd9R7N/SPrFsmsff/r4H6hk2OK/ODyzLGCHmO9ADKT0/BL9u5bcyCF8clt+xZFYygwPoBcsz+NPoLsEeprE8Qp7F1mPFQvDEgBHOZqLnJx7cRWShmU69pcLfOpWw2owhYplhgqXDnvs9IXw0cQHnw7e6sSdLSDDbkhCpd6lrmcfU54cfgD9BTwTskPAIitHFQgcvze+C+csT4WctctpdO+IMmPM+LigYDekaBB6SnDiv1okzES8QnPFy1d/QUpQ/+xqMs2et8kqvwclaUvt74+HLMJAQKo8z8t+443xYyqjCQLPSaEafZ7pc1KSBFFzmZTYztOMfs6wFi08WjhjBquMv74sc2wYGP/Re8qmwL835/uQTSr4UsOnpRh/7FxJ0AwxOuHBI0/WeCgRsRwpdaGD4V9RUNOnWgr8qnRjcQcu+PRdjP955s+mkua08yGiPKNNzotFwz2auy78b6yvby/7qy/ja64tQOdb6hKd3edK4RlO5rcdRfDtH/0Q== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: da025622-a27d-4ae7-f619-08da0c494de3 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:17:00.7152 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: sE0j3tC6sksTHJHK2xg47c1nCDijj99YRVxosi6DUxE0B7BB4iDk2XP7OOphqBO/WicdanpzYFoh5nllE8QGVw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR03MB3736 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This adds support for booting entirely from JTAG while using a hard-coded RCW. With these steps, it is not necessary to program a "good" RCW using CodeWarrior. The method here can be performed with any JTAG adapter supported by OpenOCD, including the on-board CMSIS-DAP (albeit very slowly). These steps require LS1046A support in OpenOCD, which was added in [1]. [1] https://sourceforge.net/p/openocd/code/ci/5b70c1f679755677c925b4e6dd2c3d8be4715717/ Signed-off-by: Sean Anderson --- Changes in v3: - Add dummy device number for hostfs arch/arm/cpu/armv8/fsl-layerscape/spl.c | 2 + board/freescale/ls1046ardb/ls1046ardb.c | 10 ++++ doc/board/nxp/ls1046ardb.rst | 71 +++++++++++++++++++++++++ doc/usage/semihosting.rst | 3 +- include/configs/ls1046ardb.h | 2 + 5 files changed, 87 insertions(+), 1 deletion(-) diff --git a/arch/arm/cpu/armv8/fsl-layerscape/spl.c b/arch/arm/cpu/armv8/fsl-layerscape/spl.c index 564cc27c8b..1a7dde30a5 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/spl.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/spl.c @@ -27,6 +27,8 @@ DECLARE_GLOBAL_DATA_PTR; u32 spl_boot_device(void) { + if (IS_ENABLED(CONFIG_SPL_SEMIHOSTING)) + return BOOT_DEVICE_SMH; #ifdef CONFIG_SPL_MMC return BOOT_DEVICE_MMC1; #endif diff --git a/board/freescale/ls1046ardb/ls1046ardb.c b/board/freescale/ls1046ardb/ls1046ardb.c index d0abfe8869..9af7cf763b 100644 --- a/board/freescale/ls1046ardb/ls1046ardb.c +++ b/board/freescale/ls1046ardb/ls1046ardb.c @@ -7,6 +7,8 @@ #include #include #include +#include +#include #include #include #include @@ -27,6 +29,14 @@ DECLARE_GLOBAL_DATA_PTR; +struct serial_device *default_serial_console(void) +{ +#if IS_ENABLED(CONFIG_SEMIHOSTING_SERIAL) + return &serial_smh_device; +#endif + return &eserial1_device; +} + int board_early_init_f(void) { fsl_lsch2_early_init_f(); diff --git a/doc/board/nxp/ls1046ardb.rst b/doc/board/nxp/ls1046ardb.rst index e4499a13fb..08d81e385a 100644 --- a/doc/board/nxp/ls1046ardb.rst +++ b/doc/board/nxp/ls1046ardb.rst @@ -110,6 +110,77 @@ SD boot and eMMC boot ``{ SW5[0:8], SW4[0] }`` should be ``0010_0000_0``. eMMC is selected only if there is no SD card in the slot. +JTAG boot +^^^^^^^^^ + +To recover a bricked board, or to perform initial programming, the ls1046 +supports using two hard-coded Reset Configuration Words (RCWs). Unfortunately, +this configuration disables most functionality, including the uarts and ethernet. +However, the SD/MMC and flash controllers are still functional. To get around +the lack of a serial console, we will use ARM semihosting instead. When +enabled, OpenOCD will interpret certain instructions as calls to the host +operating system. This allows U-Boot to use the console, read/write files, or +run arbitrary commands (!). + +When configuring U-Boot, ensure that ``CONFIG_SEMIHOSTING``, +``CONFIG_SPL_SEMIHOSTING``, and ``CONFIG_SEMIHOSTING_SERIAL`` are enabled. +``{ SW5[0:8], SW4[0] }`` should be ``0100_1111_0``. Additionally, ``SW4[7]`` +should be set to ``0``. Connect to the "console" USB connector on the front of +the enclosure. + +Create a new file called ``u-boot.tcl`` (or whatever you choose) with the +following contents:: + + # Load the configuration for the LS1046ARDB + source [find board/nxp_rdb-ls1046a.cfg] + # Initialize the scan chain + init + # Stop the processor + halt + # Enable semihosting + arm semihosting enable + # Load U-Boot SPL + load_image spl/u-boot-spl 0 elf + # Start executing SPL at the beginning of OCRAM + resume 0x10000000 + +Then, launch openocd like:: + + openocd -f u-boot.tcl + +You should see the U-boot SPL banner followed by the banner for U-Boot proper +in the output of openocd. The CMSIS-DAP adapter is slow, so this can take a +long time. If you don't see it, something has gone wrong. After a while, you +should see the prompt. You can load an image using semihosting by running:: + + => load hostfs - $loadaddr + +Note that openocd's terminal is "cooked," so commands will only be sent to +U-Boot when you press enter, and all commands will be echoed twice. +Additionally, openocd will block when waiting for input, ignoring gdb, JTAG +events, and Ctrl-Cs. To make openocd process these events, just hit enter. + +Using an external JTAG adapter +"""""""""""""""""""""""""""""" + +The CMSIS-DAP adapter can be rather slow. To speed up booting, use an external +JTAG adapter. The following examples assume you are using a J-Link, though any +adapter supported by OpenOCD will do. Ensure that ``SW4[7]`` is ``1``. Attach +your jtag adapter to J22. Modify ``u-boot.tcl`` and replace the first two lines +with the following:: + + # Load the J-Link configuration (or whatever your adapter is) + source [find interface/jlink.cfg] + # Use JTAG, since the J-Link also supports SWD + transport select jtag + # The reset pin resets the whole CPU + reset_config srst_only + # Load the LS1046A config + source [find target/ls1046a.cfg] + +You can proceed as normal through the rest of the steps above. I got a speedup +of around 100x by using a J-Link. + Debug UART ---------- diff --git a/doc/usage/semihosting.rst b/doc/usage/semihosting.rst index 1d793983a7..6a280b455e 100644 --- a/doc/usage/semihosting.rst +++ b/doc/usage/semihosting.rst @@ -62,7 +62,8 @@ so you will need to enable it:: 'arm semihosting enable' -c resume Note that enabling semihosting can only be done after attaching to the -board with ``init``, and must be done while the CPU is halted. +board with ``init``, and must be done while the CPU is halted. For a more +extended example, refer to the :ref:`LS1046ARDB docs `. Loading files ------------- diff --git a/include/configs/ls1046ardb.h b/include/configs/ls1046ardb.h index 04c3ad02c8..df699bca34 100644 --- a/include/configs/ls1046ardb.h +++ b/include/configs/ls1046ardb.h @@ -140,6 +140,8 @@ #endif #endif +#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img" + #include #endif /* __LS1046ARDB_H__ */ From patchwork Tue Mar 22 21:17:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608368 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=USaIqZrC; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNPTj339nz9s1l for ; Wed, 23 Mar 2022 08:18:01 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id A7DA883B94; Tue, 22 Mar 2022 22:17:54 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="USaIqZrC"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 7149183B67; Tue, 22 Mar 2022 22:17:52 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on20602.outbound.protection.outlook.com [IPv6:2a01:111:f400:7e1a::602]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id A743783B49 for ; Tue, 22 Mar 2022 22:17:48 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k00Wguy6Euu3u1zA1jAS4JqrqDSseuCPI2qu2Elf6BTWjnMzA1LJS61cDztrrEDYKiTKJhgzZ05l6gwvIeyLsBjnPBaL7rLrCrrO7FpwvvrNPo//2BGpqrTHSvMf5Anx7LowyPPURbKfMewDOIZIus68C2AXHltmLmOTzaZofOmnPEVT1nibM5NVPebj+XSKiwpJvBrcgWdianRrV6dfEA7y7DbK+Je7OSdgHaBQBzjQZ2b6/zktDVbnhmJdj08zEYwz4g5hencRzf2ejVQ+XQL8JxZaBJDYsMMjF/c6c0EW3dLbUPz6UF/gvkXv5uest+S7lKVWGODi0ousN2YTpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rS4jODl2e5/+DxI2UOqZhfL4CsYO5uRk3LV3+bX9Um0=; b=G5wmGiZiZsE1JcVyS0xZ4rAVuYsWigGRFCv3ScUO4dvtDjd2by/+UkTymU2dfUqgCNphdndUxOafYiQNz1bZV0eRATnDHs35M+6nBN995n4hOWh/2sG5gA3rHllfSyV0kQIXGnEiy9pqk+CINxypvfhnJFg3a24lINhLZHnH7Z2pkUusC2Go/jQP5ZotLSzfi/RXQ1zyr6k8izL0gz4CD9/zLAS0IcPuAZD5z6Du3aD4UgzubfKNjRliVzW9C9mkKGbOl3kl0oHVg+6d5mgrnXePIK+XdZIjlve8dvQBHA/7wTOaqYE6ym2DeahAXwgkfpAMlW44HJ6K7WP3UiH+sQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rS4jODl2e5/+DxI2UOqZhfL4CsYO5uRk3LV3+bX9Um0=; b=USaIqZrCYO9zHiVL40vInSWfW1dquRRpwCy6iNk09utpwqil0tNIIs/O8o9g9Srtq8FxecKRNr9n1DPebttaEhARGyrXe9s/fo8lR0d81vPh2j9OBZS486SmOIFMuPsh9nG16n9t1dsX3aeZ6u7g/o0cQGadGSAiwra5r7d53YSHwjv28CeNHZDnj3SYPgiQ4hf3oBvhfJGL7YTI+F6AC2dcji+GV4Xu7AY6NTfgtWrav6L0yVDdI43RsMMnPj1fCtOK92mtGscTj35cBkY0qErf9AjEidtyOKk41j2oBZpJB9nooM8mrD1iVwpuJs44nTZx4oqWB/t7gBcVk8q1Ig== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM6PR03MB3736.eurprd03.prod.outlook.com (2603:10a6:209:2d::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.22; Tue, 22 Mar 2022 21:17:47 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:17:47 +0000 From: Sean Anderson To: u-boot@lists.denx.de Cc: Sean Anderson Subject: [RESEND PATCH v3 19/29] arm64: Save esr in pt_regs Date: Tue, 22 Mar 2022 17:17:35 -0400 Message-Id: <20220322211735.1724036-1-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: BLAP220CA0015.NAMP220.PROD.OUTLOOK.COM (2603:10b6:208:32c::20) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fe0298cb-d240-4ad1-9451-08da0c4969be X-MS-TrafficTypeDiagnostic: AM6PR03MB3736:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CQvuDMsqfabYUehVXL4jqr0odWx4mmekNTRDHOF3lY3AiFqPz7S8dxpRGdWzOMeFvMnqFo20Do6vffC1DjiCe8B+s/UrQQtb4ckOTiCg0vizovjA0Gel5kKqjQoeX0e6VNnlYoRIFHYNwHzjojEYZhqmEvWgo27DMnCI8KkM6NPhPIgAtc9IWuGi9Cmi26e4KnC8iFspds/bTW6YpI/L33+lodgmI8SOzJGhP8kBSQZuHe1Tgz19+ooEov+NjUvvkvsqAGaQieKMKZpv6tZtUBo2JYBRrV589Z5hfttXTyiTsP8AekCavYwEfB5n9aK9dr5RzeJPvOe0qye99h49fAjvt1u3Wi+rysZeIjA7PKrE5vNH6UjwAArbpKZS4AyGUnf0+zbAMC7RBq9vHe25YY+knxQDuYHN8KADGfqJcDmIwV7JdAdKFy2+Fj1JcbVQcbiOI6HohAY8hi425OrF13y32X5d4pLghQGlDEh4Jyd9iRjTOkbNqKFfE8GLKRD99DQPIHgT+n8FTfG3A4dM1GIzjwfPtGUxBs14paFEiZG+001Kbr3+zWMbdOmJzEkiwdCtdLzp9Mdm67+yay7vHLvkWJ3oEH4s4N7UnQmSOmTG3bNqhbj5qJQc3kd9OfJpeF+xohMgATFPeo9KYoH1JwyppL0p/KroqN2iXfKIl6CHJGXbMNFznZ40bi8Sf/cJLwtxCH7jd1MRG3Q0h3Q24w== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(66946007)(316002)(86362001)(6916009)(5660300002)(83380400001)(66556008)(38350700002)(38100700002)(66476007)(186003)(26005)(8676002)(4326008)(1076003)(107886003)(2616005)(6666004)(6486002)(6506007)(6512007)(52116002)(2906002)(36756003)(8936002)(44832011)(508600001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ZmJuyZJ2scIoI/xkrlzqxPOLIV0YoWeJSPDl5CgVksdSsTYqHKXelA+vqaDrIZWZnF7D73wjqZuezRJmpzzgsXpdbF41ehdJoYX4F3YTj5npmfgxG003d3pqmhi5sUxZu2LjkjUFLjNYsUX00AMVwnzR581ZiGu0aAd3vueEl0IaOUq7DVXSjY1nAyQwle49E5CXHZ+ZYzrfcnvW3oJdulE1M+6Y03JAqCyIBpV+0dOy3SSZbztvkcwCJPL1zgXpyLy7Onkn9dR537oeo8TBto5+JHC2JsHrlRWuHlZXOeNGhEK36S3sFt0DP8naCmPpNr3gFzcb5dpIHAOqDeV4lBvLIQXDFmFQGuJSYQkZIymZUQlTwdxuuKeCSWOdfiBNSBAt7Mp6QTCFcCZ1efXWeKELeFXiDndMPidKkG8aM5LfI2tGeagqzbAQmF1w0I/ff1W5AaEbo2pOPUvDe4watUTQaLGZhsOjDPBHf08PQE/iMyE+GCYVpdgEEOC2YzgUJURSVNp1ohRxLlGcb+guCVTJMeZA1IYfsf+OzSl3pcURVCp+nTLvmv7u4eNuCjkfIFNUE50iBowGwecDAeSSB7gV3hELU3E7i6pumKEc1BX4X0x6TB6nTSuCjSRAdrmx/e3s0XhwqwbNaCs0wcdFl91M/u+YxNAf29HJzu1HOhjoa/D+JD7vUQUiI2TCGuGQkcf0KxSS56ldsGYphAQSOMcLfedlskSq/Ti8qJx/3HJTQEIADDeOIOH6FMoxBbt1MHbm1yxW8lb08YTnCq6gEun8bVYQpsv4rRFgF+L+x4mSizPj+7d3PYF1Y9e7DKO4z1jFV0yoGjIKiv+7a5T1kpBAZW2ya5r3bjFGwnl+m85eUndeXLJTc8A4RWkanQjBCiz6kGP7Rk3o68xjc2dKKWQOWq44jWYgUJLkohiYlAzImFi44FRQErNOZVmHjzDnjzomGmGs/ph0TMWF9WRydpBLH8sNdXmuIOUK3g26rk4CTa1dMeA9mXSCPDZaeFEJvFwxEmN5XkOVxwcU/XVbkjy6xLwR6rs1o+lqzEq5mDXiVYK3Jh/Bz2uIxbG9/pBx7VRYSV7e7eheXvfO92CSC9WPS0rDhW49t9Gh4cP9veTyxdTljZ/kHao/dVlLej7ARsgrOnOUZJF4S/2x9FwNwQczwcBbkCsaBSB1+CkQHdSDzCwYhwDO8Rgk+bfrP4rvgYybZ6ZfrBLP74RZ4zChuRvuELvaOriM8YywsR4PfoVBibEkbWjjvWpnzGgqnrl4X97HCIbPdFakkntgmesjPEIi5J4dliAmemXCGNjCMQrxn730yacPT49sDl4ihBqMfTmcYS65CXVXlE7N8RmiJsX0LteH4E5U54k26lKgYJYd2vmeJeN/4k8wjk36N+DU0TdQ/FxoZT5w+g8m2ywll2NisxSHbWKq4ebisNaUY0Nvc/4dSwMnRKKX3aWRYruliA30HfQRix42+52Q0metBQ== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe0298cb-d240-4ad1-9451-08da0c4969be X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:17:47.3683 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 253yqygN52l9S+/SIvFrQecVqgU6s/q1CK6EewwBYSZU0QqrBg+AoPuGZOQrxRw9cQpFFJCEmQck5XKgsQmeow== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR03MB3736 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean To avoid passing around an extra register everywhere, save esr in pt_regs like the rest. For proper alignment we need to have a second (unused) register. All the printfs have to be adjusted, since it's now an unsigned long and not an int. Signed-off-by: Sean Anderson --- (no changes since v2) Changes in v2: - New arch/arm/cpu/armv8/exceptions.S | 6 +++-- arch/arm/include/asm/proc-armv/ptrace.h | 2 ++ arch/arm/include/asm/u-boot-arm.h | 7 +----- arch/arm/lib/interrupts_64.c | 33 +++++++++++++------------ arch/arm/mach-imx/imx8m/soc.c | 4 +-- 5 files changed, 26 insertions(+), 26 deletions(-) diff --git a/arch/arm/cpu/armv8/exceptions.S b/arch/arm/cpu/armv8/exceptions.S index a15af72e02..001913f429 100644 --- a/arch/arm/cpu/armv8/exceptions.S +++ b/arch/arm/cpu/armv8/exceptions.S @@ -84,7 +84,8 @@ _save_el_regs: 1: mrs x1, esr_el1 mrs x2, elr_el1 0: - stp x2, x0, [sp, #-16]! + stp x1, x0, [sp, #-16]! + stp xzr, x2, [sp, #-16]! mov x0, sp ret @@ -98,7 +99,7 @@ _save_el_regs: * This is the first part of the shared routine called into from all entries. */ exception_exit: - ldp x2, x0, [sp],#16 + ldp xzr, x2, [sp],#16 switch_el x11, 3f, 2f, 1f 3: msr elr_el3, x2 b _restore_regs @@ -118,6 +119,7 @@ exception_exit: * This is the second part of the shared routine called into from all entries. */ _restore_regs: + ldp xzr, x0, [sp],#16 ldp x1, x2, [sp],#16 ldp x3, x4, [sp],#16 ldp x5, x6, [sp],#16 diff --git a/arch/arm/include/asm/proc-armv/ptrace.h b/arch/arm/include/asm/proc-armv/ptrace.h index e37ad8fd1f..bebcaf6e33 100644 --- a/arch/arm/include/asm/proc-armv/ptrace.h +++ b/arch/arm/include/asm/proc-armv/ptrace.h @@ -21,7 +21,9 @@ * on the stack during an exception. */ struct pt_regs { + unsigned long unused; unsigned long elr; + unsigned long esr; unsigned long regs[31]; }; diff --git a/arch/arm/include/asm/u-boot-arm.h b/arch/arm/include/asm/u-boot-arm.h index 0b93cc48c5..aef048708d 100644 --- a/arch/arm/include/asm/u-boot-arm.h +++ b/arch/arm/include/asm/u-boot-arm.h @@ -46,13 +46,8 @@ void do_software_interrupt(struct pt_regs *pt_regs); void do_prefetch_abort(struct pt_regs *pt_regs); void do_data_abort(struct pt_regs *pt_regs); void do_not_used(struct pt_regs *pt_regs); -#ifdef CONFIG_ARM64 -void do_fiq(struct pt_regs *pt_regs, unsigned int esr); -void do_irq(struct pt_regs *pt_regs, unsigned int esr); -#else void do_fiq(struct pt_regs *pt_regs); -void do_irq(struct pt_regs *pt_regswq); -#endif +void do_irq(struct pt_regs *pt_regs); void reset_misc(void); diff --git a/arch/arm/lib/interrupts_64.c b/arch/arm/lib/interrupts_64.c index c653e67db2..049beeca7e 100644 --- a/arch/arm/lib/interrupts_64.c +++ b/arch/arm/lib/interrupts_64.c @@ -66,10 +66,11 @@ void show_regs(struct pt_regs *regs) /* * do_bad_sync handles the impossible case in the Synchronous Abort vector. */ -void do_bad_sync(struct pt_regs *pt_regs, unsigned int esr) +void do_bad_sync(struct pt_regs *pt_regs) { efi_restore_gd(); - printf("Bad mode in \"Synchronous Abort\" handler, esr 0x%08x\n", esr); + printf("Bad mode in \"Synchronous Abort\" handler, esr 0x%08lx\n", + pt_regs->esr); show_regs(pt_regs); show_efi_loaded_images(pt_regs); panic("Resetting CPU ...\n"); @@ -78,10 +79,10 @@ void do_bad_sync(struct pt_regs *pt_regs, unsigned int esr) /* * do_bad_irq handles the impossible case in the Irq vector. */ -void do_bad_irq(struct pt_regs *pt_regs, unsigned int esr) +void do_bad_irq(struct pt_regs *pt_regs) { efi_restore_gd(); - printf("Bad mode in \"Irq\" handler, esr 0x%08x\n", esr); + printf("Bad mode in \"Irq\" handler, esr 0x%08lx\n", pt_regs->esr); show_regs(pt_regs); show_efi_loaded_images(pt_regs); panic("Resetting CPU ...\n"); @@ -90,10 +91,10 @@ void do_bad_irq(struct pt_regs *pt_regs, unsigned int esr) /* * do_bad_fiq handles the impossible case in the Fiq vector. */ -void do_bad_fiq(struct pt_regs *pt_regs, unsigned int esr) +void do_bad_fiq(struct pt_regs *pt_regs) { efi_restore_gd(); - printf("Bad mode in \"Fiq\" handler, esr 0x%08x\n", esr); + printf("Bad mode in \"Fiq\" handler, esr 0x%08lx\n", pt_regs->esr); show_regs(pt_regs); show_efi_loaded_images(pt_regs); panic("Resetting CPU ...\n"); @@ -102,10 +103,10 @@ void do_bad_fiq(struct pt_regs *pt_regs, unsigned int esr) /* * do_bad_error handles the impossible case in the Error vector. */ -void do_bad_error(struct pt_regs *pt_regs, unsigned int esr) +void do_bad_error(struct pt_regs *pt_regs) { efi_restore_gd(); - printf("Bad mode in \"Error\" handler, esr 0x%08x\n", esr); + printf("Bad mode in \"Error\" handler, esr 0x%08lx\n", pt_regs->esr); show_regs(pt_regs); show_efi_loaded_images(pt_regs); panic("Resetting CPU ...\n"); @@ -114,10 +115,10 @@ void do_bad_error(struct pt_regs *pt_regs, unsigned int esr) /* * do_sync handles the Synchronous Abort exception. */ -void do_sync(struct pt_regs *pt_regs, unsigned int esr) +void do_sync(struct pt_regs *pt_regs) { efi_restore_gd(); - printf("\"Synchronous Abort\" handler, esr 0x%08x\n", esr); + printf("\"Synchronous Abort\" handler, esr 0x%08lx\n", pt_regs->esr); show_regs(pt_regs); show_efi_loaded_images(pt_regs); panic("Resetting CPU ...\n"); @@ -126,10 +127,10 @@ void do_sync(struct pt_regs *pt_regs, unsigned int esr) /* * do_irq handles the Irq exception. */ -void do_irq(struct pt_regs *pt_regs, unsigned int esr) +void do_irq(struct pt_regs *pt_regs) { efi_restore_gd(); - printf("\"Irq\" handler, esr 0x%08x\n", esr); + printf("\"Irq\" handler, esr 0x%08lx\n", pt_regs->esr); show_regs(pt_regs); show_efi_loaded_images(pt_regs); panic("Resetting CPU ...\n"); @@ -138,10 +139,10 @@ void do_irq(struct pt_regs *pt_regs, unsigned int esr) /* * do_fiq handles the Fiq exception. */ -void do_fiq(struct pt_regs *pt_regs, unsigned int esr) +void do_fiq(struct pt_regs *pt_regs) { efi_restore_gd(); - printf("\"Fiq\" handler, esr 0x%08x\n", esr); + printf("\"Fiq\" handler, esr 0x%08lx\n", pt_regs->esr); show_regs(pt_regs); show_efi_loaded_images(pt_regs); panic("Resetting CPU ...\n"); @@ -153,10 +154,10 @@ void do_fiq(struct pt_regs *pt_regs, unsigned int esr) * it is defined with weak attribute and can be redefined * in processor specific code. */ -void __weak do_error(struct pt_regs *pt_regs, unsigned int esr) +void __weak do_error(struct pt_regs *pt_regs) { efi_restore_gd(); - printf("\"Error\" handler, esr 0x%08x\n", esr); + printf("\"Error\" handler, esr 0x%08lx\n", pt_regs->esr); show_regs(pt_regs); show_efi_loaded_images(pt_regs); panic("Resetting CPU ...\n"); diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c index 838f0a3749..7397b99a1e 100644 --- a/arch/arm/mach-imx/imx8m/soc.c +++ b/arch/arm/mach-imx/imx8m/soc.c @@ -1295,7 +1295,7 @@ void imx_tmu_arch_init(void *reg_base) #if defined(CONFIG_IMX8MQ) || defined(CONFIG_IMX8MM) || defined(CONFIG_IMX8MN) bool serror_need_skip = true; -void do_error(struct pt_regs *pt_regs, unsigned int esr) +void do_error(struct pt_regs *pt_regs) { /* * If stack is still in ROM reserved OCRAM not switch to SPL, @@ -1320,7 +1320,7 @@ void do_error(struct pt_regs *pt_regs, unsigned int esr) } efi_restore_gd(); - printf("\"Error\" handler, esr 0x%08x\n", esr); + printf("\"Error\" handler, esr 0x%08lx\n", pt_regs->esr); show_regs(pt_regs); panic("Resetting CPU ...\n"); } From patchwork Tue Mar 22 20:59:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608362 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=hvX/NudI; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP9x6LhHz9s1l for ; Wed, 23 Mar 2022 08:04:21 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id D514083F68; Tue, 22 Mar 2022 22:02:45 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="hvX/NudI"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id CA67283C67; Tue, 22 Mar 2022 22:01:23 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-am5eur02on061b.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe07::61b]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 80CDE83BAC for ; Tue, 22 Mar 2022 22:00:31 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ntmSEyY7RBenaFuiOe6x9eQ+JJzqHlj+REuFOwu+qoDkHUoucQp3vodG4ExBDYDlCdxvAKe25czHgP3fMDEswHdzhSI7qLVFyAFc2oy+mCc9CF1bHetzUGxAzgWeTC3tlEvJ6JP67nYjHXUwW+Ho01+6UmEQeDNF9fTZV4Tw7BvgWmmdOsg1lkv2qWB5QooFSqaYFX9bhdR+hKBTQHZLg0VVZ3MFFEv93TWPE4uI9JCViCuSSZc93tuwYn3ftDo5p5TyGTPIuertPrPRjv1uoFZ2HGzfl5Ts+sQ+LJZLG0IU8knBwIa118SraDyUbf15unePXmL8MuMmqfLGqwORmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1yNaw28PJpUANlhinAr6sYYJ5y9ERszjpBcM0xX4If4=; b=m+CjLDWbxaotX1p9geQk+ElaItj4x3tGZCL3Fg86OdO35cOZ4jC6+6oXSXM2pGjOqcz1T/UFLg3qDsvvgUunviLtug5YLoZ8TzDQtyyFCBQIb8d0seXC/FDBcLukqqWHnak0JLMVfSOSVGKZv6gdTIBW7BzxwhqCJh1vGvrpmrRA7cNNruAe35HX8uz4NBRqnUodjI6/OnZ75P0fztCvIvveScPbpdnE+Van7RrhmbrStWHRVI11dN7APF+Lk+gEi8fV3R85Tv76HLNSS/Fd6tsA580xra9IP2MBVg9PxcxE5F4joU0Kv9pKJ93kG5MUpyCl0qkI7xOLPRTf6jKnRA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1yNaw28PJpUANlhinAr6sYYJ5y9ERszjpBcM0xX4If4=; b=hvX/NudIS/+sILLxHOZYBgk1xHbJuPWwtz4MbgGkAra2+6eUC0YLMcujEqBv1IFrkKnK3UauXG6sOWYj/I2fospF3lzg+RrJ6sGGE6IBPjj0yKki0LPl/DWO/Lw0/0cCMcuFWUjrbMDbi5k2+P7gY7WFaN38RQZ+Zp4gNQjcUo6qWlQrfN8Ce1xYWgejbVmtNAe4D8u157BEdSRx8+H80omeHP5bsxcX+P6G3pYom2sniS7eA1Y+jT0wNbD5QJvHqPC2sPcw2oduc7q93C6Q3zNYTl6Kw0YJnc8Nc7yPGoruhnpgaPVrDDoR21cGADhhl4IcKDgRnUUdgA/rsOLeag== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by VI1PR03MB4591.eurprd03.prod.outlook.com (2603:10a6:803:5f::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:29 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:29 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 20/29] arm64: Save spsr in pt_regs Date: Tue, 22 Mar 2022 16:59:28 -0400 Message-Id: <20220322205938.1721846-21-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bdd4849f-8180-4578-8cff-08da0c46feee X-MS-TrafficTypeDiagnostic: VI1PR03MB4591:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sq0GMCktTks/DKCG4Tpdk1thArM/gdwgycY2P9K/xQVIu3rSoPtdGcpTTMqtsokymxi+4BrpC3ADiR4uO0/nBpfilCPnZn1nyh2MOWf3hBs2M6EKFKWw/Gk/Hxv4FJAvfmG57lXgTRy8x3mDjTV7MJ4GNjYaU8vy0IlnA3tUGWkIr9Q+3Bba33aUeKV3+G+e8y2u/4+lXKRUaEV5/OsnXrPD6QIq6jSRdKFf8Ic2GS0SU45Jr3bQ5NHm+AOaamde7DXWqj9AEOdg3/A//lLNsJcfsSMliUqM9DskjrRILDC4X4PBhGW4FEYJPfPhuxh9BQkdS0UvKFwpvnmRk7WkFriVT1PTC0KKE1+gr63FraVTPZoq4uhF+mdROgTwEA7pUIB+rPy9Kio+YQ+6wB7QiYQp9C7/rtgOJ1zRfedO7cXp5wv7DPYEbmAuVG4pHsqzsMkaEngpnNoT9NstH2N8jMDBMU2n6Uxec5w42+0sY2qqBZC1biMcMkjNa0KHdKKtLv7S0TgmxSnsly1Xv4/0rym8Pj3PAUt8/mb8mI8Yyjpvvg9gfe2uHN1J/Rq+hi+1tyTzGSWEeHNMz4uxKQIYjZdNV+XDdGG7J59xmdBKZ3qjeJ7KP5XtOGP8/PfYN4q+404eQ7p0VXhqMJQhbSBeFo7a9zQWXx2BhruJA/8cdeb/8sszJfcF0fc9hZY0BX8r0f650rq/mCPPPr8sCOYAfA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(83380400001)(6486002)(186003)(26005)(107886003)(38100700002)(38350700002)(2616005)(1076003)(6506007)(6512007)(6916009)(36756003)(52116002)(54906003)(316002)(4326008)(5660300002)(8676002)(66556008)(66476007)(508600001)(86362001)(66946007)(8936002)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GONJ3MVtuh82GUv9NuXm+QnE5lg+uxaZDXA8u+4QxtUDfjVD9irq/0merDnotMEbP+6P2uwTNmRjfgSXTUXtTzaBcL/S+sEjrvT7bOGma0JTx2om8flE7QdKm+M8Qk6GPqEvXaizy8QGMehhbKXgUGVzLaGCwTaZgSuoTYuzEWDIVIBJ8uAlyIkgJz3+RV6hVNrxR7nx0l1qmUedMBQpyOKWCrxzU/Td1ppD2ZMIOPH8n2luoxuUvYA7/U5J67sNALibcJmjLInI7P3JzOb7DvYMCV9sDFZh9PZ724I/0T4ysyZo6dootbasbY0GxdADQSCt2Oq5+JIclXJ2OxNgR5/te1eGSaqpgRbJSaGaeUqWCEejJogUw7gF5T8Bl5mIx6gnBI84hLmusfBkwCqTMK+LVRc27mI0gsS4P9e4L+/UAKMf6sL2Yv5vKRB255wHHYnY6Q52FhqTXVJADFMytURtxx/6qlJoGhyWzDH73cyHpDRcgO8zHJFyIhwz1y0kSxYjUggroxsSxt69nchJ733ancC5W9mbcBZT28JyHFe25nK3zA0JCwNIqi2/NHEz5+jTEh/OJpND+8xEa9tR7m/Yt3lWfOmHXziXgx8xaLVW4DpmfQboaZPky6+RRoZXCdMUSEaSIV4sfltlOsDlDAW8QPY6Runj59mCLw355pwQHdrkLBljV/QwIamRNX1GyGKxhStI4l1e38VX8EjZhrMuyghMi3xAQGOOjGt7A83dyb485UP1JWMikN0jq/r7Hr1Obrme7p7pXRtI95XPoSRUDL4J3bWAQHCHJTK4f8PlxMOevfXQ3hgZifs53cZxgwskg43a5pk3/kNABxMRLnRfLQj5f924RYdlDixYfaPWJZSs8+YZNV3tnnSp6Ofuf/PPzCnfuIiUx9ZvlQW4AkIrNPFbV7t9vPvXzFclFUtjwnOK3eeA5AjI6eMjzxaVp/Th7ihAz2W/yFSXGO7BmoGAk/SlsZUSGPzZxnxY9sJMgfPz03IAOA0mZeXL98/zbD/v6lrI1FFMBOTvS/zslatdpAZAXOzvCywETfQGFugvx8hrsHtrDTtDLC4ICBmMrbiIVW3GtswZgiOR4X4DapueEmZVfjPVemvMFD214glE3R/ptSLSpQpVYU8NShB/55nWMhDAqxPevHvqSMNEKemMyLwj5cYGkgLhFxa/tkqK+wQOqXOBJFYKRtibvfOpKo1OyHt4LkFaDkOp/pxWsDjky4fU+r/2+nSkdL4mCmCHqEhZeYcweORlmXztZTniVyCW0Kp0cYRB9OSLxeB0bql3Ams3eDyPMZjf9iiEUEgZEpN2H/pur2vzvq8wA+5DN5xMD2bAcEpW8yO8qMCt48DNBmm28lBZcdo2E/sNW/N68RWi/qke2kaUxdXHkYsF8dAbChj0R6k/XSgFiLpwq+tv0vj0LCMPRL9saPZOUvoALFlmEEPKY0mb4JinhF5LUsv9yhk23vTyDbuwPFTSUA== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: bdd4849f-8180-4578-8cff-08da0c46feee X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:29.3136 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: hgir0fDWOb1cReIcdq1Qt1XpZN8FnKOHQw/BfUXLuc8kWMdQM0hP0TerzSs9xfYyrKuyUalxX5GJPOpQRPYGig== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB4591 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This register holds "pstate" which includes (among other things) the instruction mode the CPU was in when the exception was taken. This is necessary to correctly interpret instructions at elr. Signed-off-by: Sean Anderson --- Changes in v3: - Fix loading the wrong EL's SPSR Changes in v2: - New arch/arm/cpu/armv8/exceptions.S | 5 ++++- arch/arm/include/asm/proc-armv/ptrace.h | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/arch/arm/cpu/armv8/exceptions.S b/arch/arm/cpu/armv8/exceptions.S index 001913f429..504d566721 100644 --- a/arch/arm/cpu/armv8/exceptions.S +++ b/arch/arm/cpu/armv8/exceptions.S @@ -77,15 +77,18 @@ _save_el_regs: switch_el x11, 3f, 2f, 1f 3: mrs x1, esr_el3 mrs x2, elr_el3 + mrs x3, spsr_el3 b 0f 2: mrs x1, esr_el2 mrs x2, elr_el2 + mrs x3, spsr_el2 b 0f 1: mrs x1, esr_el1 mrs x2, elr_el1 + mrs x3, spsr_el1 0: stp x1, x0, [sp, #-16]! - stp xzr, x2, [sp, #-16]! + stp x3, x2, [sp, #-16]! mov x0, sp ret diff --git a/arch/arm/include/asm/proc-armv/ptrace.h b/arch/arm/include/asm/proc-armv/ptrace.h index bebcaf6e33..3b8fe7aac0 100644 --- a/arch/arm/include/asm/proc-armv/ptrace.h +++ b/arch/arm/include/asm/proc-armv/ptrace.h @@ -21,7 +21,7 @@ * on the stack during an exception. */ struct pt_regs { - unsigned long unused; + unsigned long spsr; unsigned long elr; unsigned long esr; unsigned long regs[31]; From patchwork Tue Mar 22 21:18:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608369 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=psyfW5A6; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNPVp5w7Bz9s1l for ; Wed, 23 Mar 2022 08:18:58 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id F35D983B58; Tue, 22 Mar 2022 22:18:54 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="psyfW5A6"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 57D2283B99; Tue, 22 Mar 2022 22:18:53 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on062f.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0e::62f]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id F29CA83B4F for ; Tue, 22 Mar 2022 22:18:48 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BrZnhQzTBHH6TIFliUa0qxKkbxHdacpLX35u4I/C7fBOvQlVKEmXKtwyRkrQn0wReHb8yn5l+ISeZHfyQKZjnXhmsA93A/7uCDlxF750Uh5s1ptVa+gM305E6GbArPudrP8QM+INCLPGf/8yIJYBklIYgFs9S7A6AbhlU/XG4YcnnqM6h6SKxhhll9xb7Uqao6ABN1B8KV61yXQlfUfok2YJ5pcgFHn/v90ycii1s/DDNere8pWXldwjmrbP8YGIpCcZaPVQPWsG/KHftHQmnPVm0tlWrg+T67m10OoQft9017ixo0DqvXZMUEKCBzbonixqX3J9+tTJqbIX8iBwCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=K3skqmyza5r1kZ0IZ3uYi1+nAcMqaXXJ4TQyw6GLoRE=; b=Ue/zsY0JZMGFLyptPSPIizJPJ40QsxssuLBVdAohDLHhxFz/C4P2n0r/otZte4ja9cIrj7VWX17YzYfoDGbf6p731/VDg3hA05Gf4WMIMZjqNgBQFFkZqfkOC+sjWfy7tO/V5vKh6xTusq+fgcK614jEJPzO3grw5MP5Tck127sBNwm5MfWjGqxWjht5rOlHopzjcmJZGnC1DLFcRNA0buCP8rH3qE2H3X9m+xv9IzSbQun2uAR/2xVE0pCtb5xB56SgP1Bw75cIAZspJJB4/9eBqqHcmVty7C1VIyOSwuquO3RI/qnuPKDQ7vPeXQLU94uoZnuidgOIybgW4yq8Hg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=K3skqmyza5r1kZ0IZ3uYi1+nAcMqaXXJ4TQyw6GLoRE=; b=psyfW5A6uTILZ7DtDKtVuM5AbWvAaUyvak/RfMxM6JA+VXDnlz7KQ1kKi3BfuC1gvpnaYJx7PgGtgdFHVB9qyK4KIwVmntMMWrtRkkJMM2Lqmfu2G4FMcBNr/5CxDihvTZ84K+hji1OgfD//eMMTRF9uyas8S89JP70t6zY0jMh9WKHEgyCJyXG9/Rh110SiEMdUJSuvYsZ9e6uyVrKOr71r1qeTQKwHKS05NU27BvgtxwyPlV+rDRBmcUeuR9BSyb4tWj2CZCW8HXooLAGWXnKPCzu2CHEJgOzkjpRKKViZoIGT970+4AUUIBiSCjpqCVxSxxd1ymO7bxKCFORJmg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM6PR03MB3736.eurprd03.prod.outlook.com (2603:10a6:209:2d::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.22; Tue, 22 Mar 2022 21:18:47 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:18:47 +0000 From: Sean Anderson To: u-boot@lists.denx.de Cc: Sean Anderson Subject: [RESEND PATCH v3 21/29] arm64: Import some ESR and SPSR defines from Linux Date: Tue, 22 Mar 2022 17:18:37 -0400 Message-Id: <20220322211837.1724208-1-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: BL1P223CA0030.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:2c4::35) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c894ba3c-de55-48c3-b2b3-08da0c498d77 X-MS-TrafficTypeDiagnostic: AM6PR03MB3736:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rwrRjT81YXMdNCoH3o6sHGOOpDqYvmxEDtdUfOJGD3XoC0z/YMeP2hrb0lcWm/k8YbyZkgPG1iqo8dJswU8W4R+NqTpT9lyYpidIU0fEs+Mugo8qG9jqmS6GV3LfLGe6SFz9/ygv3bU1L2OUzBAn40ckOoxYDUDLkunXxMW9/rarrJ754GAKWUiseT2ESebzPx5OE1BXyx7kiXLonNYK2PTSlSeYjwqA/S/2vHh/UgknKOboIvVp/DwLzPlCuXi4dImiwVq4QrJLUcQEPcrFIE/i6NtKvrYNoZlwnfTcNSh76aev1pZO11Tp6VDneMv0tjyTEpeL1KYDVtR0+2CG1oWDuMuty+iLF/f47tdFyVpmZILl1hLGlUUeLwqWxQQe0vXwwSiJZRgHeBk0xR8pjFWWnqC7RIlK5bshbkWXuMyCA6iaoZVJx3YUqqfh3xyiXLyH2dNceja3AggbIWvV7QtyipAnrhebnR+6RL4tsjpdK4s0bsLdr6/PumkORl5w0HUYQqqaPoixzjT9A83dxwUxN0BFPzfX95w4Kn1G0d4v3OqaAlozLDmeOaajON0Yv44CeSSxKwlYcOegf/rGu4PBnhw44S5kdIYwluSSS5fXlgM+8IO8dgfFzIFXuBzHtW+Mli1iTAAHbJUJCXoQ+aFkYsjvsvOHexMd2T7YjY8D0Y1oTOw4oXfGMNjSzogUuUYTgKX0/6FYjNKkP3knNw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(66946007)(316002)(86362001)(6916009)(5660300002)(83380400001)(66556008)(38350700002)(38100700002)(66476007)(186003)(26005)(8676002)(4326008)(1076003)(107886003)(2616005)(6666004)(6486002)(6506007)(6512007)(52116002)(2906002)(36756003)(8936002)(30864003)(44832011)(508600001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?3ZOlVBKTkPRdaAQgCbZO1h4Fr4+2?= =?utf-8?q?55qJ06FOH915lN48PHxBbRnDHDk7iDwRmW/spKa1qZgA7IHC9rl4vNvk7XkXOtwQj?= =?utf-8?q?0hoQB5+rdYI5ShFaG4is3S/EpJLUYzqVFQaW7lhSmxXwCCsO89D7ISiIlSI43MsMM?= =?utf-8?q?W6yXASOD1BlnS/dptd8uGLMEzvlFKZWilr7GxPFQDV0h6tSSRs/c2a3eJzyYzNt2D?= =?utf-8?q?LPYeIS+O5xQYT7mcj4rPpX+NlORP5Bp9Y5j7UjKBoefxN0qyN3sdhJEIqOkv0VlgA?= =?utf-8?q?B7mXk1sYOWrJxi+/xApRbMMHFYqEv+rMAaijMCx1DEjVZTcZTYGt6S45AeIeHAwQu?= =?utf-8?q?jiVCwuryjFkraTK+kTZLJ2k+SNOjwWTJMVLbIBjMdrcZe4bLQpEQLN87xwGJzgti7?= =?utf-8?q?HkCWHk/gn/G4fM4xOiKobNf3hieJaoNQK4Q+741L2uMjgaOVPEqsscCSA/JOSnzqa?= =?utf-8?q?sFdEfBXXioE8qGqx8ZrOXBsmD5DgiwJ/nFMwtYGyOy5B/IVmcfXOWAOevin6/Xe9x?= =?utf-8?q?jwnS60SkxpgKPzJNtUpYQQligJf2XeeJDKyj66CCGjcuFsnYZpHKIJFFP7Xv0CZEN?= =?utf-8?q?XQsZMcIC21vHrzzFOak0cgej6P85fD1Zp8qoOpuD9NXGk6qL3s5BA3B7ze79HsCSb?= =?utf-8?q?BWtTMyo39Tvg1m50YM+OG6xuBEHLRuukEkXJcVQjI4psVZ7HZO510lif9GG4y0DQr?= =?utf-8?q?ROZh0slB2bfoCxUvV081Td/+8NAIhmnFr4UD6sLHWZwRDyHNy5Sw8lfheSaVLE4q0?= =?utf-8?q?42d81feR4NsuURzqBCODwRxuRa4oz79OxkhNJX/EKZpk+4IQVb4xqRYkxDoXbM3qa?= =?utf-8?q?1xNNVePVa9IAXfoBejTMD02itYtV17niKaUS+YliCF3+hvPlerSqqo7BSs5Fo2ru7?= =?utf-8?q?X0ZrLjaCM429ClwPUliLH6nbDWa5UoGMUyeJV53KlP0hkFRAIfhWbXTkCiX8czHAD?= =?utf-8?q?ysn91mjf0K/sunA64n9uHXlJJAnGnJoNPcaSKBOG3k98kyi8MOvqTbaaCnfEMJNxG?= =?utf-8?q?XGrtsTw1AgrB+Bb9f6K76/cJJAa2pArJgAEmJ6ZL0wWWOnf66TYN0Uk0ZZhCqPfJp?= =?utf-8?q?GjKntFjoRx3sRnPJI+hoBeDZdxWwabkKsgBy31+vhPI/PYKVh2VMO05kqq6t0Lql1?= =?utf-8?q?57Y90ekqzWZwncd6KfomW5AM4hnH59lxaxKdYe5RiYUU+UtwwE175oDjHeTtuCVTW?= =?utf-8?q?XteVwilQjM0IDTPV1FAfDIXSLzquWuzczVADBnUpjk6AEN0hGIXQ2aDyivaC5Jift?= =?utf-8?q?qlOh7xlFoKYOmO6DoUOawBekhkMUrd/nK9Qb9A54kygt+wCHV4mOtGdopj3DETY71?= =?utf-8?q?DAeonRky3tUB84/3KdMfTULTZIeTmBKyhsx8vXwkmWdPUq5wC8g4RPHsMIZPz3KQZ?= =?utf-8?q?CKFYg0o4VAv/R3U8+UqU345T+uN/t9SwGpLQ=3D=3D?= X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: c894ba3c-de55-48c3-b2b3-08da0c498d77 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:18:47.3955 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: kauVD1Ms6VAfc/oScztwjo9o1GlfD9xWHquHuviJeeEyIEt/boGYWjTjuuBKZGLIXR6XuJDk+k9w+ztJKP7scQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR03MB3736 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This imports some defines for esr and spsr from Linux v5.16. I have modified the includes and fixed some indentation nits but otherwise it is the same. There are a lot more defines than we need, but it doesn't hurt. Signed-off-by: Sean Anderson --- (no changes since v2) Changes in v2: - New arch/arm/include/asm/esr.h | 343 ++++++++++++++++++++++++ arch/arm/include/asm/proc-armv/ptrace.h | 73 +++++ 2 files changed, 416 insertions(+) create mode 100644 arch/arm/include/asm/esr.h diff --git a/arch/arm/include/asm/esr.h b/arch/arm/include/asm/esr.h new file mode 100644 index 0000000000..f19e4e726a --- /dev/null +++ b/arch/arm/include/asm/esr.h @@ -0,0 +1,343 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (C) 2013 - ARM Ltd + * Author: Marc Zyngier + */ + +#ifndef __ASM_ESR_H +#define __ASM_ESR_H + +#include +#include + +#define ESR_ELx_EC_UNKNOWN (0x00) +#define ESR_ELx_EC_WFx (0x01) +/* Unallocated EC: 0x02 */ +#define ESR_ELx_EC_CP15_32 (0x03) +#define ESR_ELx_EC_CP15_64 (0x04) +#define ESR_ELx_EC_CP14_MR (0x05) +#define ESR_ELx_EC_CP14_LS (0x06) +#define ESR_ELx_EC_FP_ASIMD (0x07) +#define ESR_ELx_EC_CP10_ID (0x08) /* EL2 only */ +#define ESR_ELx_EC_PAC (0x09) /* EL2 and above */ +/* Unallocated EC: 0x0A - 0x0B */ +#define ESR_ELx_EC_CP14_64 (0x0C) +#define ESR_ELx_EC_BTI (0x0D) +#define ESR_ELx_EC_ILL (0x0E) +/* Unallocated EC: 0x0F - 0x10 */ +#define ESR_ELx_EC_SVC32 (0x11) +#define ESR_ELx_EC_HVC32 (0x12) /* EL2 only */ +#define ESR_ELx_EC_SMC32 (0x13) /* EL2 and above */ +/* Unallocated EC: 0x14 */ +#define ESR_ELx_EC_SVC64 (0x15) +#define ESR_ELx_EC_HVC64 (0x16) /* EL2 and above */ +#define ESR_ELx_EC_SMC64 (0x17) /* EL2 and above */ +#define ESR_ELx_EC_SYS64 (0x18) +#define ESR_ELx_EC_SVE (0x19) +#define ESR_ELx_EC_ERET (0x1a) /* EL2 only */ +/* Unallocated EC: 0x1B */ +#define ESR_ELx_EC_FPAC (0x1C) /* EL1 and above */ +/* Unallocated EC: 0x1D - 0x1E */ +#define ESR_ELx_EC_IMP_DEF (0x1f) /* EL3 only */ +#define ESR_ELx_EC_IABT_LOW (0x20) +#define ESR_ELx_EC_IABT_CUR (0x21) +#define ESR_ELx_EC_PC_ALIGN (0x22) +/* Unallocated EC: 0x23 */ +#define ESR_ELx_EC_DABT_LOW (0x24) +#define ESR_ELx_EC_DABT_CUR (0x25) +#define ESR_ELx_EC_SP_ALIGN (0x26) +/* Unallocated EC: 0x27 */ +#define ESR_ELx_EC_FP_EXC32 (0x28) +/* Unallocated EC: 0x29 - 0x2B */ +#define ESR_ELx_EC_FP_EXC64 (0x2C) +/* Unallocated EC: 0x2D - 0x2E */ +#define ESR_ELx_EC_SERROR (0x2F) +#define ESR_ELx_EC_BREAKPT_LOW (0x30) +#define ESR_ELx_EC_BREAKPT_CUR (0x31) +#define ESR_ELx_EC_SOFTSTP_LOW (0x32) +#define ESR_ELx_EC_SOFTSTP_CUR (0x33) +#define ESR_ELx_EC_WATCHPT_LOW (0x34) +#define ESR_ELx_EC_WATCHPT_CUR (0x35) +/* Unallocated EC: 0x36 - 0x37 */ +#define ESR_ELx_EC_BKPT32 (0x38) +/* Unallocated EC: 0x39 */ +#define ESR_ELx_EC_VECTOR32 (0x3A) /* EL2 only */ +/* Unallocated EC: 0x3B */ +#define ESR_ELx_EC_BRK64 (0x3C) +/* Unallocated EC: 0x3D - 0x3F */ +#define ESR_ELx_EC_MAX (0x3F) + +#define ESR_ELx_EC_SHIFT (26) +#define ESR_ELx_EC_WIDTH (6) +#define ESR_ELx_EC_MASK (UL(0x3F) << ESR_ELx_EC_SHIFT) +#define ESR_ELx_EC(esr) (((esr) & ESR_ELx_EC_MASK) >> ESR_ELx_EC_SHIFT) + +#define ESR_ELx_IL_SHIFT (25) +#define ESR_ELx_IL (UL(1) << ESR_ELx_IL_SHIFT) +#define ESR_ELx_ISS_MASK (ESR_ELx_IL - 1) + +/* ISS field definitions shared by different classes */ +#define ESR_ELx_WNR_SHIFT (6) +#define ESR_ELx_WNR (UL(1) << ESR_ELx_WNR_SHIFT) + +/* Asynchronous Error Type */ +#define ESR_ELx_IDS_SHIFT (24) +#define ESR_ELx_IDS (UL(1) << ESR_ELx_IDS_SHIFT) +#define ESR_ELx_AET_SHIFT (10) +#define ESR_ELx_AET (UL(0x7) << ESR_ELx_AET_SHIFT) + +#define ESR_ELx_AET_UC (UL(0) << ESR_ELx_AET_SHIFT) +#define ESR_ELx_AET_UEU (UL(1) << ESR_ELx_AET_SHIFT) +#define ESR_ELx_AET_UEO (UL(2) << ESR_ELx_AET_SHIFT) +#define ESR_ELx_AET_UER (UL(3) << ESR_ELx_AET_SHIFT) +#define ESR_ELx_AET_CE (UL(6) << ESR_ELx_AET_SHIFT) + +/* Shared ISS field definitions for Data/Instruction aborts */ +#define ESR_ELx_SET_SHIFT (11) +#define ESR_ELx_SET_MASK (UL(3) << ESR_ELx_SET_SHIFT) +#define ESR_ELx_FnV_SHIFT (10) +#define ESR_ELx_FnV (UL(1) << ESR_ELx_FnV_SHIFT) +#define ESR_ELx_EA_SHIFT (9) +#define ESR_ELx_EA (UL(1) << ESR_ELx_EA_SHIFT) +#define ESR_ELx_S1PTW_SHIFT (7) +#define ESR_ELx_S1PTW (UL(1) << ESR_ELx_S1PTW_SHIFT) + +/* Shared ISS fault status code(IFSC/DFSC) for Data/Instruction aborts */ +#define ESR_ELx_FSC (0x3F) +#define ESR_ELx_FSC_TYPE (0x3C) +#define ESR_ELx_FSC_LEVEL (0x03) +#define ESR_ELx_FSC_EXTABT (0x10) +#define ESR_ELx_FSC_MTE (0x11) +#define ESR_ELx_FSC_SERROR (0x11) +#define ESR_ELx_FSC_ACCESS (0x08) +#define ESR_ELx_FSC_FAULT (0x04) +#define ESR_ELx_FSC_PERM (0x0C) + +/* ISS field definitions for Data Aborts */ +#define ESR_ELx_ISV_SHIFT (24) +#define ESR_ELx_ISV (UL(1) << ESR_ELx_ISV_SHIFT) +#define ESR_ELx_SAS_SHIFT (22) +#define ESR_ELx_SAS (UL(3) << ESR_ELx_SAS_SHIFT) +#define ESR_ELx_SSE_SHIFT (21) +#define ESR_ELx_SSE (UL(1) << ESR_ELx_SSE_SHIFT) +#define ESR_ELx_SRT_SHIFT (16) +#define ESR_ELx_SRT_MASK (UL(0x1F) << ESR_ELx_SRT_SHIFT) +#define ESR_ELx_SF_SHIFT (15) +#define ESR_ELx_SF (UL(1) << ESR_ELx_SF_SHIFT) +#define ESR_ELx_AR_SHIFT (14) +#define ESR_ELx_AR (UL(1) << ESR_ELx_AR_SHIFT) +#define ESR_ELx_CM_SHIFT (8) +#define ESR_ELx_CM (UL(1) << ESR_ELx_CM_SHIFT) + +/* ISS field definitions for exceptions taken in to Hyp */ +#define ESR_ELx_CV (UL(1) << 24) +#define ESR_ELx_COND_SHIFT (20) +#define ESR_ELx_COND_MASK (UL(0xF) << ESR_ELx_COND_SHIFT) +#define ESR_ELx_WFx_ISS_TI (UL(1) << 0) +#define ESR_ELx_WFx_ISS_WFI (UL(0) << 0) +#define ESR_ELx_WFx_ISS_WFE (UL(1) << 0) +#define ESR_ELx_xVC_IMM_MASK ((1UL << 16) - 1) + +#define DISR_EL1_IDS (UL(1) << 24) +/* + * DISR_EL1 and ESR_ELx share the bottom 13 bits, but the RES0 bits may mean + * different things in the future... + */ +#define DISR_EL1_ESR_MASK (ESR_ELx_AET | ESR_ELx_EA | ESR_ELx_FSC) + +/* ESR value templates for specific events */ +#define ESR_ELx_WFx_MASK (ESR_ELx_EC_MASK | ESR_ELx_WFx_ISS_TI) +#define ESR_ELx_WFx_WFI_VAL ((ESR_ELx_EC_WFx << ESR_ELx_EC_SHIFT) | \ + ESR_ELx_WFx_ISS_WFI) + +/* BRK instruction trap from AArch64 state */ +#define ESR_ELx_BRK64_ISS_COMMENT_MASK 0xffff + +/* ISS field definitions for System instruction traps */ +#define ESR_ELx_SYS64_ISS_RES0_SHIFT 22 +#define ESR_ELx_SYS64_ISS_RES0_MASK (UL(0x7) << ESR_ELx_SYS64_ISS_RES0_SHIFT) +#define ESR_ELx_SYS64_ISS_DIR_MASK 0x1 +#define ESR_ELx_SYS64_ISS_DIR_READ 0x1 +#define ESR_ELx_SYS64_ISS_DIR_WRITE 0x0 + +#define ESR_ELx_SYS64_ISS_RT_SHIFT 5 +#define ESR_ELx_SYS64_ISS_RT_MASK (UL(0x1f) << ESR_ELx_SYS64_ISS_RT_SHIFT) +#define ESR_ELx_SYS64_ISS_CRM_SHIFT 1 +#define ESR_ELx_SYS64_ISS_CRM_MASK (UL(0xf) << ESR_ELx_SYS64_ISS_CRM_SHIFT) +#define ESR_ELx_SYS64_ISS_CRN_SHIFT 10 +#define ESR_ELx_SYS64_ISS_CRN_MASK (UL(0xf) << ESR_ELx_SYS64_ISS_CRN_SHIFT) +#define ESR_ELx_SYS64_ISS_OP1_SHIFT 14 +#define ESR_ELx_SYS64_ISS_OP1_MASK (UL(0x7) << ESR_ELx_SYS64_ISS_OP1_SHIFT) +#define ESR_ELx_SYS64_ISS_OP2_SHIFT 17 +#define ESR_ELx_SYS64_ISS_OP2_MASK (UL(0x7) << ESR_ELx_SYS64_ISS_OP2_SHIFT) +#define ESR_ELx_SYS64_ISS_OP0_SHIFT 20 +#define ESR_ELx_SYS64_ISS_OP0_MASK (UL(0x3) << ESR_ELx_SYS64_ISS_OP0_SHIFT) +#define ESR_ELx_SYS64_ISS_SYS_MASK (ESR_ELx_SYS64_ISS_OP0_MASK | \ + ESR_ELx_SYS64_ISS_OP1_MASK | \ + ESR_ELx_SYS64_ISS_OP2_MASK | \ + ESR_ELx_SYS64_ISS_CRN_MASK | \ + ESR_ELx_SYS64_ISS_CRM_MASK) +#define ESR_ELx_SYS64_ISS_SYS_VAL(op0, op1, op2, crn, crm) \ + (((op0) << ESR_ELx_SYS64_ISS_OP0_SHIFT) | \ + ((op1) << ESR_ELx_SYS64_ISS_OP1_SHIFT) | \ + ((op2) << ESR_ELx_SYS64_ISS_OP2_SHIFT) | \ + ((crn) << ESR_ELx_SYS64_ISS_CRN_SHIFT) | \ + ((crm) << ESR_ELx_SYS64_ISS_CRM_SHIFT)) + +#define ESR_ELx_SYS64_ISS_SYS_OP_MASK (ESR_ELx_SYS64_ISS_SYS_MASK | \ + ESR_ELx_SYS64_ISS_DIR_MASK) +#define ESR_ELx_SYS64_ISS_RT(esr) \ + (((esr) & ESR_ELx_SYS64_ISS_RT_MASK) >> ESR_ELx_SYS64_ISS_RT_SHIFT) +/* + * User space cache operations have the following sysreg encoding + * in System instructions. + * op0=1, op1=3, op2=1, crn=7, crm={ 5, 10, 11, 12, 13, 14 }, WRITE (L=0) + */ +#define ESR_ELx_SYS64_ISS_CRM_DC_CIVAC 14 +#define ESR_ELx_SYS64_ISS_CRM_DC_CVADP 13 +#define ESR_ELx_SYS64_ISS_CRM_DC_CVAP 12 +#define ESR_ELx_SYS64_ISS_CRM_DC_CVAU 11 +#define ESR_ELx_SYS64_ISS_CRM_DC_CVAC 10 +#define ESR_ELx_SYS64_ISS_CRM_IC_IVAU 5 + +#define ESR_ELx_SYS64_ISS_EL0_CACHE_OP_MASK (ESR_ELx_SYS64_ISS_OP0_MASK | \ + ESR_ELx_SYS64_ISS_OP1_MASK | \ + ESR_ELx_SYS64_ISS_OP2_MASK | \ + ESR_ELx_SYS64_ISS_CRN_MASK | \ + ESR_ELx_SYS64_ISS_DIR_MASK) +#define ESR_ELx_SYS64_ISS_EL0_CACHE_OP_VAL \ + (ESR_ELx_SYS64_ISS_SYS_VAL(1, 3, 1, 7, 0) | \ + ESR_ELx_SYS64_ISS_DIR_WRITE) +/* + * User space MRS operations which are supported for emulation + * have the following sysreg encoding in System instructions. + * op0 = 3, op1= 0, crn = 0, {crm = 0, 4-7}, READ (L = 1) + */ +#define ESR_ELx_SYS64_ISS_SYS_MRS_OP_MASK (ESR_ELx_SYS64_ISS_OP0_MASK | \ + ESR_ELx_SYS64_ISS_OP1_MASK | \ + ESR_ELx_SYS64_ISS_CRN_MASK | \ + ESR_ELx_SYS64_ISS_DIR_MASK) +#define ESR_ELx_SYS64_ISS_SYS_MRS_OP_VAL \ + (ESR_ELx_SYS64_ISS_SYS_VAL(3, 0, 0, 0, 0) | \ + ESR_ELx_SYS64_ISS_DIR_READ) + +#define ESR_ELx_SYS64_ISS_SYS_CTR ESR_ELx_SYS64_ISS_SYS_VAL(3, 3, 1, 0, 0) +#define ESR_ELx_SYS64_ISS_SYS_CTR_READ (ESR_ELx_SYS64_ISS_SYS_CTR | \ + ESR_ELx_SYS64_ISS_DIR_READ) + +#define ESR_ELx_SYS64_ISS_SYS_CNTVCT (ESR_ELx_SYS64_ISS_SYS_VAL(3, 3, 2, 14, 0) | \ + ESR_ELx_SYS64_ISS_DIR_READ) + +#define ESR_ELx_SYS64_ISS_SYS_CNTVCTSS (ESR_ELx_SYS64_ISS_SYS_VAL(3, 3, 6, 14, 0) | \ + ESR_ELx_SYS64_ISS_DIR_READ) + +#define ESR_ELx_SYS64_ISS_SYS_CNTFRQ (ESR_ELx_SYS64_ISS_SYS_VAL(3, 3, 0, 14, 0) | \ + ESR_ELx_SYS64_ISS_DIR_READ) + +#define esr_sys64_to_sysreg(e) \ + sys_reg((((e) & ESR_ELx_SYS64_ISS_OP0_MASK) >> \ + ESR_ELx_SYS64_ISS_OP0_SHIFT), \ + (((e) & ESR_ELx_SYS64_ISS_OP1_MASK) >> \ + ESR_ELx_SYS64_ISS_OP1_SHIFT), \ + (((e) & ESR_ELx_SYS64_ISS_CRN_MASK) >> \ + ESR_ELx_SYS64_ISS_CRN_SHIFT), \ + (((e) & ESR_ELx_SYS64_ISS_CRM_MASK) >> \ + ESR_ELx_SYS64_ISS_CRM_SHIFT), \ + (((e) & ESR_ELx_SYS64_ISS_OP2_MASK) >> \ + ESR_ELx_SYS64_ISS_OP2_SHIFT)) + +#define esr_cp15_to_sysreg(e) \ + sys_reg(3, \ + (((e) & ESR_ELx_SYS64_ISS_OP1_MASK) >> \ + ESR_ELx_SYS64_ISS_OP1_SHIFT), \ + (((e) & ESR_ELx_SYS64_ISS_CRN_MASK) >> \ + ESR_ELx_SYS64_ISS_CRN_SHIFT), \ + (((e) & ESR_ELx_SYS64_ISS_CRM_MASK) >> \ + ESR_ELx_SYS64_ISS_CRM_SHIFT), \ + (((e) & ESR_ELx_SYS64_ISS_OP2_MASK) >> \ + ESR_ELx_SYS64_ISS_OP2_SHIFT)) + +/* + * ISS field definitions for floating-point exception traps + * (FP_EXC_32/FP_EXC_64). + * + * (The FPEXC_* constants are used instead for common bits.) + */ + +#define ESR_ELx_FP_EXC_TFV (UL(1) << 23) + +/* + * ISS field definitions for CP15 accesses + */ +#define ESR_ELx_CP15_32_ISS_DIR_MASK 0x1 +#define ESR_ELx_CP15_32_ISS_DIR_READ 0x1 +#define ESR_ELx_CP15_32_ISS_DIR_WRITE 0x0 + +#define ESR_ELx_CP15_32_ISS_RT_SHIFT 5 +#define ESR_ELx_CP15_32_ISS_RT_MASK (UL(0x1f) << ESR_ELx_CP15_32_ISS_RT_SHIFT) +#define ESR_ELx_CP15_32_ISS_CRM_SHIFT 1 +#define ESR_ELx_CP15_32_ISS_CRM_MASK (UL(0xf) << ESR_ELx_CP15_32_ISS_CRM_SHIFT) +#define ESR_ELx_CP15_32_ISS_CRN_SHIFT 10 +#define ESR_ELx_CP15_32_ISS_CRN_MASK (UL(0xf) << ESR_ELx_CP15_32_ISS_CRN_SHIFT) +#define ESR_ELx_CP15_32_ISS_OP1_SHIFT 14 +#define ESR_ELx_CP15_32_ISS_OP1_MASK (UL(0x7) << ESR_ELx_CP15_32_ISS_OP1_SHIFT) +#define ESR_ELx_CP15_32_ISS_OP2_SHIFT 17 +#define ESR_ELx_CP15_32_ISS_OP2_MASK (UL(0x7) << ESR_ELx_CP15_32_ISS_OP2_SHIFT) + +#define ESR_ELx_CP15_32_ISS_SYS_MASK (ESR_ELx_CP15_32_ISS_OP1_MASK | \ + ESR_ELx_CP15_32_ISS_OP2_MASK | \ + ESR_ELx_CP15_32_ISS_CRN_MASK | \ + ESR_ELx_CP15_32_ISS_CRM_MASK | \ + ESR_ELx_CP15_32_ISS_DIR_MASK) +#define ESR_ELx_CP15_32_ISS_SYS_VAL(op1, op2, crn, crm) \ + (((op1) << ESR_ELx_CP15_32_ISS_OP1_SHIFT) | \ + ((op2) << ESR_ELx_CP15_32_ISS_OP2_SHIFT) | \ + ((crn) << ESR_ELx_CP15_32_ISS_CRN_SHIFT) | \ + ((crm) << ESR_ELx_CP15_32_ISS_CRM_SHIFT)) + +#define ESR_ELx_CP15_64_ISS_DIR_MASK 0x1 +#define ESR_ELx_CP15_64_ISS_DIR_READ 0x1 +#define ESR_ELx_CP15_64_ISS_DIR_WRITE 0x0 + +#define ESR_ELx_CP15_64_ISS_RT_SHIFT 5 +#define ESR_ELx_CP15_64_ISS_RT_MASK (UL(0x1f) << ESR_ELx_CP15_64_ISS_RT_SHIFT) + +#define ESR_ELx_CP15_64_ISS_RT2_SHIFT 10 +#define ESR_ELx_CP15_64_ISS_RT2_MASK (UL(0x1f) << ESR_ELx_CP15_64_ISS_RT2_SHIFT) + +#define ESR_ELx_CP15_64_ISS_OP1_SHIFT 16 +#define ESR_ELx_CP15_64_ISS_OP1_MASK (UL(0xf) << ESR_ELx_CP15_64_ISS_OP1_SHIFT) +#define ESR_ELx_CP15_64_ISS_CRM_SHIFT 1 +#define ESR_ELx_CP15_64_ISS_CRM_MASK (UL(0xf) << ESR_ELx_CP15_64_ISS_CRM_SHIFT) + +#define ESR_ELx_CP15_64_ISS_SYS_VAL(op1, crm) \ + (((op1) << ESR_ELx_CP15_64_ISS_OP1_SHIFT) | \ + ((crm) << ESR_ELx_CP15_64_ISS_CRM_SHIFT)) + +#define ESR_ELx_CP15_64_ISS_SYS_MASK (ESR_ELx_CP15_64_ISS_OP1_MASK | \ + ESR_ELx_CP15_64_ISS_CRM_MASK | \ + ESR_ELx_CP15_64_ISS_DIR_MASK) + +#define ESR_ELx_CP15_64_ISS_SYS_CNTVCT (ESR_ELx_CP15_64_ISS_SYS_VAL(1, 14) | \ + ESR_ELx_CP15_64_ISS_DIR_READ) + +#define ESR_ELx_CP15_64_ISS_SYS_CNTVCTSS (ESR_ELx_CP15_64_ISS_SYS_VAL(9, 14) | \ + ESR_ELx_CP15_64_ISS_DIR_READ) + +#define ESR_ELx_CP15_32_ISS_SYS_CNTFRQ (ESR_ELx_CP15_32_ISS_SYS_VAL(0, 0, 14, 0) |\ + ESR_ELx_CP15_32_ISS_DIR_READ) + +#ifndef __ASSEMBLY__ +#include + +static inline bool esr_is_data_abort(u32 esr) +{ + const u32 ec = ESR_ELx_EC(esr); + + return ec == ESR_ELx_EC_DABT_LOW || ec == ESR_ELx_EC_DABT_CUR; +} + +const char *esr_get_class_string(u32 esr); +#endif /* __ASSEMBLY */ + +#endif /* __ASM_ESR_H */ diff --git a/arch/arm/include/asm/proc-armv/ptrace.h b/arch/arm/include/asm/proc-armv/ptrace.h index 3b8fe7aac0..2db60d552d 100644 --- a/arch/arm/include/asm/proc-armv/ptrace.h +++ b/arch/arm/include/asm/proc-armv/ptrace.h @@ -14,6 +14,79 @@ #define PCMASK 0 +/* + * PSR bits + */ +#define PSR_MODE_EL0t 0x00000000 +#define PSR_MODE_EL1t 0x00000004 +#define PSR_MODE_EL1h 0x00000005 +#define PSR_MODE_EL2t 0x00000008 +#define PSR_MODE_EL2h 0x00000009 +#define PSR_MODE_EL3t 0x0000000c +#define PSR_MODE_EL3h 0x0000000d +#define PSR_MODE_MASK 0x0000000f + +/* AArch32 CPSR bits */ +#define PSR_MODE32_BIT 0x00000010 + +/* AArch64 SPSR bits */ +#define PSR_F_BIT 0x00000040 +#define PSR_I_BIT 0x00000080 +#define PSR_A_BIT 0x00000100 +#define PSR_D_BIT 0x00000200 +#define PSR_BTYPE_MASK 0x00000c00 +#define PSR_SSBS_BIT 0x00001000 +#define PSR_PAN_BIT 0x00400000 +#define PSR_UAO_BIT 0x00800000 +#define PSR_DIT_BIT 0x01000000 +#define PSR_TCO_BIT 0x02000000 +#define PSR_V_BIT 0x10000000 +#define PSR_C_BIT 0x20000000 +#define PSR_Z_BIT 0x40000000 +#define PSR_N_BIT 0x80000000 + +#define PSR_BTYPE_SHIFT 10 + +/* + * Groups of PSR bits + */ +#define PSR_f 0xff000000 /* Flags */ +#define PSR_s 0x00ff0000 /* Status */ +#define PSR_x 0x0000ff00 /* Extension */ +#define PSR_c 0x000000ff /* Control */ + +/* Convenience names for the values of PSTATE.BTYPE */ +#define PSR_BTYPE_NONE (0b00 << PSR_BTYPE_SHIFT) +#define PSR_BTYPE_JC (0b01 << PSR_BTYPE_SHIFT) +#define PSR_BTYPE_C (0b10 << PSR_BTYPE_SHIFT) +#define PSR_BTYPE_J (0b11 << PSR_BTYPE_SHIFT) + +/* SPSR_ELx bits for exceptions taken from AArch32 */ +#define PSR_AA32_MODE_MASK 0x0000001f +#define PSR_AA32_MODE_USR 0x00000010 +#define PSR_AA32_MODE_FIQ 0x00000011 +#define PSR_AA32_MODE_IRQ 0x00000012 +#define PSR_AA32_MODE_SVC 0x00000013 +#define PSR_AA32_MODE_ABT 0x00000017 +#define PSR_AA32_MODE_HYP 0x0000001a +#define PSR_AA32_MODE_UND 0x0000001b +#define PSR_AA32_MODE_SYS 0x0000001f +#define PSR_AA32_T_BIT 0x00000020 +#define PSR_AA32_F_BIT 0x00000040 +#define PSR_AA32_I_BIT 0x00000080 +#define PSR_AA32_A_BIT 0x00000100 +#define PSR_AA32_E_BIT 0x00000200 +#define PSR_AA32_PAN_BIT 0x00400000 +#define PSR_AA32_SSBS_BIT 0x00800000 +#define PSR_AA32_DIT_BIT 0x01000000 +#define PSR_AA32_Q_BIT 0x08000000 +#define PSR_AA32_V_BIT 0x10000000 +#define PSR_AA32_C_BIT 0x20000000 +#define PSR_AA32_Z_BIT 0x40000000 +#define PSR_AA32_N_BIT 0x80000000 +#define PSR_AA32_IT_MASK 0x0600fc00 /* If-Then execution state mask */ +#define PSR_AA32_GE_MASK 0x000f0000 + #ifndef __ASSEMBLY__ /* From patchwork Tue Mar 22 20:59:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608357 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=rSepaEp/; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP8z4Flhz9s1l for ; Wed, 23 Mar 2022 08:03:31 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 0CF2183F4F; Tue, 22 Mar 2022 22:02:28 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="rSepaEp/"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 65D3283BF7; Tue, 22 Mar 2022 22:00:58 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-am5eur02on061b.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe07::61b]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 5A3F583BC1 for ; Tue, 22 Mar 2022 22:00:33 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CEZ5sdSkCtl9pof2Zkd52YjjHnQWF1H/cgxtD1Dtxol/aL8bJR1ya+1grkv5E8qrtom7wq1RqJ4EkCsda0FpmYWPewZQyGyiqQ857ppofT1rQXgAAzmOt1YfrOhiVUYh4WnLu6uRy1fr/zDopMqQr1+q81R60GWeIInNFZnMY5+ZvXfr+h7EkKzaCnMnDJo+4+Jtf/aq5r+ZVHtoWtvwYmu/fc6rMoJJP2LBsItPnfay13HX7GhB+OLBIl7T/cQeFCey/6PUCOt/6QX6VVpiiaRB1kydd6mRXku8qOn3qpi7ya2EOxZPgwY7uguGoy8ulNsVZtHws/UBfU+JJHQj1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=v4B35fhDzWs8MhBVzbUKLcZtx72d5J5domOPTRAPUyQ=; b=XfcmzcxnLXT4lz7ruRF0/+qCCZSg6RttazWC84kFNCwf7rChUZ7i5JA1lkWKIC1mJvq317DoHLRSIYQEACT3aqsEe7WSJNItdilHIo2cblGSAfkxC+fvI3eqLgB1hMbFhEuvHiS0Zb6VE0pfFmP2D0SHrXW/13lWr2RpVmP3/LfZClsY1844Pljk0nFU0Ul/gSkxRyCjAzJL6rzQce+MoPE8AOsRItUfmjmTlcWeoBctOQHedaavJgvfJC4wY8OvwG35eQBmk7m/BumqEkSvIIFjHU/nlhXhsfIDrVfADL/kQodO85D4WyP8ug/oIldRVB5g5hDekDlk413DUFJQow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=v4B35fhDzWs8MhBVzbUKLcZtx72d5J5domOPTRAPUyQ=; b=rSepaEp/5Z9cfm6Zv8/GttY1QcNUqtAbYoU8FIlNOKQHRyZz1RX5ShGWQJrR+GJ5/+k9SZ2Di7igdc9j/oMoExeMHIVkKxObsUeZrQUklhMcVR/YIChcDQQre+Kfko0vNN4a7V0ZDKnBm254T8ENk/zLp9OlLSjC54k7MTAqHuwIxgcDGwlz8K8HEBbBJO4VlcrZ8PVazfnlSk62N9aLhIqTwdvVGsp1oG25ZVlw6a2t54ny+88J0CWgWf9r5rPMKQF0bZolh9maFQ7jGmyn0p/f9F4QDixPtBQh6KCNCGK80lbv095rsNaq8HV6VPn0JWqJzf5n9/nRSL6OKD54Dg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by VI1PR03MB4591.eurprd03.prod.outlook.com (2603:10a6:803:5f::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:32 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:32 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 22/29] arm: smh: Add option to detect semihosting Date: Tue, 22 Mar 2022 16:59:30 -0400 Message-Id: <20220322205938.1721846-23-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 727447c5-f097-4cd2-0f1a-08da0c47009e X-MS-TrafficTypeDiagnostic: VI1PR03MB4591:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Xk8uhBC8OnqoKPGiusRLp3RRM3dIvMoVKVQhqWOH58lwLe4lEyvzIhxDgc1q1ppna2V4zqDkBx7tIrtnF01iMiq8hwYsvtutF7ylxElfvH9tIW6f8DMU1jn1wHVgq0eKx9A1s82cltbXtqorNiWAclM5v4Yt5Vw/1ptKD1dQ7jt+VNTqJp8xbgfjCS3nTaRJy6jBcFbwvpHraQh0p5WD+/vtYFtGXxp7ScL/3V0A5V4D8U58//6l1N4VEDnW3C+yb0Py2KEpzcyrXAk9aHmlDI8kenHQt9BcDp5s/C2pgL53Tce6np7t40yFEahrXNgVXhGJmEmgkeJ+mCp36xLasu8H9a6Unmj4mDvLjB/X09XFxKerNc8JR9Svz86XsZ9BvmYHPUWiW8Pzpkt6E3V53YWgSX+ryY7C/bbJqQWrQ2ZNb5ZOokZ9BOxjCht9XPAfhF8/cvFhIcimHufIP2JU8JXOKrkxScxUTqhk0ojAEuRq8ADvFAqxa/FIXLsWaUwk0Y0ps9cyL0G2b/w4GqeRA1Vs+SWMWxZlIYk5JQUP5B+qA1SNUCaPySUVnGhTbvDfHfygJsKwmB0bOsDe4ARclNwcXIBjzEu1G4WMj1NfVZl/7DwNgn/V8hv2hu3QFz9HxvT9EIZtoYBaWKzkUarLH0I9dIfy64ramxqtsYb08i4hV+CADN/dvcgLZRsv7bZH0CgMwgpe3lr7lYTTCQjVdA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(83380400001)(6486002)(186003)(26005)(107886003)(38100700002)(38350700002)(2616005)(1076003)(6506007)(6512007)(6916009)(36756003)(52116002)(54906003)(316002)(4326008)(5660300002)(8676002)(66556008)(66476007)(508600001)(86362001)(66946007)(8936002)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: V21UiQNMjcvgn8YqqPlaFtaPHEPGaRDbuYSt6qnoAFDtyWtfvXlFhn9VY4KT/CLB42qGEbA8EbJE09a98koz1+iP9aYDT7Yr0SX7N5pXeIMrl0vr6bG4h1/S+bBjPYGejck0JBGn8k1vYa1Sf3oN+1NcdqF+7MEE+kwSWikh5v06dTs1pWiv/mu4ieq+XKrWeceje/LiORdhHz82V2GM49D0Mq2Zv9enBpy4EeIjzbe9k2+YU3GshmUB9trOAydUkZfpPkYygvTN3qPsRVKJTqo++fMgRsNpNGOEspVLL9QE/9XZLSm+rNOKm09NVVuQeqxub8ZFPUMgY5tGB/8uIWo3A2Xqu1EvPXULTOeryteV6w2UlSdpMUl5fNoyeZKxdBnqa67NRAE6cWNQ9ECThf/AVpjL83PR9PHK0W11zVx4o5/y/fv5mLKCNSz69bdz4dLM6WdX33br+msDVXvThXXHTEAsErk0s+8Ljl+LSv+VhtKX+5LRzmhPo3Zrcp6MCAOjG+YrjIIxfrHhCSWs3sNvzP6ybaSHcyVHRtIvBZH9Fj0TOGJKMki4NZ0r9mxhQrbpk3JISa9n9goxOlJAoHAXmoX7NDpkhnwMWGv67W3QoO5fsrLfWkqTJpWlMC9y0OFJVRlqtfXYOhbuE0lEhO7m77gOKhrVTWBY7xzqVmO23stA2pb6sOF+NyNjdM7ifF9ysEvvtsMKY6OG6ai7BsTw1ecsPqm7Ux1lPdY6go3fiMORPq1oBCNywqsuslbf0W3ndDDUZ6zj5Qs7V7epZbUx5xH5hngRcxcqw3jpyJRpT6BWUMtz1As0uHxHXuYn6p58SqnyOxNJUEyCG1V4ckRvKiaAcMv5LeiTtiydE7X/kd0DJ3nvV9ALoX3uLRoPTFkgrfOm6xcI078rnD8wiQa6FkETUPTyStCLXujhtpDzTqajKAgecRU/bACWJxLjUfGxDqEGLrMtNOVp9JhfeGsAN8Xho8eWQm32NzWrm+Udjmv/AS/ScdQ/1bRZF19yNeApc1IZP4Ff9Yga+7MJKitPMhekVJAiXcl+Cr6aEQ5HunA1EckYb8FeoZ3dyZjltS6gi9Cn5gb7TjYy8ehtqq55c9pcOedxzQaXzbjj3TyI6wCV3alPwpYpte0GR5wLRcd6+kvxYsF/ito1oFWXO9qR+AtvMmYshPMhsUrNmwHtz2UL5SM39uooWKRNyXP2GjJt/F+g6CKeONUtW8C2GCkod3a3f0XoEjThGxg8NvjiybF+RykLwq5MAt5A2OC2Y8I5Q1IaxrI8A4PbAzrHgtZsg0o1a9qCyQ4ap2ay+M2tTJVigL+cdmPzR/CWRmNRbdufRQ0lAL11BOFeRLdiGRtJMRviGdQChJ/JG3Uo6ht1nnnBzDJJRMhBeCQvJBT2k8nQEB3cI/gK/rWY03/OgbaM8suW9pjD/eKAX0OGVjLQ1dDIgx9UuWUQ/hChZ23OALtgvEi9hkLv5jObEXRiCw== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 727447c5-f097-4cd2-0f1a-08da0c47009e X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:32.0478 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: A1Ht4w3FWaUp8F11a64PmDlgX0pm4tRD0JpyeGWDaB24JRTYVzNgCRhzIX3Td2Ka3hHh+lEW+Ns9QcXrpp7N5A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB4591 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean These functions are intended to support detecting semihosting and falling back gracefully to alternative implementations. The test starts by making semihosting call. SYS_ERRNO is chosen because it should not mutate any state. If this semihosting call results in an exception (rather than being caught by the debugger), then the exception handler should call disable_semihosting() and resume execution after the call. Ideally, this would just be part of semihosting by default, and not a separate config. However, to reduce space ARM SPL doesn't include exception vectors by default. This means we can't detect if a semihosting call failed unless we enable them. To avoid forcing them to be enabled, we use a separate config option. It might also be possible to try and detect whether a debugger has enabled (by reading HDE from DSCR), but I wasn't able to figure out a way to do this from all ELs. This patch just introduces the generic code to handle detection. The next patch will implement it for arm64 (but not arm32). Signed-off-by: Sean Anderson --- Changes in v3: - Make FALLBACK depend on ARM64 - Reorder Kconfigs to group SEMIHOSTING_FALLBACK after SEMIHOSTING (instead of after SPL_SEMIHOSTING_FALLBACK) - Use SYS_ERRNO instead of SYS_ISERROR, since the latter is not implemented in older QEMUs. Changes in v2: - New arch/arm/Kconfig | 21 +++++++++++++++++++++ arch/arm/lib/semihosting.c | 21 +++++++++++++++++++++ include/semihosting.h | 30 ++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 408d96ac8e..777d318c5d 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -414,6 +414,16 @@ config SEMIHOSTING on the host system. If you don't have a debugger attached then trying to do this will likely cause U-Boot to hang. Say 'n' if you are unsure. +config SEMIHOSTING_FALLBACK + bool "Recover gracefully when semihosting fails" + depends on SEMIHOSTING && ARM64 + default y + help + Normally, if U-Boot makes a semihosting call and no debugger is + attached, then it will panic due to a synchronous abort + exception. This config adds an exception handler which will allow + U-Boot to recover. Say 'y' if unsure. + config SPL_SEMIHOSTING bool "Support ARM semihosting in SPL" depends on SPL @@ -427,6 +437,17 @@ config SPL_SEMIHOSTING on the host system. If you don't have a debugger attached then trying to do this will likely cause U-Boot to hang. Say 'n' if you are unsure. +config SPL_SEMIHOSTING_FALLBACK + bool "Recover gracefully when semihosting fails in SPL" + depends on SPL_SEMIHOSTING && ARM64 + select ARMV8_SPL_EXCEPTION_VECTORS + default y + help + Normally, if U-Boot makes a semihosting call and no debugger is + attached, then it will panic due to a synchronous abort + exception. This config adds an exception handler which will allow + U-Boot to recover. Say 'y' if unsure. + config SYS_THUMB_BUILD bool "Build U-Boot using the Thumb instruction set" depends on !ARM64 diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c index 7595dbc4a9..dbea2b06fb 100644 --- a/arch/arm/lib/semihosting.c +++ b/arch/arm/lib/semihosting.c @@ -20,6 +20,7 @@ #define SYSWRITE 0x05 #define SYSREAD 0x06 #define SYSREADC 0x07 +#define SYSISERROR 0x08 #define SYSSEEK 0x0A #define SYSFLEN 0x0C #define SYSERRNO 0x13 @@ -41,6 +42,26 @@ static noinline long smh_trap(unsigned int sysnum, void *addr) return result; } +#if CONFIG_IS_ENABLED(SEMIHOSTING_FALLBACK) +static bool _semihosting_enabled = true; +static bool try_semihosting = true; + +bool semihosting_enabled(void) +{ + if (try_semihosting) { + smh_trap(SYSERRNO, NULL); + try_semihosting = false; + } + + return _semihosting_enabled; +} + +void disable_semihosting(void) +{ + _semihosting_enabled = false; +} +#endif + /** * smh_errno() - Read the host's errno * diff --git a/include/semihosting.h b/include/semihosting.h index 6f3c29786c..9816233c50 100644 --- a/include/semihosting.h +++ b/include/semihosting.h @@ -6,6 +6,36 @@ #ifndef _SEMIHOSTING_H #define _SEMIHOSTING_H +#if CONFIG_IS_ENABLED(SEMIHOSTING_FALLBACK) +/** + * semihosting_enabled() - Determine whether semihosting is supported + * + * Semihosting-based drivers should call this function before making other + * semihosting calls. + * + * Return: %true if a debugger is attached which supports semihosting, %false + * otherwise + */ +bool semihosting_enabled(void); + +/** + * disable_semihosting() - Cause semihosting_enabled() to return false + * + * If U-Boot ever receives an unhandled exception caused by a semihosting trap, + * the trap handler should call this function. + */ +void disable_semihosting(void); +#else +static inline bool semihosting_enabled(void) +{ + return CONFIG_IS_ENABLED(SEMIHOSTING); +} + +static inline void disable_semihosting(void) +{ +} +#endif + /** * enum smh_open_mode - Numeric file modes for use with smh_open() * MODE_READ: 'r' From patchwork Tue Mar 22 20:59:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608358 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=tHHxzvgw; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP9924n7z9ryY for ; Wed, 23 Mar 2022 08:03:41 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 13CBD83F4A; Tue, 22 Mar 2022 22:02:32 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="tHHxzvgw"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 8AA7A83BF7; Tue, 22 Mar 2022 22:01:05 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-am5eur02on0610.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe07::610]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 77D2183BE3 for ; Tue, 22 Mar 2022 22:00:34 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l/x7zbBgNAShVatlFIeNeHUZAIHMz9IFx09U6cLdwB6rxGjN3IGVSLjwlOWN7By3jQp4A+B3mZjQq22pediy4FWOSI2dqHRYqdNVGx3nWaCUJo6RA2aj8N9fKp3PznsYkobf2pVhQcAp/9vKIbUghqZK+NV4kFGWGvDH58r35exe8qRHTQfcHiciFRtiTurMh2f/KcDflNbitAAtIOxak2FLZfb9SGobEXStBZme+gum10SPnkUg1YtkQSLhotyqp2a/03Vn8M1emPzDBkBILcPj43EqnmClnV+uta0a6FpqqAZruJrMUkHg1M3Aciv67Zda9Wbp1wM7Zs+L2WnASQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=vjF9beAazLfyavGHEj+6PvAgGLUC0wEH/kPFglkVh/4=; b=bI53Agnrxr4a0NeS2jJpAUn7vlRjyd1n4s7EEGlXNVphUN3/Uvc5AJYEVrlBUolsXjKk65nBdu6XsFPDvSRzccIcPGXiGnqX6kqqCPa3Vbio3RUj7lmeRkaOBCEoEtIvZPdYt/9iP99+8NG2E+WUSeaD4Rg4hJgVhu0KKKaKIEq6RogqvCErtgrm+v6rl58oEjJt7UUhD3wk28yGaPw/+Z+fwKTps+RdOPwitDn8IviKXesNAhuxh1W+vfeeSCS7eJkOEtktkuzrxRoLa3McwSQSaWBBXEV+ds1esJsaki5WMh759GpD5peKAzbRMLOY/7/hla0ddvnJwZf4s3BblA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vjF9beAazLfyavGHEj+6PvAgGLUC0wEH/kPFglkVh/4=; b=tHHxzvgwJDQHHLrO26wwEDdNynyKF3rur9DlyySw+UQh/RRiRetcIzw1ZkrxBrMWAi3CUElKsTRoVGefbjBbMR+lOXMRqK4rtKcggj6WJvll/Lq7qwYLvULaH0F9VgNbhEcg1U4BrQP2nAC94wGXBZyqNUpQaMicO6aGgchb4ps/jq5fomc0ianw0F5NQpDyttmxM5wmGtxIPwxSneej+32OrCFV8PWltmns2tMzCGivKeseUKY6Cao+xWVQ1LORlxffH6YWtZpxZXTWhpH0RZjD/y4N2LFYtXkxMeEeStq7rYyizdzdgNC1Qfl6rUotnk/rqbqENIuPWNBQQdta3w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by VI1PR03MB4591.eurprd03.prod.outlook.com (2603:10a6:803:5f::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:33 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:33 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 23/29] arm64: Catch non-emulated semihosting calls Date: Tue, 22 Mar 2022 16:59:31 -0400 Message-Id: <20220322205938.1721846-24-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6321c3ea-2bdb-4ac6-659d-08da0c47015a X-MS-TrafficTypeDiagnostic: VI1PR03MB4591:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Do3XH0D7PTmFSfD+1BHzFqOejMsUmPDFpX+75N6XdnKnC+26BCcgbN88Gsokr/aYozrYAEPEgueKhes5luhIf/ZfOCWPYn8QtmivX5MzPttyQSswBuGcN0DLslYOcujzRRAImB6lIXMhFEvb6Bid/j5xk9hJs6Zy8G7T6DOF7REFQxyXbzW/xSnrpfnDmwjVoSoE4jD7NCZNSno1/cYBoEsSFYm+1qq/Rph/+3xXIRVflzkClY9u4ioB5z0xMfbQbT8ckzHH7rXztf+IC4eG7KijEqblCTm8Vf7aPr7hyXHockPhk2o8gFskwq9LLCkpS5xUJFM9cciiPkIvTVR9+2koAynbWNyOoE1Pxs19tQsNuy6daI2HvehEHlMkPXW3FIYZdJ6MNS/HXqWge1ni5xV2TF5BXsp4o/MB0RJkrzEW7oZaSnrGWAYn3PBca/Ttk35AssnAtpXi2WmFTWbKKmUVmuld5v8fz/N5mBC0r/MKSBVVrBIfvybba3vXG8fNpi91CTD8Au6rbHGvrQawo0jDlQC9BDXjOBde8cv9e4ZH2R0dGeceSUiJarZRdIiYMHca0dc90jthdrTeDelFNde2BEj7hZ+w3zn+AGszaQ9NS8tD1XD8/gMWbgSlnOFH+h5koOM5hPiQHp84xYd3tsyXRIcNK2dhlxp/5NoxKmzyr4B5uTvsBrNcjQrR/QloAxtIQfrZvoWz749zNcsCTvixc2FOq2Qzl5jjRzSgKDKoTxlU8cjG3mwNhTHe+qWFMjrePcRDBVKgpsciTns2hT/fMbKK/BFUG368j5zD9t8= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(966005)(2906002)(83380400001)(6486002)(186003)(26005)(107886003)(38100700002)(38350700002)(2616005)(1076003)(6506007)(6512007)(6916009)(36756003)(52116002)(54906003)(316002)(4326008)(5660300002)(8676002)(66556008)(66476007)(508600001)(86362001)(66946007)(8936002)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KpP4Nee2ufn2caRUBW7fUKBiJXOcclMaQaI/YZiFYBCnUL1+trrfEld4memyGL1hbmTpYGi3C662jOGTViZlaTmHCUghCL44Ufp3nfQx1nvKenD/2kySQottT2m1Rq/TN3y997sDdPgRLaPt17ZZp7GKIjunzLbn/oYYfwGQggYGlT3/DROA0oXzC4XxpNtawBPKPiTDsa1bXkg+cShv33+DwUBWPMfDlJM+lQFZ3ayeL//iIKZKXI8HG3SfKpAFeWwbhhSeGDmjAQNUCmksq1lZdSiAeNVfUDy1MslbV2AU3OKTIpG2UrKaCNJZyMko5uK8qm0vjDf7kK9OtWF+CMbkiUV1quKzfGOgle+dqFs8pNLmIAlyKSfby6YdtqTO7GCiccuVSfO8otjin5RCEQDfLh4CoMvjmAnZShEC9vBQzKzbqXdugxiJL8skqykvLBbcoKsPB801fNXFJit3kociWqcYHeE5FV9yaiOxSWX5IV3SdiNQLrXyAbnySNAR0R7tbSUcaLdx3ZpLKZI0dbTG+SuPnvVQ9hyJwwWSq3oe7iUjYDyyd0oEkbELWBpf3AVGGSu5Jz1giH01WUw66m8VbugpNjltihurh2X2btjFGBCxjDYOHOwvEYs+/KMnCWSABFZjdrrhSLvmydngtjTVF9+BoHZ1rErZ0KokhtGTNHAwSxitCFxpD/T6m2Pr4f7SpwISIN7X+1wg+TV28sz6aC6i2cgbNhWQ/IurONPIY7CZh6vDVY4yfJdBf99EYWa15ccfKhh6a7QY4uz6w3OKp+FOu/6DQ+LAGC5twGBe0qgQED6l1ppVaC/5VsYk03i3KlKASzaskpaA1ZknUuEqc30mO/NTFbVRLiuEYtiKdpnxV2XTt8KJWrCT5KCulXW+R4CGrESy15jGLylm9blHtMg75Bnrz0oELdXmJ3gVJy16C9QxGOVfF/jCjSdyrjzKd8jgg/SUzRoVt9XMghBPaojHA98aQzp/YeS4sVbxlJptDQX+R5hYhC3hH0XIOb1k2/Kv1h+r6rWUD0Mc/90f7sR8hX9PDpTFpdgYQgNImkZ9YA0rWN4Gd6eYE02pCbrLjP94eFWDWptvKppnfM+7vwH/jWlPvpcEHeyTe+phOD+CA/BFqFPhxjC57xR0nxkpmSsirtOS2BKLaS/X2VLpB+OxTG90PvRI6K+KRpaAAQZOjMX0LHRswEpdCHyVrfvHf4szEwk7bH8rZiYNWYUFNff1rUC+AV9zSEw13EVzvoK7XAj8QKYhySTrBjS7l1mj+TTu+kadAzdw6Ug1WHeZ1nZ8PUtwR26F1QrzyjVSnSJPujg4D1Rd0A+dxx01TlgMlBzPURONZKmd9rGQ1ca407hgoPt++TlOIUE53xoSkVpJQe3lvdUxXQfh6h5A6cdv8hDByT8KpT44LdB+yBR+VMlrM1Bf2eZSLZDfknO+1ZzzBiBSFXQC9Zs3jtTK7H9agfWHesdTlnDHnxL3mw== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6321c3ea-2bdb-4ac6-659d-08da0c47015a X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:33.2665 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: I38OO21fDBzOSdoP94+9cRbhNfP1dAmUZd7R5hVsEgarWRb74UTNX72JbcjEyx8wzQMxXfHYG4fbl4j6a/qyUQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB4591 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean If a debugger is not attached to U-Boot, semihosting calls will raise a synchronous abort exception. Try to catch this and disable semihosting so we can e.g. use another uart if one is available. In the immediate case, we return an error, since it is not always possible to check for semihosting beforehand (debug uart, user-initiated load command, etc.) We handle all possible semihosting instructions, which is probably overkill. However, we do need to keep track of what instruction set we're using so that we don't suppress an actual error. A future enhancement could try to determine semihosting capability by inspecting the processor state. There's an example of this at [1] for RISC-V. The equivalent for ARM would inspect the monitor modei enable/select bits of the DSCR. However, as the article notes, an exception handler is still helpful in order to catch disconnected debuggers. [1] https://tomverbeure.github.io/2021/12/30/Semihosting-on-RISCV.html#avoiding-hangs-when-a-debugger-is-not-connected Signed-off-by: Sean Anderson --- Changes in v3: - Update commit message to describe an alternate implementation Changes in v2: - New arch/arm/lib/interrupts_64.c | 47 ++++++++++++++++++++++++++++++++++++ include/semihosting.h | 11 +++++++++ 2 files changed, 58 insertions(+) diff --git a/arch/arm/lib/interrupts_64.c b/arch/arm/lib/interrupts_64.c index 049beeca7e..2e091415a4 100644 --- a/arch/arm/lib/interrupts_64.c +++ b/arch/arm/lib/interrupts_64.c @@ -5,11 +5,13 @@ */ #include +#include #include #include #include #include #include +#include DECLARE_GLOBAL_DATA_PTR; @@ -63,6 +65,48 @@ void show_regs(struct pt_regs *regs) dump_instr(regs); } +/* + * Try to "emulate" a semihosting call in the event that we don't have a + * debugger attached. + */ +static bool smh_emulate_trap(struct pt_regs *regs) +{ + int size; + + if (ESR_ELx_EC(regs->esr) != ESR_ELx_EC_UNKNOWN) + return false; + + if (regs->spsr & PSR_MODE32_BIT) { + if (regs->spsr & PSR_AA32_T_BIT) { + u16 *insn = (u16 *)ALIGN_DOWN(regs->elr, 2); + + if (*insn != SMH_T32_SVC && *insn != SMH_T32_HLT) + return false; + size = 2; + } else { + u32 *insn = (u32 *)ALIGN_DOWN(regs->elr, 4); + + if (*insn != SMH_A32_SVC && *insn != SMH_A32_HLT) + return false; + size = 4; + } + } else { + u32 *insn = (u32 *)ALIGN_DOWN(regs->elr, 4); + + if (*insn != SMH_A64_HLT) + return false; + size = 4; + } + + /* Avoid future semihosting calls */ + disable_semihosting(); + + /* Just pretend the call failed */ + regs->regs[0] = -1; + regs->elr += size; + return true; +} + /* * do_bad_sync handles the impossible case in the Synchronous Abort vector. */ @@ -117,6 +161,9 @@ void do_bad_error(struct pt_regs *pt_regs) */ void do_sync(struct pt_regs *pt_regs) { + if (CONFIG_IS_ENABLED(SEMIHOSTING_FALLBACK) && + smh_emulate_trap(pt_regs)) + return; efi_restore_gd(); printf("\"Synchronous Abort\" handler, esr 0x%08lx\n", pt_regs->esr); show_regs(pt_regs); diff --git a/include/semihosting.h b/include/semihosting.h index 9816233c50..f1f73464e4 100644 --- a/include/semihosting.h +++ b/include/semihosting.h @@ -6,6 +6,17 @@ #ifndef _SEMIHOSTING_H #define _SEMIHOSTING_H +/* + * These are the encoded instructions used to indicate a semihosting trap. They + * are named like SMH_ISA_INSN, where ISA is the instruction set (e.g. + * AArch64), and INSN is the mneumonic for the instruction. + */ +#define SMH_A64_HLT 0xD45E0000 +#define SMH_A32_SVC 0xEF123456 +#define SMH_A32_HLT 0xE10F0070 +#define SMH_T32_SVC 0xDFAB +#define SMH_T32_HLT 0xBABC + #if CONFIG_IS_ENABLED(SEMIHOSTING_FALLBACK) /** * semihosting_enabled() - Determine whether semihosting is supported From patchwork Tue Mar 22 20:59:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608359 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=gBL+N0eS; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP9N2ZJGz9s1l for ; Wed, 23 Mar 2022 08:03:52 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 7D45383D57; Tue, 22 Mar 2022 22:02:36 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="gBL+N0eS"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 17E1F83C99; Tue, 22 Mar 2022 22:01:08 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-am5eur02on0611.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe07::611]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id B097483B80 for ; Tue, 22 Mar 2022 22:00:35 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R1XG4qe3VsHjZ5uX18XxHGWmi9Fi8/GQ4u4QKEckNIUoD5cCEjY0kag2/IoHf2E7F9fTOzWL/3AGVm3x/u44xcwY8eo3e4RQ4HuHtH9PGMWBQnFYGYkML5NZ0INFQXffdQuCUX1wmJiFM1YEcXvmkUih3TYzdCpKdYVH0n+T3AVLGV2lpvSvuQcm3tZ3Yu0OC5rBXTyIxWLGsGfZSjD/giQcKY99ZfrCYgoh9s3Qb1U8cpBE5wVlyInfNllEFdukamYOLtX/2Cey+IgsKuUCZAcCzGOwMYL5T2ASCIO3iwsRCicMQcKDbNaX0UyvMmT91UcDz7Hq4in6QtP7ApBoKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=qF+2R7l0XmyqwPnL6NYnJ8YkuQV1xMZhrltxXEKmt28=; b=NyyG6tj1ssyIu4J/wsJr3ctfwRnAmCO4FvQCwGt+as8uIQzK3zZhHuPQ3ApFDlc/xRVl1/KYSv8ft2cQ7H713SUcvR0m5osx60h9Qv1J4GwqD9uoxa7F5mZGE3iykhScgLA+CGMYPHGuXO2rbVOuEm7/pdxmcniMkWM6B0BPD/PLhTQe0GUJ1HW3y14IAYVoOD41/e6Gpux3Pvf51epOfEI4SibiAqGM7Y4K9D8ONPQrzqpGy11/QaMXjxH/xiLv6Y/dMYYmVLRfhaoQFL6Lsw9F6Kft1g0dEQjo2DzXr5wKrjDPR0qw4vBZCu42OlcyGMZzRVKRq4OZ1gxs71tK4A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qF+2R7l0XmyqwPnL6NYnJ8YkuQV1xMZhrltxXEKmt28=; b=gBL+N0eSCz5RK2BWhbOT2Qej4IPEcx2Dg9P3xsQ9o1P9agvrS6mMJL1P9LEUK3Sb7fpqCJ9Zxlk38SzB3svBYvDML6UZPffWRAoOiR+KzOTg+mdKmgROClOmeOuLNkJsSO6AhkuVIJibqw3ryrAeTEf9T02TGzL/auT+SBj1sVBpBHzboDTwYMHhq+K3wpWnSk/evmrOtXuuMapM1X4aQaNZLRqXxGnX8nG0PmtuTifNbrROt/xer5XQJOzHGVfSXD+EO83yZRN93A2dUR+Qz31i4EYqobM6JooFKAu9dmxFbz/8Zc6gmi6YA5jJVMFlLVNrw3u8d6vyYdQUK4sS/A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by VI1PR03MB4591.eurprd03.prod.outlook.com (2603:10a6:803:5f::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:34 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:34 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 24/29] serial: smh: Initialize serial only if semihosting is enabled Date: Tue, 22 Mar 2022 16:59:32 -0400 Message-Id: <20220322205938.1721846-25-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9f8f93ff-0e38-4cff-bc24-08da0c470216 X-MS-TrafficTypeDiagnostic: VI1PR03MB4591:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bZn3/n1EpKdX/o9QzE5EnMWAHRi61iI6nkHLJY6xN+x28BzQ74L7F5L6RSk2/X1rq45Fx292Ba8sWIXQIaDgOwOfnFDtON4oJ69+F5coPjwh5xbzl9nIDPUNO0dUosoLQx2691PRzWWHPF2dtLBXcuzdLlDYSIUZDEWLeI63b/21czNaQttmO/EcJNJGo3/joPtXxrsvR1/yNbDiLlHrJzYg7n5fBjdui+PIYTa4LinLRN0zlE8Bfb7BdVF5LqQj8KW7GRfhFfSIirjcbqW+zTXGYLR34A5o6p8gNR5hdhgUvUD2W1mL+u8OsuvYnFfoGvrrtmMNmPGA92zrX4ahh4CO1ojjTwul+Akn+zz11QrwWzM7IxiecCDeUFA7WVu5P3Tfg96AiYsZv1lpwtphMBVr0eqB+vwOPdCfauZWs8+xo2fB9+pYbWqfTkLpDQrM825Txuz8329oQcsx1IgufsvNyKcfQKXqbYqQ8Wpe0Hov6QUjHcz1KjZyn9HL/KnforeveJN1CGloJeeLxRvVbvfAtqXgIl9aAfUVDSlcpYSD4C17TOG5u23o9b4PrN2eQRyhN87nmWw3C6/TfVngURxQkXzwTKEd8dcZFnV6Y95n/NjAQIgX+XAatFDjbKdiQCeQwWVZF9KW3qk6W0IhPzksrGKuvLoptzhW6a+EnyehCLlQNID5VwxXUmccnBf+sNl+GcOSyUYjV7QSaUsyuw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(83380400001)(6486002)(186003)(26005)(107886003)(38100700002)(38350700002)(2616005)(1076003)(6506007)(6512007)(6916009)(36756003)(52116002)(54906003)(316002)(4326008)(5660300002)(8676002)(66556008)(66476007)(508600001)(86362001)(66946007)(8936002)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: djYAlYj8nTO7VTw8TLR7Ci0NV3/pmjlGyo2HhZvk1pG9HmUEDRTI7tafw/iTLDpgyrlKK2mzERZSyeYSbDCgNA/p/NqXsHwavJ6ZEODtVy9/QcjlzVexwC0+OikLcUmJv4aS6k1PSaJnyHlfqx4U63r5SlPuacZ4QLvNPpn5zbev1Kc+L92vttbQIxFRcKXSYRn4aS4DqRBGRHvhj/05K+R//EQmgJoLmOPNTj165yoaNDyKmDDOnJKqGItaDgXX1xH5M+y2tbJ8SPiCaAdHsij2lVsJGYaYDITx2482OGPbeKKeTapNzQ0+pfBSvcQvuLlmk1xtm2QzDo+GgHKeGW3/2U+Tn86yaCME4KUZ8uznMP1cT5CDuHifV1no9HhXmx3N7fIyvWYNK3v0Nfc2a70Rolj6ro1VMTNdASNgQUqs7WHD2xjXYUR9VAiiBJsJfaCe/DRSprH+EKG9A44VQCf1peFnTJgrHcY18Jok+YV9dNVgcjdaSzXqRygaIwAY+cRIiLYhzz3dsZVJKMaFdrTCmy8J8zKOC/xTropqB8E3iq2ZSkZnEnB2zICmvCzZmw7gC3dtuXFkRGfjnKVgnpVGeImH02qTct4YU8nSY1o+QYlROnrfnPE/RKNsb9bnWiDbgc1tdATTwqFdgOT7Jm4aJ4819p5s6falTneoZ38RntoZa2lZ9Bu7LLk07VcqO8NsfRGjZjIqq4RVODlA3oyqzHmU0/8dshga8J45Zz+/tjEWB8q/uIAXtQdMJXBGBlg0kBC36VJajNx0oOVSbNG/Vz1U5ar6ai4IoX8QvP6+JY77E2YcQFWroQeTVRznKL6IDgyhiDFU6+CY5iqVgJMJfhHrO7V5OizyNxCGA4kUm2tfxnmeC8FToAIY/8NcTrsslxF17T0JXlaM2690mpZJKUUhATjcWM7wwoyGXpMfZEgSb8vCNBSEedfODwDqMHl5y7/tffCibDUsHaHBvx/Gm3sMAkz3iedPWjZfIDlVJsgayCrnyE3ia03z9Df1Eh9iWUPXnwXpVoFF/oaM87fhtS9M8dSKLn51poNuLEqNYqKW4GyKFJ6wlHP4GGhPHCCCkWiStRb5narh5NKzFqADTSeuBqq19C0IAXLGY6WuedNEDn3EeVQBvRwSvcdtJkSpDqc4ZfpecBxYvkoEVwJfrbX7g/xwhmzUEcwe8gd8sPkHDzWR6dAl+52vRdiwoxAQ8lCf0W04URG3UfmUVJ/c7HYLMI8qNBzz1xVGHa2dzA3ufeLFuU45DH/y5bCGKRx0Q0r/dten0wUu90M0QZlDIfLNxxHCFRItkb4WUdMa/rA1FxF6ZN6E9qMU/6mmdGQqLZ6hM1vDfcaaW1vvpfERAmJdHewsfGIXr/NX/o9s4SwxOyyPou1glVvCNVFQ0dNImQN4y4Bgf/5x4ecuM40abFmapdKK0rUa5yviweRJ9KO8jDUAUSLwpGZkvlIgC74wVIf/fWEUE0zCUqZ7kQ== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9f8f93ff-0e38-4cff-bc24-08da0c470216 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:34.4695 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: mezpwTk4SWEb90iuiVKG4/goARHQUVJWidAPBAM0YCfQ8xpysggssTA2+NsUtT+Sp+vBw7zuDIw4cU8uSXkTJg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB4591 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean If semihosting is disabled, then the user has no debugger attached, and will not see any messages. Don't create a serial device in this instance, to (hopefully) fall back on another working serial device. Signed-off-by: Sean Anderson --- (no changes since v2) Changes in v2: - New drivers/serial/serial_semihosting.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/serial/serial_semihosting.c b/drivers/serial/serial_semihosting.c index 7c7c5d9455..62b1b2241b 100644 --- a/drivers/serial/serial_semihosting.c +++ b/drivers/serial/serial_semihosting.c @@ -41,6 +41,13 @@ static const struct dm_serial_ops smh_serial_ops = { .getc = smh_serial_getc, }; +static int smh_serial_bind(struct udevice *dev) +{ + if (semihosting_enabled()) + return 0; + return -ENOENT; +} + static int smh_serial_probe(struct udevice *dev) { struct smh_serial_priv *priv = dev_get_priv(dev); @@ -52,6 +59,7 @@ static int smh_serial_probe(struct udevice *dev) U_BOOT_DRIVER(smh_serial) = { .name = "serial_semihosting", .id = UCLASS_SERIAL, + .bind = smh_serial_bind, .probe = smh_serial_probe, .priv_auto = sizeof(struct smh_serial_priv), .ops = &smh_serial_ops, @@ -122,7 +130,8 @@ struct serial_device serial_smh_device = { void smh_serial_initialize(void) { - serial_register(&serial_smh_device); + if (semihosting_enabled()) + serial_register(&serial_smh_device); } __weak struct serial_device *default_serial_console(void) From patchwork Tue Mar 22 20:59:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608360 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=hrM76w3R; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP9Z2LjJz9s1l for ; Wed, 23 Mar 2022 08:04:02 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 5738583F54; Tue, 22 Mar 2022 22:02:39 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="hrM76w3R"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 4F57383C3A; Tue, 22 Mar 2022 22:01:12 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-am5eur02on062f.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe07::62f]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 0012F80FD8 for ; Tue, 22 Mar 2022 22:00:36 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J0RW8WuPG+Z5wen7Nxv4KQ02KE478p0q8VlnvtXTKstRZBFBpI56/dXYDNyvO7pLUOVtDdCpdgmUpWtnDnzrTU7xP6yp8Le3GmOvoluTz2g0yIdgtxgE969zjDNpIkw02BMz+g0V8xaeLxf9U4EXNjMK/a5JZ+sTDkAzkFd3SIlMXgkgPTvs8l+/sKN/Z0Xsy44QR+qbQZiuMfFH/3YuZO8QShMRIfsnu8DAS7loijm6iquykL8poxtPBuF4FjXypgIY7Wr80ouYBxTpPwWLoXszoLQY+gaB1YznS42+c8LmHpGIQbo4PCiJUHD6aLQ1JOJD++LY69dspc9BtBYdzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lmRyo2stLzPWBixgu5wVGGPnJka5Br3wRjpfDfO1KNw=; b=gTa9rLlo3fKZSq4Gz/dVJlTqSQlxMcHeqpDUJcQxbccUujpaDJTYU3cWZJO4lzuNr2MUKKMj1SNCwIRrmE0LI5OdZQ5T+lsDUf2qSKxl9qv2mw8BXyPYNez47pwTxiVAe5hXKyeBF60IqyQSMfYorxiStYDDAU6I/mdPaowgX5z1x/8AUP7vLg6BS3mAYnmI0xxTKqWAQ36xS2Bhq8a6AVhvh0JqrtR8X7c6oVHOJ0uIeK8QTIjYLJKU/uwSpC2nyYNvdO+LNmz0ceU+7+7a6HQJIn7KjfaGuLOPoTqf+A/mOZM9ONPWK0czItW0eRySMW7WYlmZCfLI30grERtFtQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lmRyo2stLzPWBixgu5wVGGPnJka5Br3wRjpfDfO1KNw=; b=hrM76w3RBDuz8aXt9wZEd3nmD1+aCZk/lLkYr1vgYP1ShdNVCjXDX77jfSZ66Bz4HA4JjGgZfOTRVSoVIYNeA+/STH19hCsKoAm2E1PsYiYCxCoYpRw/erpXiqyuain63xFDPaHWHqn8DAAJJqsrCi+nG9mbsT2p1AX1NPpMMdIXdWMEyuTbm3GBOoeMozlOXuvNnBjNLYyuATCpM+gaZm2GAw3D6zk7I8FNcX44OOvK8CyN2JslaUytbAEcoBVYj9fAVYUiP+S7HmoKG3fHR6pnL5friG50RHrro0S+jFVtkKwH9iBCjz7sHnY7sqz0QB6AqOTOuW1MNY8OWh2ewQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by VI1PR03MB4591.eurprd03.prod.outlook.com (2603:10a6:803:5f::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:36 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:36 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson , Mingkai Hu , Priyanka Jain , Rajesh Bhagat Subject: [PATCH v3 25/29] arm64: ls1046a: Support semihosting fallback Date: Tue, 22 Mar 2022 16:59:33 -0400 Message-Id: <20220322205938.1721846-26-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0beb46ff-efb9-48df-10ae-08da0c4702f2 X-MS-TrafficTypeDiagnostic: VI1PR03MB4591:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /T/TjosmLRn6zhLj3FCxxpxAv6epNyQ+vpJM5lC3GwbPIWKwMWe7nidVWsMleAgwTjj/2L8GwHAUWndtsxUEGRKC7xcmJhqVjbiEsbrX7eV0QK7WGv7+MlIr187RZrrYfrc0p6UTtchfj4VdSV+eEpQ5gfEsLsrkYbHwtD3owMqDN1PUK/kIiXuDuhggSFWXhhYGT93QrO751whuWtZq1qrmsDaC9OGcTHR04ZDORnXdaOX7rfM2LIUZpI8/U+jv0YGlsIZW2jMH0wB/wjtuReAE9lOirt2gk1uUa+eOgoTNqfx+K8G8oZfcSeVwuBZ0CtjIodbGozy3prQFSCFXJmmT75O0qed1MY5R2lW7wnBZevaDGuZ26YtkXc0CyeU7MEsdZ2PzAUG7HCpVLQakuatdB1PmylU6fT+uGn+bWAib2MRA92+a4P1z4etDYulJmHdUyGtXw6cq9g3Y9lpTGhzU15/PNN30/kBj75uDjxx7zi+xtuGUbjFymT+qMX7VM2wOT2lGA2ZfiTd5OHos8F84YRpaL7YkWN8T8uEPdwUkTj4cHSCDz5WXAABT3zhsjAnw/qKRTlxEXBGoR/h90kim5HeQtsKdLIOPIDb1KFcY6mfabkh20vS61DloKISiGk+VpNJ9GqJuPmtr/PwTEA13CPf2W64zlOJEve7+8Xh1qBrMY0pZMqKuk3YswUcoj9y0vMSM75V413aD/1n7ZA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(83380400001)(6486002)(186003)(26005)(38100700002)(38350700002)(2616005)(1076003)(6506007)(6512007)(6916009)(36756003)(52116002)(54906003)(316002)(4326008)(5660300002)(8676002)(66556008)(66476007)(508600001)(86362001)(66946007)(8936002)(6666004)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: EVbFF12VwlsbU2VmDTD3UFEDG2YZZ+AbT5KX6qZZ+v0l0Zp2jDLxWI2X68vJBl6X0+rPFdWmf4SvsDGRfRFVl/k+cgjalPGyyx7zV1zb1f04/q0CAzNCkOtR2vmle//pUSlbDBjTJDHNe3F1G5NQrdyYR/5FRTXIj8HTlwQ1I2dmY/7CK6a9bJcIsrgbQ0yztpR5uFm8UYA0ohHXXE+l0eBQ/k7+eEvlJkbQfKYSg2ESmJ3HlQ1Q+AhrrdeRrUTp61USabJlZ8n93bMrx1vDz0OVNDTnqQtU0Af00cF4TwqH8aaTppZwK/YtGt/6n3zJ4WGhe22KOuqC3xfniyp4BfQW65qcfRRDtMkAgR2jLN98zuHsZTRj1gyzs0BbpN6ALMMPmajOVNu6HlNWObWEKwca2UDTeKv2Gfgdf6g109hiiw86H7m7eF/o38N4fF5S4P6mPVmtc7qhAiXuskrU58v36WF3mXt3TY7ltJGo1CeniaPf9J4EIgDidxhLNQzwKLPKVbdKvyKon3+dt94Zvm8m0ZPWNrMW7Rb32N27kAuVAp8tTybCqjR7PkqKLAvHtzYVnhH180/YFtprRTD5TPbquPXU1+bbnHMms2ky4KCxLwro5PqYMNIen9uX6fcVh4GQKD3N60GHKLvNPcqMH0FWuodhOLopokfnOyelED+2XdGaYfvCnB7iTdK636LkDZQmxY5fs/mJO7uAitXCWhkGjo3Dkm62zp8pgMR0pyakKQNeHvuVR4gQt56o95GKlfD4vM+isRZcPE8HbMMdxfOS4wGYoLRhnITUG0uFvNUPPhAA+V+vBFB/o9NRI0rHZHyxLOtbdah2357zCmpHc5MLLcmd4rczYFnFp4nE3G4fE+5G5AluDeLc629NIA1jNE3ufFv3ek7HDUqLQ+12qu/9YLT/M28Rn2ne6sLrMzicB+FvgjC2RcF0YnyvfDCWApb1XWgeGNbLrUBwsOdqrq3qmZJcnXZpTsZp06Bzg5GrWCxHSn7KMCwEkG1YMCcT7eH0NdQOffbPkGneKtaoSL5fwQzvZq6K2adr53q6rv8Qe3MLkZEIXFYi61cG4Ci0U56aVGxE7RSAzH2DfKLniFhiHqrstfxqy8RAy2u2nYEU3GJVgi7Ziqngk7H9Mhx2FIBqhDEq/LEOuOfrquBd1XdevDPeD4zyRZx213JiE0/AM0LjA6BLfIa/c10789tPmK65zwoaB4L489bISf/YusFuS5Dqvrvwbqg1xlvrzwj7mYx2/GXUbgnYkSeSglSCMuxpHVe9RNgZH09iTd1Eu1S2YV/7URFpg4+1AAyJEFaldQNnLelt+if/QUO11w36UBsxADlALtEEe5YM2smI1SzflK6C1cFwDdKbnFR/EXEL5z9aXGGVU/c0X4FGhUbVmLSxo5zEajHlAyadN763FbZyfXrWV0lErL+suSgl6lvbJrFhCe8ZrnkVsmraC3Yv0lOGzlYexD2V65iZ57HQAw== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0beb46ff-efb9-48df-10ae-08da0c4702f2 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:35.9382 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Ja4xMR2xIOMdCGwzE9v48TmihRtFlUrHbgiignx3+H4b5jGkwXqAAMJa09CTKOJ3CmRodQPLOnzb1XeD9C2tGg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB4591 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean Use the semihosting_enabled function to determine whether or not to enable semihosting devices. This allows for graceful fallback in the event a debugger is not attached. Signed-off-by: Sean Anderson --- (no changes since v2) Changes in v2: - New arch/arm/cpu/armv8/fsl-layerscape/spl.c | 3 ++- board/freescale/ls1046ardb/ls1046ardb.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/arm/cpu/armv8/fsl-layerscape/spl.c b/arch/arm/cpu/armv8/fsl-layerscape/spl.c index 1a7dde30a5..5f09ef0a4a 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/spl.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/spl.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -27,7 +28,7 @@ DECLARE_GLOBAL_DATA_PTR; u32 spl_boot_device(void) { - if (IS_ENABLED(CONFIG_SPL_SEMIHOSTING)) + if (semihosting_enabled()) return BOOT_DEVICE_SMH; #ifdef CONFIG_SPL_MMC return BOOT_DEVICE_MMC1; diff --git a/board/freescale/ls1046ardb/ls1046ardb.c b/board/freescale/ls1046ardb/ls1046ardb.c index 9af7cf763b..f2949cf8b6 100644 --- a/board/freescale/ls1046ardb/ls1046ardb.c +++ b/board/freescale/ls1046ardb/ls1046ardb.c @@ -32,7 +32,8 @@ DECLARE_GLOBAL_DATA_PTR; struct serial_device *default_serial_console(void) { #if IS_ENABLED(CONFIG_SEMIHOSTING_SERIAL) - return &serial_smh_device; + if (semihosting_enabled()) + return &serial_smh_device; #endif return &eserial1_device; } From patchwork Tue Mar 22 20:59:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608365 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=M+0Tly/j; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNPBW3c3Zz9s1l for ; Wed, 23 Mar 2022 08:04:51 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 8FB6D83F70; Tue, 22 Mar 2022 22:02:56 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="M+0Tly/j"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id B00D183C97; Tue, 22 Mar 2022 22:01:51 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-am5eur02on0616.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe07::616]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 4EBCE83BA2 for ; Tue, 22 Mar 2022 22:00:38 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I+RKGqkxJW3OEKxWhEZ25+TkWhCR3VW2wLUSG36DWCZ2+Ibb9KGIkJzIVtc1so0DcvU8VAv44FT+HxQm7iTTm3aY1KLcgkRKpqohXDZ8lDKtknIZbEKJBmXkn5qfechiEg5EMIVlJcJBMNMTgwDHpwp9V0sT3SEG0Y4Izmc7RBszWPXTvLqagsLS/1+S0mVu+JqLBrCTg3ARES4qluaJo8/N0RTXLm0ltdmIU/xHiqR2IhUG2n/ksjNF1I8f68NBbROnFZLMuKMs6lLV6CD3P6ecF5vNL2azwGX8ROes60JnX91i92beX8Tw6zJ90ZHrsAmsE4wWspsMjxu9K6TCkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=S01kINpRzxmlexcAV9Yn8JVg/6kYr+zX3AQHHeAjwQ8=; b=EdFI6NbXUv61YOMe1b0wLxZTxh5F43UEOr8GvhendOJ5wohRLnzCOEUzIEA4OO0rlmts7N9scef3IJtAClexMLqU5UYqU98xXvVMcsSYNyvGiGBzHLnotUaecJbpwMcMf8VDjCavMfyq0SNSSmq7ChiMEWj9hzxHwz2t9TCk5+vuH7Ch4l/2dLlmF+MHTb71acr46RIA8qMDOxehIFbaDEYlfDFasW/uYj3kDrqCFFNT7M2NJR6IJRmgh96tBAln/yKTNdb1B5qNHUkr40cggaOA5Z4Cy4DIfm3ceaDPx5sjk8fHMQJJBm68gQwNa65xXlwtnnswF4rK4YPVSjKBqg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=S01kINpRzxmlexcAV9Yn8JVg/6kYr+zX3AQHHeAjwQ8=; b=M+0Tly/jvx2NRnb7+kaUMaO4FJO/vz0hptz8jpokdwBuCLSZWpswNBCiniHNlRUyW8h7pGAs7H0+oj6wHK7YdEpQ/p4rQJhv72+pImVjEObY9K8GJa0l5xlbKEYFn20864Bav2aBYy05JHEYwDEy8S2Gjyj+SHrR0+yIruvj/JhykES7O5nBdzQ1DuwcXG8E7vfRA19w3ZZJV/NTDUB13NBwqMgH/zJ/s6RO00X7XfV8CC875huswqRiRDSQgQy8sooD9RnAP6qQamXRvCeGGfTaeQU8V5mllaPwRqWNELh1g1vYMM5UNYSytG0+WACpnPlK2eqTQNcNvFy2p+yyeA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by VI1PR03MB4591.eurprd03.prod.outlook.com (2603:10a6:803:5f::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:37 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:37 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 26/29] serial: dm: Add support for puts Date: Tue, 22 Mar 2022 16:59:34 -0400 Message-Id: <20220322205938.1721846-27-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 77c0aabf-b87d-4922-04e5-08da0c4703ac X-MS-TrafficTypeDiagnostic: VI1PR03MB4591:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jgnWuZzp8sLmZNRfzontv96oGkpaTU9O5SYeYt1BKWVKzgBGtyYtZc9H22d+27DpMoMKVxDRB+jXnwqp3ua+tCV/yI82Nwd0ocnM2CNU8a11uie2RX/7ORQoAVPdiOFzFsNHuoMyns9DOYQDPc/z5mJ8Ds2FTdjaPITSJ5ZWjew7TUl1T2VHFbtrleLuaUVkmQc1jtqx23BsTh5nP8GhBoB+JSOJGqjNTxV/E190sE1BgmCRKwSxWCVjKcl87u4crchwpT18D3gCKfWDP8nPbPQfftNEqlYfYMenaRBzcXjiAEl2w9RWmTGWprc/KQ6EpoIZsg2L3QRk0DzrsXhQ9SXj84CXiEeXkdCed7op9tmSUDgu6/j9G4zYJnZ7KjKOfO5oJW8WKxAjRtVWg/NjoUEucIRMnhvTxCC3R0dIXgW+0rv+F+xlgw+gD5ViHomG8UlBcSh1rjDXLVQja9iuJ852GetOcSp+GrTcksCX1y65gqDn2wWHJoChNIDqmyNcKRc49vv3nxujgcPismocybRvhYrnJyWcVrG55Q+nE7PKx0W8q7wEUSpEYFYW03yyrqRApBJHJtkCi/UooB7vY8Acr5+Z1zmNT1Ad/ODK+hAJw+fB645NYOiyCBvux7+Gyjfu828MY9jEQoeZdkFIj5A8ZqKAeqk8aVfZxb/UPsNEtBvsla2enH5+Fl2Rq2HAnYMewgNn6EVVUiVej3mcQw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(83380400001)(6486002)(186003)(26005)(107886003)(38100700002)(38350700002)(2616005)(1076003)(6506007)(6512007)(6916009)(36756003)(52116002)(54906003)(316002)(4326008)(5660300002)(8676002)(66556008)(66476007)(508600001)(86362001)(66946007)(8936002)(6666004)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: evHVx8vZnWNSxZfH3XUhbsn5WOjno2VFzmw27I+HQkKSHPokHwbewrTVJrvrifF/Be5dr6WIzGxbc6KYKKkinMOG1A26kaxGPvGFcWuFtIL9Ie/BAmNBmR6ZatNym1LZaRe44RffeXOgP9e1sCTusS4lCw8iE7ZfLL1KT9tZrFxloBUjzsP/Y1zMu/I9ZSRw3dNICMCZ4CxYsaRz9mHOhMOB9lzXoeIy2gGPVSrF2PEPAY9akaGjz/7Hyvv+JYTbuI1Hqo7Ls54waRvnwlVGuDqi85LhD7426rV/gGPEDf/fECuyGQ0V+L8vZ0++OMPFM5UzNf6z6eazA5Hj74vrilys55ReRPck+Rv4gQMY3+kNIb9AjLbyLU2ZZk37UQWq9X78bzL5uY7AJNPOGr3y5Q/HMyupcvuq9uNrh9bBHcF8qHwXBqJ1+P6mJec6m5tUSgNtMpjCGfnMaC7/yHs9TLzuj6nb6bTX/KbdrKDS6nw5pF4qeHl+CVZKhoEhAG0bJLcpaRZ7xgEcUtvsU3Njcieum+iffEgdotH8i/xgJLBQQidgVQg5sKBdBke2QOo+MdBhs50OMcfp1fIjhqkdS7xiEZNzGPl8/iWBzS8597dHu3pK92jN2pEFhxHDi40gbydVL5CoHRvNB5pHSK1Hn6OqqudkkwPYbhY+5/l0w42WiXcKLuOgZuvJ63aJKfmLb3Eh48BNPIF8Fma7K+fBKq7OGJa3CD4q547LdX424Sifg0Q8p9WIzQ8ojx2gC85y6w+JXx4cJbUbC8NlMhKoSnpcHGp5bg9tasINQGfVAB/rR7bh6JlxMzfWho09RjqOIG9j+WnT+1woWxmpfxytZVF19BvG2l/sejtn3AynjPOJxiHdCm7EYG8Kj8Qra46cEeb9TNGrDPWCJ5su7nP9X5sl8WRACbseggpD6Mk1rnHuMzWNNztng4uXHl4LRmyw8aeoS1WJXY4tnc7GGfmAggvkunZRPiwL8EPyFbyJ37pgFq4RSYWnzTJYLdQotseJ5R7H5/qf9KIAMvH5DayGzFPLFDs1ZXR9/5SZn2EyZOnipZRRD8NzS66lhdqnT3/1LDhIPel2O6PbIPF5N3GOJL/Ho868UTjWfaNIUzeGjTgIud6FmIKNAICla9mgp15wOYH9cg0WyiVpHd4x2EUbqs4mck/b7MOUhxdps7qAMP3WjhAQbSw1e/a7QZ8Mix0yPAzyftjlI8CWzUX/zFNiVeEEcAaVvyKMnTGODW3jN0cXkUVKyzHZ4wCmsjxkxKB5hd8YlPWLk5iIBPmEd1zEyYzdMgRPD4bLk8a3cyr3s4wB5NaTCkYbdqBWF8NtkSN12DGvZAJZBFxiPMdW2n2cW30JJJ1p5/xBuWPbEZg6e1Ib9z1/9yB0ro7Zs0R+wv8BWLvzATJsPXjezzSqaF1/iCh0+7O3a2bVsAhrnx6QxlyfVYbxraibEATxT8xol+kqrWgC61l8iZ+AsZ1AbpHgpw== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 77c0aabf-b87d-4922-04e5-08da0c4703ac X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:37.1725 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6nr7Nrg5fJfBZH7b5U2yEF6iiTVPgWBCypGEB5hCDR6U37o6PgG0KbmW0qANnDSRVYDAsfvqexpldguzqbsa1w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB4591 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean Some serial drivers can be vastly more efficient when printing multiple characters at once. Non-DM serial has had a puts option for these sorts of drivers; implement it for DM serial as well. Because we have to add carriage returns, we can't just pass the whole string directly to the serial driver. Instead, we print up to the newline, then print a carriage return, and then continue on. This is less efficient, but it is better than printing each character individually. It also avoids having to allocate memory just to add a few characters. Drivers may perform short writes (such as filling a FIFO) and return the number of characters written in len. We loop over them in the same way that _serial_putc loops over putc. This results in around sizeof(void *) growth for all boards with DM_SERIAL. The full implementation takes around 140 bytes. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- Changes in v3: - Add a config for puts to reduce the impact on the (vast majority) of boards which don't need it. - Fix null pointer dereference in _serial_puts caused by a missing return. - Make puts return the number of characters written on success, instead of reusing the len parameter. Changes in v2: - New drivers/serial/Kconfig | 13 +++++++++++++ drivers/serial/serial-uclass.c | 26 ++++++++++++++++++++++++-- include/serial.h | 18 ++++++++++++++++++ 3 files changed, 55 insertions(+), 2 deletions(-) diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index cc20759505..1a109b2411 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig @@ -133,6 +133,19 @@ config SERIAL_RX_BUFFER_SIZE help The size of the RX buffer (needs to be power of 2) +config SERIAL_PUTS + bool "Enable printing strings all at once" + depends on DM_SERIAL + help + Some serial drivers are much more efficient when printing multiple + characters at once rather than printing characters individually. This + can be because they can load a fifo, or because individual print + calls have a constant overhead. With this option set, the serial + subsystem will try to provide serial drivers with as many characters + at once as possible, instead of printing characters one by one. Most + serial drivers do not need this config to print efficiently. If + unsure, say N. + config SERIAL_SEARCH_ALL bool "Search for serial devices after default one failed" depends on DM_SERIAL diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c index f30f352bd7..10d6b800e2 100644 --- a/drivers/serial/serial-uclass.c +++ b/drivers/serial/serial-uclass.c @@ -200,8 +200,30 @@ static void _serial_putc(struct udevice *dev, char ch) static void _serial_puts(struct udevice *dev, const char *str) { - while (*str) - _serial_putc(dev, *str++); + struct dm_serial_ops *ops = serial_get_ops(dev); + + if (!CONFIG_IS_ENABLED(SERIAL_PUTS) || !ops->puts) { + while (*str) + _serial_putc(dev, *str++); + return; + } + + do { + const char *newline = strchrnul(str, '\n'); + size_t len = newline - str + !!*newline; + + do { + ssize_t written = ops->puts(dev, str, len); + + if (written < 0) + return; + str += written; + len -= written; + } while (len); + + if (*newline) + _serial_putc(dev, '\r'); + } while (*str); } static int __serial_getc(struct udevice *dev) diff --git a/include/serial.h b/include/serial.h index 2681d26c82..8c2e7adbc3 100644 --- a/include/serial.h +++ b/include/serial.h @@ -195,6 +195,24 @@ struct dm_serial_ops { * @return 0 if OK, -ve on error */ int (*putc)(struct udevice *dev, const char ch); + /** + * puts() - Write a string + * + * This writes a string. This function should be implemented only if + * writing multiple characters at once is more performant than just + * calling putc() in a loop. + * + * If the whole string cannot be written at once, then this function + * should return the number of characters written. Returning a negative + * error code implies that no characters were written. If this function + * returns 0, then it will be called again with the same arguments. + * + * @dev: Device pointer + * @s: The string to write + * @len: The length of the string to write. + * @return The number of characters written on success, or -ve on error + */ + ssize_t (*puts)(struct udevice *dev, const char *s, size_t len); /** * pending() - Check if input/output characters are waiting * From patchwork Tue Mar 22 20:59:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608363 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=fatmoDMK; dkim-atps=neutral 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=) 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)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNPB74jSzz9s1l for ; Wed, 23 Mar 2022 08:04:31 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 729FD83F72; Tue, 22 Mar 2022 22:02:48 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="fatmoDMK"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id EDEF083D65; Tue, 22 Mar 2022 22:01:43 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-am5eur02on0605.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe07::605]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 9AF3A83BBA for ; Tue, 22 Mar 2022 22:00:39 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SXfXhpyP8uboXN6raN6bc23mQbl8O4EhbWRBCv1ZveH08VIoQeAk4Hrb+YAUCVDoYixR7nxRNDa2bwiNp1SX3C44Y3tQ8TZalg67Jot7/uvg1y0kUHX5hgrN6p3CqH8lnE8vKeX3LoeVxbNuZlRzPhwJeFT66xc27aI/9TbiwLG5LzJ/iUAfsm7c85bEfiAPxyj/6pHPAJL80y2gK44+49HkvBVCtbq4Py53eYM1rFStTWBUe7goJrNKMRnOwIRduBQe1JP7a193qLVzrk37FT7gpWhqyNxDYDj1G9dH456QBZTksYQAohAcm2lUOCUWbAcdavOi55No2gri/fap/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=sukxuADOgxcTB3E4gemNACULeLPdnt9JDyaXczHSJ88=; b=YmEiXwCLCLcPJ76k4VgxrsYtEZA6A1ZOGMA4qcGhN9s7M2o6xH/2EYQqzEebf4VSmIUZ2ql5DjokFBIPBrKz8P1xNg3/oJhboXxoZmZVCowckGjBdGtr2s62GY4UCapCuiuhiB93lmeqUn8kwXSGb1Yi/0D8thQtLH5oE9M2ru79Z+TURI1bz7SUMzTcNNzkBjf7rvQcZRwXoAmaXKeZKeQjO+QfxmtyI7qIRmcfeBjiEsQsblmcqA94IPYYko9O0ibu98mXcwl52J6kFv4iPfgXXZSHf7Mpw4saYA6UIMuuqYVnCFs3cfeJXHEZ41C41Q94ZBpm+CBQioALTjYjnA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sukxuADOgxcTB3E4gemNACULeLPdnt9JDyaXczHSJ88=; b=fatmoDMK2xVgLpvlLsPoQX+jruo2CogiWBO7Q3+HZaKHThEE/DTDpeT1US7GA70kP74lH0+q5Jt188RN1VTC1Cza/MkBaKgTHzwAT0HixU/l0SxBrhpkHY0f/BlxI7f1JctrBue8PYnU8EToNajXf+5/jbcfEv/bXW/uP7lScjboWe3iFWmyiXyqMy66fVhrlSDQQkYnUHGjymmf3/dGDOzpMjKm7ae/LFmeZkMIf4qMT8X4XSqBXxlpfIiEFetBJ1L9gqjkG6OMu+azBvyuwCSxGzcIloG5EuDP5Ng/j63OXvzcWTRzqOcj79DUYuC7t24rIJTvlcV69AYnOTahRw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by VI1PR03MB4591.eurprd03.prod.outlook.com (2603:10a6:803:5f::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:38 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:38 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 27/29] serial: sandbox: Implement puts Date: Tue, 22 Mar 2022 16:59:35 -0400 Message-Id: <20220322205938.1721846-28-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6769e76a-276f-4031-a952-08da0c470476 X-MS-TrafficTypeDiagnostic: VI1PR03MB4591:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oyb9zdoULMrd14hYAjf/JYK6C+znL5R7RpAValp24Ut5uYhfAo3pRG3troiyDmsoiQ9vf3hybIynfaNQHotzROLs2VZQmzQb/k1hSeWBAV/OYy6Dsk+bEQFhXGao/plNunnE5QHZg1/CpYGOdDAYO76To/JzN14EMZ8H6subs9071yWGZBIonu8UJaJqp62byaa+23CN9JHLMMcblaFVNxABMJFK14dv4yWgv4fKbVUTGjMGpt7RwfR17N6hDIsNjeDsr7JGPHSp/4PXcoIQEQHsl/Rbe2+8pPGYIIExDHbamzkjWKylFktrBVLOOu7UkUHhh/dhuI5SSAN3L6173s+11gxWSrHdvuhpU/yt2MnIniHDcscKeni8RA0dvG+unLoo2VWPFGthdE0krwmU/iZQAnrgP2tVvD3+1NecOovtM33x0dNVf82/P8++us24mSbzVwF1i1fLrcJrlRzR42w2IAAhXNLucU7fJwiqQ2ve8tXBOKS/RBmSRtE9PJYFkjCPk0zklRW7sMsTduo33SD9cZysLJWL4hSH2v8dobfAWGBxoYkus+G19MboOQawkUNB4DdYT6nDOmDQvbWi9vhFKOyZc331re71I68PAqGsX13NKWeFEd9RLMub2KhEAppWtPAXmOBktLnKe5xDDZX0XlZCIP2kaju8ptIA1+zHWh5QcGonRGLdu2uvfqvWA2XcGyvJYEHz8ZU3QH1hFA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(83380400001)(6486002)(186003)(26005)(107886003)(38100700002)(38350700002)(2616005)(1076003)(6506007)(6512007)(6916009)(36756003)(52116002)(54906003)(316002)(4326008)(5660300002)(8676002)(66556008)(66476007)(508600001)(86362001)(66946007)(8936002)(6666004)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: YSqIdylDLYJMnqPbh/H44JifLUq+jDcSuRfIkqVsbvhVNHUo0U3XlIrHz6Mg2VeWiDzHAK8IGoXEBnXKl4YH25JCvIUBioKEvrkYd17mXZHkzNU7Z3v7fTvKUIWtBeAdqdKBCz4XN2/Dhhw0FF7nonuqTHPMcAXygVzy2ThgTUEPrDZi3Vs7UhCJiXMj8F4rHyJ7BJr/QM4Jfnb3uI7aFZzik9I4QKchTF17QCSjDDF0ShmNwRLHyD6wqejJceRRhBGSNPb+3Ghi1qOq/vmdyi1m8D9dde5vec19YNpK+2p+eIA3GZ62WRD1MoPfu36R2yUdQ/S0biM3x5pfCrK8vUWDJwXEaTqiUFFpWVQ10tEo5K+hB+xNH0+VxuX0/NobqfJRbpGcpPwEHFYs3uO7si6OcxEKFtUVcLhUFuwMxhVTQdQOenHtkTZZW5u8Ey2Kqqi5pNBA+5ZgyfXGej/WDSR89Emmn41rfla9ncBiRY+njcLjb+dw2FNyzXeDvEP4D7ihkI5BJmu3UoTTfHNUA5OG+iB7OxKXBzBuItaAg+oxkXpBgvyHJqKV/yuJMKif45rFSUNEWnwI3rwLJ3vKPHZHjwLUeYA8Oel9vqCIvRapFgY140VhSX/KT4MoZXyhenyb4m1Nrflw4UTxNH64ELgyLf/yXFtsu/Qkxeq1SgBOESgarNk6CezepRel0Q6RmiEPZhaZXkJ4N67cpeVeCYjm/WhUcqHDT+QHFqFXBKrC8KRKnvqHMt/kHds65I01YCeO/pX0cVk9wdouPQklxiGVO0e8KsMkP3tzQ2qcyWS168f6ysiTDSYE0DeXxjkSLuztTt8ic5FfJhsZ2nE/U3Twlwj3STTAcoSlblASNmU8hOzEsBOGOVga4BTEoaEICA7tzBOZsymp7bJHdzn5Xn+/fRU0IFdFahglKANhDASH8xqXeDhSAOHmw34pnhiLZxHRYlStlLYJO+NOnza86B0vB5iKwGGTtyfLpfACCIklSdLYGyRPrJdsTBq88KoUY6y/iM0wL0JKR/1ZtV1AHZRZJLpj9Oy+pMKVpgOtB5tyvmgqZ/n25f7BGKR+WWag6rGvJNpJ8JN8WlFuB7kRgzwR96YSlRfk+60DKvsP3LiAgpsM8OKHQE+2GySjEuiwVPhGqlCvW2M7nCGQFxEEOGceqQBY9HhReVL80iwNnqXf8T0d1Bzjq7bsO/eFTKoBJGK+ExsWqwh2RQt+60h+0qRhchpNwiscJs5T1hg5xhJy4zHncWnj31ItbvT9Vxw50SPxKwuLircLCoKV8mbCI9Oj01HFykAIauskyanong8WDRchqiHzPS7wUvYmPYTmHKrr4b2IYKqP+ZSXe5xi5eD+V6S2Q/bC2LSe/bMn43Q+oBWqKidOaTre/hJl1R22sSbcDCqJH0BMz12jKJfnO7wIz9MPs8Jc4TtZKRyaZCdstMO9QmRl9LL1JL244nVsSV3rhy5F2ZKVgb424HRKMQ== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6769e76a-276f-4031-a952-08da0c470476 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:38.5005 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: mxM3/j36TDzCshx3aXTMx+FL3EZQsAi6qsJPpWrb10rKH5xyQxw+q9EZb32+DAKeultr4GfjTLtmLdsMMCJ3DQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB4591 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This implements puts for sandbox. It is fairly straightforward, except that we break out the shared color printing functionality into its own function. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- (no changes since v2) Changes in v2: - New drivers/serial/Kconfig | 1 + drivers/serial/sandbox.c | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 1a109b2411..86c4c6d5a0 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig @@ -775,6 +775,7 @@ config S5P_SERIAL config SANDBOX_SERIAL bool "Sandbox UART support" depends on SANDBOX + imply SERIAL_PUTS help Select this to enable a seral UART for sandbox. This is required to operate correctly, otherwise you will see no serial output from diff --git a/drivers/serial/sandbox.c b/drivers/serial/sandbox.c index 0b1756f5c0..50cf2c74a7 100644 --- a/drivers/serial/sandbox.c +++ b/drivers/serial/sandbox.c @@ -67,7 +67,7 @@ static int sandbox_serial_remove(struct udevice *dev) return 0; } -static int sandbox_serial_putc(struct udevice *dev, const char ch) +static void sandbox_print_color(struct udevice *dev) { struct sandbox_serial_priv *priv = dev_get_priv(dev); struct sandbox_serial_plat *plat = dev_get_plat(dev); @@ -78,7 +78,13 @@ static int sandbox_serial_putc(struct udevice *dev, const char ch) priv->start_of_line = false; output_ansi_colour(plat->colour); } +} +static int sandbox_serial_putc(struct udevice *dev, const char ch) +{ + struct sandbox_serial_priv *priv = dev_get_priv(dev); + + sandbox_print_color(dev); os_write(1, &ch, 1); if (ch == '\n') priv->start_of_line = true; @@ -86,6 +92,18 @@ static int sandbox_serial_putc(struct udevice *dev, const char ch) return 0; } +static ssize_t sandbox_serial_puts(struct udevice *dev, const char *s, + size_t len) +{ + struct sandbox_serial_priv *priv = dev_get_priv(dev); + + sandbox_print_color(dev); + if (s[len - 1] == '\n') + priv->start_of_line = true; + + return os_write(1, s, len); +} + static int sandbox_serial_pending(struct udevice *dev, bool input) { struct sandbox_serial_priv *priv = dev_get_priv(dev); @@ -212,6 +230,7 @@ static int sandbox_serial_of_to_plat(struct udevice *dev) static const struct dm_serial_ops sandbox_serial_ops = { .putc = sandbox_serial_putc, + .puts = sandbox_serial_puts, .pending = sandbox_serial_pending, .getc = sandbox_serial_getc, .getconfig = sandbox_serial_getconfig, From patchwork Tue Mar 22 21:19:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608370 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=F6eFqx8J; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNPWN23Gsz9s1l for ; Wed, 23 Mar 2022 08:19:28 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 4B39183BAF; Tue, 22 Mar 2022 22:19:25 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="F6eFqx8J"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 56FCB83BB6; Tue, 22 Mar 2022 22:19:23 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on0610.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0e::610]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 9853783BA3 for ; Tue, 22 Mar 2022 22:19:19 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B8eLbYXG6K4EJXI/ro1F8qZpJciipNPC2eo/D8FD+cNXoOZm5Ik5lEMQiZwVXI58PajmEvPf8NAY5uzOQ+PIaZrrauLpgNUP5PRxdozgVuhz4vfqBfNI+fjz+5SiOrJ50dC734wssbF8mRfUL/ehbfh6A7YpmzsXiBpQ5DEnQJKt65LMRBh4eMyhWIAEEtyrdvOCu0Kterg95qb9VH2ydoIR2PV4YaiVhzNV0Ogq6EGj6xh6H+8Yq86uxyfEg8pJ4XGEWHYAFnPjnhYZJHsNRyAu86nRczc6iyYMH1Jx2PjqnK5aynKMdJmN64bjNofbpqU/RnZUCtrrXQpEerDT9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GVV6+p0MmyVplibB125VeQu29QrE9xkaPzSny3d19DM=; b=Ou8PvP30lASK/juyanD30ulWvTXbjEtYG1oaNaU5zVvkhmd9hXjbVD2ZCjon+5CXd3c9PRBhvVgp5CnEVEUWLXWJvL2hUPUypJT6FfEsH6okQO23jFcChnWIOdI8jawNO5fOfwRh1SOhvsDZ6QtKeq2KPqqyaFQskVIIBr8SVBhrud0xoVZmlECmqYUpNe+0DX0t6g2K/3DUegrz2xYhZW0MVybNWieRjtIDQHt53VRvhsl07pDuFLYk+dnAQtY9DtTElb1VQZJaL9+ojlyIPJC+OVgmUMhTFc8IBpCKzMUORf4rxsow0R3cEpc9fHeA7qh0KMGgZZbIn0NU5GrDMA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GVV6+p0MmyVplibB125VeQu29QrE9xkaPzSny3d19DM=; b=F6eFqx8JrSCJjFT6Ugzd+LQ9fpdPVkwtOKxyCXOfSiM0TjGfkAVWKTPSDTJnmnCUUNPx4rg/6yt+ZSxmrbuQ3voI/rr7dB4HXIxFnCyTXeYaPrgDjtUN1+d2VcpW+aHwDOJyCj0wtYEfpWKbc+DtLyGZb11OXKP4/z2dtUShfD7PtTnNdt9nLFKp+0MKwjJmKHWkuu1jp7vVfyxIm7IKXfhPjdX1E+cya3K0xiRhpK+kJl70/dsPblx3JKyPV6cCBR/gxH/s4EVQfivUBlDiDbyp7AIB9L5mID5VPNDYX1bfbBH8d9+1V85oqTGh7NULWYRc3Uc5zORW8rQDfrxw1Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM6PR03MB3736.eurprd03.prod.outlook.com (2603:10a6:209:2d::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.22; Tue, 22 Mar 2022 21:19:18 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:19:18 +0000 From: Sean Anderson To: u-boot@lists.denx.de Cc: Sean Anderson Subject: [RESEND PATCH v3 28/29] test: serial: Add test for putc/puts Date: Tue, 22 Mar 2022 17:19:07 -0400 Message-Id: <20220322211907.1724323-1-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR05CA0060.namprd05.prod.outlook.com (2603:10b6:208:236::29) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 50803f1d-2bfa-42fb-ace8-08da0c49a004 X-MS-TrafficTypeDiagnostic: AM6PR03MB3736:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iZY7Hq91+Mdl+t48tfqNPscib5ClH3m0p676RlS7h8fvCns0x1aTyGunq8ylGYI64HEaTdtVqvlWQ4HndLISYaJdgd5SW8oUU70/FWCaS/jrFj0IxQaFE8Fl4V4nJhJA9inQPw3eX5KoXpxsgRrh4DDRIEPRrS2jpqrTP7Y3DhcpFy4r/sYU8242+gY1in0YYTeUTbRQJSiv93CQpuoXWQQt0wDEbl6fE32wyISSZa++mhBzn88mku1o9uf/5k5arZfbNa4GScMJiLOwGIrpmLGTESc1Em/qUXnQmJJNNXQA32T6KCKdG+XK6vG+jKPCL9krhWXLS7iBpatwF0K+GxKK5sTz68WroawIGiTFyoUTsXGwuQOH5nsyqXteFUOEQKFUnZlWz3vnEMsY/Rrz1f2CJm6UGHF63C3uBRzgG4AfU2+PqlIfKu3CCiKoiowX2KLb+BWMKV6iDagLFa4fUvBvIgjdi1mNCgambTBT9FamwRHIw6BevIcAXEJjvtM5/x5P0c06gE0k/zb5hRDp+pFaPuXW6Lpy/vDVFCR8OvScPYGlnhUerrcYzbc5J88AKLHEyU3gpJ12rV66Pxv+hQvPjjZaYJ4WRl9pJMzDjy82V54UdnFh9VFXdYm0FzsQrJ+YRxLZNpxRFlwjyMl9ZpsF/1FpSXW3wfq6GKx6R902yRdIK5swGHvoxGUo6smT1wtLSqb2Xm7UH/aj7+HUHQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(66946007)(316002)(86362001)(6916009)(5660300002)(83380400001)(66556008)(38350700002)(38100700002)(66476007)(186003)(26005)(8676002)(4326008)(1076003)(107886003)(2616005)(6666004)(6486002)(6506007)(6512007)(52116002)(2906002)(36756003)(8936002)(44832011)(508600001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1n8Q/q2gcObXzkvj+Q/yfJO/Y6pepiJVsdm3Wcr7AYAN6f553l4k2+6wPimJhlWsKjFZMrpeCKFOueOvIaoldULwbmp6WX4UXub8qwN+R6/gQfutqpcNuzmSpo07COBj0MHwXrZ1gzSvDOPQDb3KjhquRBdISHXhgbIHPzIFurzIy6Jw+FKthv8d0xRaPqbpG2fLymAcxs5MavJqPvd0wYxtyaRSRfFUoUHa+U65KZrqSdqvc06PBr6nOQF90GzkGD+KNOUb9j3o7wwjApB0f27hDqz9JXB268tA5VxL8xYOojxx4Sqr4tU/X+JhxcjbmZUQUZB7WGOSoA1O5d7McIunFwiUZ9yQj+VB/G+R69ecm4j/jA/Ufcd9EIdttA8l54lQgUFYG+XBqq4hpDBanntkNLywyX8xOzIeAHv0royYo8hbcDaWwPfjB6liLpyp8cSiA2Oy4ZZfLz+VamzM7+93UPh4KAh99Dg6oLMmf8gRPDN93XLABnezwDxPgyukXKkwsMMDtQVoTfqGrhF0Dwxd1ReLTPqdcP/OboZQCOuMFkNf4LAvBpYkv76KY1PWE0Si8sL0GaEEyW8dMnJFpnxQkaqbztnpjzedj6l3j5LCDsZINnq3MIWpxj7TuzSumKlY4TAtzyt7OOhH2LphXsY71ykDYgkVpVr8j9NgSHGfw3v2SgIkTvhA83f71MxzIu9Vi83wKxWTQgTSD3ufQqWm1USViguo9dTl2LSg5pzrQc/2ppwHf/vmLuDaBSJT+ahiScQMkJnnbQVQZapSeptwK3q0wYI8X50ysVA0Lf4EspYJdC3TvAFfNdUF+fNZlQU29dq3OV1RJkIwWSMjNDqIQkPeYzCFZ1qox87iHzHodVQK7rcavrYNaflIvHnTLOJXjjRrOF4+o6XiBJFnjAspRMuIEnXHv74ldMnLifO2IRr1cdKcbd9te4nURJunkTdIdtIkX46DjFW2yIKf1m8E6ma9IbCCl+YEYj+egWW4G9BWIqj+knqRadXkUPNuxZOd8OOGzWl8Yj3a/dDXR5qUfJQcvZ9TYbk9TTsa49wjTq/GDsFEAkV7BAIoN0KG0ZSUSegx36cBKIZOOjIr0MLaqAnZlmm3ZVPL2d74exdCm506wqOZE7AGjWwZv8TOEb/tc39ifD/gkP9BGV6XfSG8p1GNK3p1vHViYJMr0bRP87sEoe/v8d0l1Dpd7IJAGn6y4u+SgbILUeWyO/jK6VgOF6qtlQrMf2fU+ZJIxsqnFRXUWAbyrDo5unuXYdJ64nCHCipkCNv3ww2JU8xPFq3cVX3NIhoNKsXbepE07r184CcY82In/R1IATCtx9VaXmJe7sxJnotjGCelKeyVCrEazYFuASFPSwhtR/d/ITGADiubf3fI2e9pSAi4X427w/+XetlK+q65eiBlXBItDeZQxPKFghIUVcCrf4UmDDT/w0Gn4uoHQbZR3tL8rJ8WBSQ/eRNziMtNBCR6QFuWWQ== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 50803f1d-2bfa-42fb-ace8-08da0c49a004 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:19:18.4090 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: WAYWmrTOKFjWGF3L9aDkR+wIlMJiXRxSIqPi/QArrSS8jjyOet2dIuBgbW776Unb2eEHXN1Es6UbAO1CqjgpPA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR03MB3736 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This adds a test to ensure that puts is equivalent to putc called in a loop. We don't verify the contents of the message to avoid having to record console output a second time (though that could be added in the future). The globals are initialized to non-zero values to avoid a warning; in particular, the character count is off-by-one (but we always make relative measurements). Signed-off-by: Sean Anderson --- Changes in v3: - New arch/sandbox/include/asm/serial.h | 6 ++++++ drivers/serial/sandbox.c | 23 +++++++++++++++++++---- test/dm/serial.c | 19 +++++++++++++++++++ 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/arch/sandbox/include/asm/serial.h b/arch/sandbox/include/asm/serial.h index bc82aebd0e..7bce240268 100644 --- a/arch/sandbox/include/asm/serial.h +++ b/arch/sandbox/include/asm/serial.h @@ -16,6 +16,12 @@ struct sandbox_serial_plat { int colour; /* Text colour to use for output, -1 for none */ }; +/* Total number of characters written; for use by tests */ +extern size_t sandbox_serial_written; + +/* Disable serial device output; for use by tests */ +extern bool sandbox_serial_enabled; + /** * struct sandbox_serial_priv - Private data for this driver * diff --git a/drivers/serial/sandbox.c b/drivers/serial/sandbox.c index 50cf2c74a7..6d42d87229 100644 --- a/drivers/serial/sandbox.c +++ b/drivers/serial/sandbox.c @@ -23,6 +23,9 @@ DECLARE_GLOBAL_DATA_PTR; +size_t sandbox_serial_written = 1; +bool sandbox_serial_enabled = true; + /** * output_ansi_colour() - Output an ANSI colour code * @@ -84,11 +87,14 @@ static int sandbox_serial_putc(struct udevice *dev, const char ch) { struct sandbox_serial_priv *priv = dev_get_priv(dev); - sandbox_print_color(dev); - os_write(1, &ch, 1); if (ch == '\n') priv->start_of_line = true; + if (sandbox_serial_enabled) { + sandbox_print_color(dev); + os_write(1, &ch, 1); + } + sandbox_serial_written += 1; return 0; } @@ -96,12 +102,21 @@ static ssize_t sandbox_serial_puts(struct udevice *dev, const char *s, size_t len) { struct sandbox_serial_priv *priv = dev_get_priv(dev); + ssize_t ret; - sandbox_print_color(dev); if (s[len - 1] == '\n') priv->start_of_line = true; - return os_write(1, s, len); + if (sandbox_serial_enabled) { + sandbox_print_color(dev); + ret = os_write(1, s, len); + if (ret < 0) + return ret; + } else { + ret = len; + } + sandbox_serial_written += ret; + return ret; } static int sandbox_serial_pending(struct udevice *dev, bool input) diff --git a/test/dm/serial.c b/test/dm/serial.c index 0662b5f09b..a0f360ba43 100644 --- a/test/dm/serial.c +++ b/test/dm/serial.c @@ -7,14 +7,22 @@ #include #include #include +#include #include #include #include +static const char test_message[] = + "This is a test message\n" + "consisting of multiple lines\n"; + static int dm_test_serial(struct unit_test_state *uts) { + int i; struct serial_device_info info_serial = {0}; struct udevice *dev_serial; + size_t start, putc_written; + uint value_serial; ut_assertok(uclass_get_device_by_name(UCLASS_SERIAL, "serial", @@ -66,6 +74,17 @@ static int dm_test_serial(struct unit_test_state *uts) SERIAL_8_BITS, SERIAL_TWO_STOP))); + /* Verify that putc and puts print the same number of characters */ + sandbox_serial_enabled = false; + start = sandbox_serial_written; + for (i = 0; i < sizeof(test_message) - 1; i++) + serial_putc(test_message[i]); + putc_written = sandbox_serial_written; + serial_puts(test_message); + sandbox_serial_enabled = true; + ut_asserteq(putc_written - start, + sandbox_serial_written - putc_written); + return 0; } From patchwork Tue Mar 22 20:59:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608361 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=kd7QueQe; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNP9m244nz9s1l for ; Wed, 23 Mar 2022 08:04:12 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id A05E283F57; Tue, 22 Mar 2022 22:02:42 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="kd7QueQe"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id B68E283CAF; Tue, 22 Mar 2022 22:01:20 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-am5eur02on062e.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe07::62e]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id C9B3C83B57 for ; Tue, 22 Mar 2022 22:00:41 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TM6QhniRfTMc/fBZcdgy8PHTJC3cRVywiq+fiWikpsZs7OOI4U2Zx/KqZuiu+t4yQBYrAsVuJ2n78l4Qq0KmEqLESGNd6g7LHMFQnqhaj0O/iNcMgSCFAaiecl1D59A6KlzGn0ZvsdYkll7mBjnZrbCbKspjSxVO7mSoEyg3XdaYuqYN/16vwXkekwBE/XXK6kt5LRIvjXQ+uRFhZuyiHzhesVac5qTekCheKcuFWNC26NTeeoW46L86lZ1SCvpJEVJ8SnP2vAmPR5OwoajlNoimZ8elc3nrI3NYf4zIq2D3tG+wgOYJ7/xdMzQIEOjrEnhXLvJ2bYMp5dMiTy9X0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+M5ZX4JEJpIz9N92UrwdQD8wztujLAbbFDfmwEOmp6c=; b=H/6JUIk1V3Iql3Ttrpaz2pdwxuslD1hMcmRUkKzrR6V5MyDc73w7xkseYfjpq8OZUcF0+E20AdTJEF/XWr2SfRIOZ0auWtTA7zw9z6QQRykJE2aP6FWdOO5KWxyAHlIiykESSVx7xAytX0g0Bhib1/cW8I9Z5KGbxCS4PQooqYF2uzNN0xgQPbQ9Ag9sOlmS1MvBBMZyrdiTZXT/BqYR5kBj+UIJZMkTy1x8po/N/Q8Bo/k45DxZo2pjkCuSun1U6n3FO5hZwkdZTFH3KkXAupI3GbLGxKbOzY0io9LltYYB9OGcBZBdxHZIr1BTy1cenxGAf89DgsGsHlE2kkqFLw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+M5ZX4JEJpIz9N92UrwdQD8wztujLAbbFDfmwEOmp6c=; b=kd7QueQeR79TOd/5eD0M78AE0GmljMkEoLpfOuJdOhYe2rv0VJzee8U2HukXlvSSO3Y4tYgIB0A8zXKag8i2Bjx+L+RqqfFnhlPSTXS2yPg30sDuPfp5xbaxU3IZqjyTelgrywKWw+gyRR50mJSZrltCPbzgtz9AcnlxKyxKmVlMamvBoWZAQhVbPZtPhLhvp6T06B7VmfNuEi6r/nNS7Bypc8Xr/0c0Os5zfnaen/AS/dNabtIWpP3ULnxCuTeGyn011qLWabxVSELmZIgud8geaBdQnBv6/o5h85H+5NY9DP6wHaJzfe3YYQJ1oGbeYvVZ8WLOKdjJ5Kvcu8/bTA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by VI1PR03MB4591.eurprd03.prod.outlook.com (2603:10a6:803:5f::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.23; Tue, 22 Mar 2022 21:00:40 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:00:40 +0000 From: Sean Anderson To: Tom Rini Cc: Linus Walleij , Liviu Dudau , Andre Przywara , Simon Glass , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH v3 29/29] serial: smh: Implement puts for DM Date: Tue, 22 Mar 2022 16:59:37 -0400 Message-Id: <20220322205938.1721846-30-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0012.namprd20.prod.outlook.com (2603:10b6:208:e8::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8ff7f77c-7501-4a6c-2f5b-08da0c4705e8 X-MS-TrafficTypeDiagnostic: VI1PR03MB4591:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kUdKnRpqKMqrKjTTv8NTMTaf1W7v1bATuOYfUPgGEC5QBhsoXfEK1rsLmNF4If+KuE7AZCVyaz+n/iI9Rxg5Yk/QlW75ZnnQv+nCs6zjKmM5ezaO8pV9Rzv1nyNb0lTmz6c6pNDp6AWeRjfe+byYKBz4bir0FEi3pXGxTIl5ovGzVotDC95dV8BlbQvAX9xIAeBGDraCEf+PCLD8QbUWr2aHmVUvSZ09h1ile/lXiHYmdhvRVkeqfG5GUeeAr5iRgKOSXViZbWJBTl7mF9qndoCUWiruRVVOCP+hVxrLXKq4hjTngmLDfargMnOCx+wpFr6s70rES0Viyv8Aixirv17UXSk1QYOtgN3Xa3XxXxC6EGMAGjf3G+UIn656NMc6BCNM2XUmrGOT1TywnGMk+KG20g0yUidragU59cm0hMZmLyewZBYVmXiuUh/ZEgirSWGhnTjn48rdBeP4Kn/L2U90xQ/kOC+9RvBLTZmRtxse9lpEnzV/dQK+nSWgCau/Uiywvwn5stHYWzPRji4ajnQABCKAPeqgcJ4616aNNAWk4dZPl3QxlmvwbQmk95GbuY6pPJIMiJHZVOv8gmGmO0itWPquuMcMAqKSDss2ObQdEcNhEq0OF6x6qQ5xGJ/qEetZt+MW2xCZK/6gtaAKkqgRCgQ+IUFOn9TY8tHZwfbSQXEvT+DqAULBlg/6NCB2nDgdhFhxBJ4PiGE3EZnj8w== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(83380400001)(6486002)(186003)(26005)(107886003)(38100700002)(38350700002)(2616005)(1076003)(6506007)(6512007)(6916009)(36756003)(52116002)(54906003)(316002)(4326008)(5660300002)(8676002)(66556008)(66476007)(508600001)(86362001)(66946007)(8936002)(6666004)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: CdT5q7BqxPF7Zq+CUWdnEASlM82fy/pSv7Nfc3LUBx0Dlb4XzDlfmC0YII8AqOYkc4rCapft+TG9f7HYDuYuArJRiIlmXsvJlFGCS0dSJuqDL/woM4DhBozjMawKlFVIL5XCB/Gm6nORBdmv1pRbBeUfi+gVrpM3Cc4QJ4N/tmaVNfzOuYLV316zzLEhbpfpmztopbIR5VVUTbcV+dlN29pMwnz5j4mYNmU/W7nBIpurvz3XEzbyaybbeklDAUwKEfgDUQEJOvA9KQj7/KnLAEkiQuMToTgPfOXQRgYzpQ6yS+UGav5s38Nw49NZuh3U4XpPlpFfdyQSyMl1XvF1Sp8cCaYbh8Bo4zSK8EsFW09Q4EOZsUq5bpty8KDVrvKpYA73NcBIFfXMLgfrtKm4ikpVTziAEbDW4U4UiTc5kr4rMTScD+vvQC95y3TH24hK3UI7bGLBFu5GHTqYEatmoSEG3gDE6Z1DP6G2Rf8jr2gdJt9aVMmg+3DNES53OowNxshRdZj5a7s8cgFiNCpnTrZ42yS5QEVsEIhEpdqxT4mcXtPIbhRD8r+vObajW8zWkh91Dgj80Vtqj+mFeCvBYoG/9WE+vUSkRwoq+CBP212eA+doVAf4KWbaXx9uAcNykIy+Bs9ROAcr4P2Z5Uc+bG3kVLWeAxljOk9Qt58cOJ3VUHfVzagiJe+vLJU8mhP5ljTJlAjrqxHKiJvTW4ePwiF0fgxOKDsPbj/cNAAtMDJAAtHhY7Sy5ICOP5Q/AxxA1xOv1hmgrzk1RLjdB1B9EE0dtATwESOX6gudpUhFSE85tiwbabG5lAai40QCA3xP9y5BNo2jTx6BV2nO1GXdRyOhzJH42/+g66VTbdHA7ccyu6Z6YFaaknPFdNNY1+dhExAwEWKpr9DHZ3pv76gscF1ipVlUyrzKjcPe4b97/SPH2X9+4c478vYbCjkF92/zXc0yOVde/RSGlgNk1SE8VxrjwTktgMblVcUvpk2FeM77pV2x7zex8Wgm+OSHjsjJqwv2d3p57iLjVvrWJ8/B/gfw8Ix6rMY0i7xazNyZbLWnEcrTrbAWm4C1uiGGTAe4yNx/xvj3R/Vchv1vaFXhke7/tdAFOjEovTqJLts7gf1OF/hvHDv0YKGrwRqBDjkeZoRYgfaRNY0iwqIBrXLm7WaJCzMIEVY6lHY7+qaUHvRXQmusJjYDNx9dcruc5fClYKZ9vkw+aLamG1RQIeo4uT1c+UB6Ke/x+zS1zMZedcyZNy+/UMvvBt/eJhBZLWosgPoTPex//yaupQtPeW33y3ZZcb5LM8UOQOjxoecGifLkOubEtvIN+STZm70DwxTyEmjJf4KMhz84VinyS/JCYm0JN7fdjgnEj1XUyVAm1Twn35gD3Umag9Jjvrm3cuu8AhBbIVpcel1MPWO7Tyzk+LjMsfCNBcYijCp5scp/FG4sy8SvCkazgiA0OWKxFw7PwMjJFHh0BAsiPNKKWdrRuA== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8ff7f77c-7501-4a6c-2f5b-08da0c4705e8 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:00:40.8597 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: TjsASocgB0WOhe+vLioMiX+h9F/QDJTakraBs+8NFR9MkaQr4WajNc/7RjUU+bJ9uxUPSpXVxBifYBMiSLw0sA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB4591 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean This adds an implementation of puts for DM. The implementation is not as clean as for the non-DM puts because we have to handle non-nul-terminated string. We also handle short writes (though these are probably very unusual). Signed-off-by: Sean Anderson --- (no changes since v2) Changes in v2: - New drivers/serial/Kconfig | 1 + drivers/serial/serial_semihosting.c | 31 +++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 86c4c6d5a0..2fa3006c5d 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig @@ -804,6 +804,7 @@ config SCIF_CONSOLE config SEMIHOSTING_SERIAL bool "Semihosting UART support" depends on SEMIHOSTING && !SERIAL_RX_BUFFER + imply SERIAL_PUTS help Select this to enable a serial UART using semihosting. Special halt instructions will be issued which an external debugger (such as a diff --git a/drivers/serial/serial_semihosting.c b/drivers/serial/serial_semihosting.c index 62b1b2241b..4328b3dac5 100644 --- a/drivers/serial/serial_semihosting.c +++ b/drivers/serial/serial_semihosting.c @@ -5,12 +5,14 @@ #include #include +#include #include #include /** * struct smh_serial_priv - Semihosting serial private data * @infd: stdin file descriptor (or error) + * @outfd: stdout file descriptor (or error) */ struct smh_serial_priv { int infd; @@ -36,8 +38,36 @@ static int smh_serial_putc(struct udevice *dev, const char ch) return 0; } +static ssize_t smh_serial_puts(struct udevice *dev, const char *s, size_t len) +{ + int ret; + struct smh_serial_priv *priv = dev_get_priv(dev); + unsigned long written; + + if (priv->outfd < 0) { + char *buf; + + /* Try and avoid a copy if we can */ + if (!s[len + 1]) { + smh_puts(s); + return len; + } + + buf = strndup(s, len); + smh_puts(buf); + free(buf); + return len; + } + + ret = smh_write(priv->outfd, s, len, &written); + if (written) + return written; + return ret; +} + static const struct dm_serial_ops smh_serial_ops = { .putc = smh_serial_putc, + .puts = smh_serial_puts, .getc = smh_serial_getc, }; @@ -53,6 +83,7 @@ static int smh_serial_probe(struct udevice *dev) struct smh_serial_priv *priv = dev_get_priv(dev); priv->infd = smh_open(":tt", MODE_READ); + priv->outfd = smh_open(":tt", MODE_WRITE); return 0; }