From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C572EC433F5 for ; Thu, 3 Mar 2022 20:45:52 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 87D7783C88; Thu, 3 Mar 2022 21:44: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="VT62NAtD"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id E314083C70; Thu, 3 Mar 2022 21:44:35 +0100 (CET) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02on0604.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe06::604]) (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 B202483CAE for ; Thu, 3 Mar 2022 21:44: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=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gjiaXPCr3K+Aq0dX8QHgdbX5a/qDX3fpSrqIENghaP73e4wXOdYAdhFBwiy1XKA1GUCAGHXV1g6aG0TerAGz+nngo+dq2gr+HWZI3l+X8cKzYQxHqob1JPOv0Gkk61uFvtENSAcP1+7aMvqLOMEzEKpJ2CxQDluNPlTLJnoCDzKKNO2fH9yTWqvCR+CFim53lR1t8GstH/l+9HEy3InQv3nN54RWmvLlWCDnfBQPu3QB+6MwsDAlT5iNgkeB+/CcquH2y3OWPOelaoFxi8QVB/freADHAbQDso0iwJLBKiAQoqjyrJ/uS0UxLOfDn/Y9/JtgL1B8Z2ZZB0HfsWbymQ== 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=bgLdaa5/Tdidz5BQhE9qnBkaChvxQHlHK2W36tiadHw=; b=YFQqp6sg8TNuNsdJofXMtqwFtWVgeE91eEHeqiTb8B+0X6f5jzMksNiPHsGaC5oa0wv0gH4jbyGtyuCPG+JJ9Gqi6tGN3F+QLi0lMHMkdzpwgZ9oVQoZrps94SyDoBmLAliKDDP7MAEESXQLfGePg1WIhx4qan6bHkO+OAIlyGCaFZTIMFV707uEWd9OSMVojae/0A+wYxp3HesxNS71hIN3ELqN3w4UDrgT2ZE/rYvxQIhPyHaKBP764uJp8BICmWoOf4ykaWvMX21pbAf/2VioSgLmRaNzzNlt4pTO86AIUpw+nPZq+ebQGqhExZkOGY9t/pth5b6Y77gRlpAUlA== 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=bgLdaa5/Tdidz5BQhE9qnBkaChvxQHlHK2W36tiadHw=; b=VT62NAtDHLQy+cYY/zflXs0oSoPLCSOpf27NdLMJbFQ95kHWzupV+dOI17QUnI4Hgk8VheIjWbojWwTb9HYQSSHz0TnyeziGpmZ0rW3Hz1SY615vgJ1MKET60yFFFqgLb/dENHALGuRvU7u3HMaTetiQNSh1KKGsoBTuYz7I8vkP381lhcQfFpg6QT6GLnRcYQYOaV0o8n6thjQXEfMtpu+Xd1EaYO5vdm9ymlIZ1pTTjUmpXKfEjxeHmP4rNIBv6gdnkfzUUhzKbjGxin4D5yIveUT1SDrJJs0y1QtB0CGUtGG6Hed3e/1B9LCbm27sk5c53V2RRR7M4L7c36F8qg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4523.eurprd03.prod.outlook.com (2603:10a6:10:19::27) by AM6PR03MB3573.eurprd03.prod.outlook.com (2603:10a6:209:2f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.26; Thu, 3 Mar 2022 20:44:25 +0000 Received: from DB7PR03MB4523.eurprd03.prod.outlook.com ([fe80::9130:93ae:6e27:e9a]) by DB7PR03MB4523.eurprd03.prod.outlook.com ([fe80::9130:93ae:6e27:e9a%4]) with mapi id 15.20.5038.014; Thu, 3 Mar 2022 20:44:25 +0000 From: Sean Anderson To: Simon Glass Cc: Linus Walleij , Tom Rini , u-boot@lists.denx.de, Sean Anderson Subject: [PATCH 06/17] arm: smh: Use numeric modes for smh_open Date: Thu, 3 Mar 2022 15:43:49 -0500 Message-Id: <20220303204400.2787389-7-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303204400.2787389-1-sean.anderson@seco.com> References: <20220303204400.2787389-1-sean.anderson@seco.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: MN2PR16CA0013.namprd16.prod.outlook.com (2603:10b6:208:134::26) To DB7PR03MB4523.eurprd03.prod.outlook.com (2603:10a6:10:19::27) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dc8b142a-9334-40b0-02d1-08d9fd569a78 X-MS-TrafficTypeDiagnostic: AM6PR03MB3573: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: 3sJBViHPo090QR5MqBYqctkqBBOGOGrJBXeX9doHAocVkt8sLVABvSy2R2bTtZnxE1pH4eg/hXsI8Xykmw45xNaKcAHyyIXI3/rVoHG9BgBoKjNggydcePMv4TKMcFq8UMLaMSVdBv+vBGPi6+E0LP1vvswZMN0p3HMJpCbDOvqFHwzDEJocqFoPMOxHzzB4bgvO4xyey31IWrL+Vg6k8UKxv9PKkSwjZUNPdi7cq/PYUcmHtjPH/pQ1C3Yn1ddZ/Ij5AwlnYSMhw6u/jYurZ9rn+ClPn6ZhNuN0WHSa1R2nt4d/vV8h8m+GXLxGDqHnXUi2D558Rx42Zb2QGcNXqN5inbm4dO4uZr9Z+TJUQvxzSQ438dbbNQ79uPtXlYwPXglWTW/CzIExETNZy35qn6qOxNl8S1e7frQzdw7f7QpD5+J2eIwB7tiot+tDKAX0REX1HcJ9yoxr21uFWYtho0Vv02SxqsRj4Z/QjrBYNtmIBzEY69b2ejKXpIZSyz0GffzSReTK3AzucHx5o+qSm2BHNKLi7y9NhDD4ISJC/ZouD8LTpQB5BLTrDT+66weHnyF9Rrb5oQT3x3Gy5JPx+bz6M1WDtbZbgquYkSGFs6YJLEjZ3yuPpWqRrHrpnuC62tjg/d8oRLTfAsxv9ozdeA8dx4jpiBymB/nOi/z3JaoAccfHvjOC7Srl1wq98tuqx71kZI7N5JVUKt2flkyukA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4523.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(6916009)(36756003)(54906003)(1076003)(2616005)(83380400001)(316002)(38100700002)(38350700002)(186003)(26005)(107886003)(4326008)(6506007)(6666004)(508600001)(6512007)(2906002)(52116002)(86362001)(5660300002)(6486002)(8676002)(44832011)(66476007)(66946007)(66556008)(8936002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?f+7t3xHllFStzfvIASMJ7B9A8o+KYB7/4yOnwqZGvvwYKmMqk3nD3zfqoiUY?= =?us-ascii?Q?dHPw3dXQVM9KAMBG1Ncqx/8u9zR/VW0r6NnfcSqxX4G1U8PUP9lGcYCiepry?= =?us-ascii?Q?BpDZVim5tXRvOVGIx9vDzJrMODiPhy1a8M2sGp6bs/bBl6Ciu0g8UPERKuoc?= =?us-ascii?Q?P0TokY4HB465KSTsPoPDyI/QyT7wrqhIi7VN8qlW0PuWjPRBo+qWFAfT8riZ?= =?us-ascii?Q?19QPkma6/e9/4HSdeQq8WQuepDjnnxbvtaHrlbgRVrvdnDGQUEM8i7U2/v8H?= =?us-ascii?Q?dncWtyKofXw/69clg7+uMPFq7il+vFRBQzQ/FJR2U2HYNQ3IDUeTQwIKTlyT?= =?us-ascii?Q?qoNsFQvQV8fxiEhyEgmTaDMrCBVu23wl7r4Ozgp1khopwdm9TXT5LNKWysyn?= =?us-ascii?Q?3Z+kOgbElGYcBxZ+CwA+H8wRUq6eg9HUmwsn5dkSJR/lTMzWpo3FlJx95fOx?= =?us-ascii?Q?ll68wV3bDvjcN1wTHHoniio/VkjuvWX/57N3Zw+oEMIvCSfQVMQ1SRmi5jOi?= =?us-ascii?Q?j+37o1r+4aLc5Lu/Zox50K3sdYKdqvoLB4vG4sjOyvvzy2lbPBG78/8zOkM9?= =?us-ascii?Q?kCAEpqG3iUfANBXRmVD6QdDLnSNIS+GRyL9KaUR0icD1g6lFXOoD12k1rDX8?= =?us-ascii?Q?pa6gdQzBbbs9rF8q6z2LwoxtICK5HXC85eIef4pno0XaoF3A/cLH8jQ+DyD0?= =?us-ascii?Q?2eA4S87NQqRgsiLJymNthNnl0UrlMrGYoG3022dxSdFh18wY8qAhU/rFoymN?= =?us-ascii?Q?raqZO2iGCn3AlTYg4qM3yQ8LYd3g5Vr2WW2emeu6lpBv0TntQCtU2na2zgWW?= =?us-ascii?Q?i2wF3UESCzE9/LRnWYVAlB/W9peTwNRUFBYF0dFSlgiO3aYUVwE+V/w/SK0d?= =?us-ascii?Q?Le/J96AWT6JjVYRDoB8QvsBnX6gsbQtEvZq/4Png52HMk+ARdra/wbhTr/A9?= =?us-ascii?Q?uO6brXAqKptJ9jmVpJDGBGbSQR7YqVGdcsi1cF13SoUYsovkV+Zvj0ry69yc?= =?us-ascii?Q?DuX5ZCCNLUgEc0EtNexwkh7YBLDdNY6EPxoh1hCwusbmGxU8a4ezlKpAQbSc?= =?us-ascii?Q?HEuxQgbW98yR3n3Icph4OHWKztB75whxQ6PnsVrn7Pwa9/LlutWKPDWq42Gv?= =?us-ascii?Q?mB4MhWi89iRogHC/vC8JeaxMzbf5epbDLB6Ib1ySG7VyNw1zMD9AbqocNlOZ?= =?us-ascii?Q?wyCoTWaO4l2Tn/cEV/2obRd88o2XwZd3OfoF+0DOeIBv1jRjIzyWf5GP2DR9?= =?us-ascii?Q?LRaupagPZHNJoep9WXclmSVwYp8BB2c4hgXorgEHzza88+DfgaBvrjumeOJn?= =?us-ascii?Q?sYELaflOqb1i8+JPkzwtd074D8IiJF8LmIERPwdbVQi8VjfJ8uJt9wf0EVEs?= =?us-ascii?Q?ttwSmXeYzasjPdLzUZyyeECGXQVtfx1uiT6XYY9mX/FpqrM85e6Co/8gid9r?= =?us-ascii?Q?RQriaCiD9CM6vLjT7p+asrGwYUN1a+pj89t+Pn/WwXAahEDAHpcWJ1JrPme6?= =?us-ascii?Q?nD8YGSMXuW/lb7ewDa64y0Pv4yyqk65PIHLcHdMvaVstZ3sG7h6BxE+TJ8Hi?= =?us-ascii?Q?ml+W6C78W/FKBW5xgjCigLCv3AxrUUEKuzm3K6oj+GIPj0b3mKL81q2anBn8?= =?us-ascii?Q?Wv0H0EE88Bn340XvGJxb7qM=3D?= X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: dc8b142a-9334-40b0-02d1-08d9fd569a78 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4523.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2022 20:44:25.1300 (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: OhTRG3NoHFMQ3qu2yWFcr6ygqskCFRPfzE124wFAYg4MGL4+a8kAmsnXxt6R11HkycwXhCnorjjxKlLDGf06Yw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR03MB3573 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 --- 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); -- 2.25.1