From patchwork Sat Jul 11 22:05:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1327427 X-Patchwork-Delegate: xypron.glpk@gmx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=UeyLXkc1; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B43vQ4TYPz9s1x for ; Sun, 12 Jul 2020 08:08:18 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 1FFB282201; Sun, 12 Jul 2020 00:07:10 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="UeyLXkc1"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 3EAD581F62; Sun, 12 Jul 2020 00:06:28 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FROM,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 1B6F882173 for ; Sun, 12 Jul 2020 00:06:08 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=xypron.glpk@gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1594505167; bh=6exvAjW2rqO8kcTtlMfZ4UrxkdljQACnFiGmgCfNTd8=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=UeyLXkc19oslPUrLVnX5vuZL6weiSXFHm6ELOrAnktJpnFH5Iw9yI15G71L+bE14O 2slfTqXaP6oCYNnOLkv2qfHZ5L/1JH79wT9poB0wJBGk06jyo778DkZpD5nB6ujyzl LvGUZTh4jpgL3nPEUl6cgvV8+NQbIODKt1V2anaM= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from LT02.fritz.box ([88.152.145.75]) by mail.gmx.com (mrgmx005 [212.227.17.184]) with ESMTPSA (Nemesis) id 1MTzf6-1kKGDc41hK-00R3HX; Sun, 12 Jul 2020 00:06:07 +0200 From: Heinrich Schuchardt To: Alexander Graf Cc: Ilias Apalodimas , u-boot@lists.denx.de, AKASHI Takahiro , Heinrich Schuchardt Subject: [PATCH v4 13/17] efi_loader: new function efi_memcpy_runtime() Date: Sun, 12 Jul 2020 00:05:40 +0200 Message-Id: <20200711220544.120976-14-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200711220544.120976-1-xypron.glpk@gmx.de> References: <20200711220544.120976-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:C4BYUiF4RLzhld70dL6iRUtfBgskHLsba1Li7szw+UlCIkVYjL1 4v7PFF+f5Fu8Zkhk/x1YiPljMBiWrWLRBmcXvdtTTQEKDbYQCRf5WO1h9wskKbjKBg39N+m uRnfpXCAyImkpKR9nsDAPRoUTuVpLz1ENsyknHrfXqw+zNJMBwoIuHAMvzo9NvIvvQPnVj5 FbruWP3RuBjDrZhUGM0oQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:nROBQloQobQ=:Dl8/fWN4F2eY6PzkP/2jkx X1g3zePlfl5pTmN+KMnWpDnGYfwOC6jEFtS7xxFtUe/zCiDvxHozOIW2NCCrPRJ/9IrckAbwy d1SYRHhn1J6WRU/FG0DQSHCXQ4krQiGjxVkYV+jkJkyU1dSOpf65d9FblNSKlLxfV6OSiaMmj 9Uq24I7NufGVKBm2iz9+xTrmQxz+6BgyOcoN7Qvfoe+AVhkwYEuJyuaaUSOJJAMBOPZWzK9W8 JlTLsIVi4yC8srEm9AJ1NJED9dm7O2WoyS4nA6oEmn7yOFwD723p9mCIPRuP84+NjAJk6TwKq X5aeMeX5R//Bq6asRlmQ6LJbGfwL8DuzR448a5judN+kvJvzsG0TB71YBqkBqVNJtFust73bY TuNiJ22RegIae+R4eQRCzX891YshlEzUzgrt9Zyc9sm4/QhBtLfed/A91P8dNx3DGZZRtbNEr BAgMsES6hpnTLhyo9nN2vdeOOGKcp6KgVByhfDcnX5pnDIibdHUFN7PmtOWTu9AMJJ2nb9caO uONwwWRSf3cUb3jPsBeVDYRapiO5azhFFS0KcS07lr91ndJMRkLz0dnaQ/FZFRCFiS2QIQEDH 1TEDGLDD9RTDEQLkG4yhqwme5qwcSOjRjjJgWOwcDHGpf3HL2t+DvHP2VdRenl02Qoxvn6Tts 4w1n9hJFW3JLe2YwsBmGTqnAlTOQpwg5Nz2x6X1MQo52OxCQbHthhhXjuv9pGux9hKvIbO4TK ki3rp1BZ1dT/MjGd6F9upWIcIXvwKka80eeh2HcgY76JXPb/1p9UV+fE9ajn5m7+5EEJ7n8go EUsvDtWLjs1uSMTRVR/0CCRA6uUw/JnRY4Nlk341hLrax+z0UnUGz7ggntiwBPc0rvObmw1Rm WSB4GEEsx+tOmYXbWxZXzfPXNiTzRxZOE1asTLNatxYP/Ll9BhQz7YxKEWgeOa8ZVweCqxOwA 4Mua4lJgVVLQ73NuysUlZHI4zAwlqqrUMqYZSpv2WCIzYcKunbccH46NTBmoJTlfJrNQi+rbZ OCn60mpyB43HRqWLmtgbye0Z3rAfoituCPnY3wSc8mVT1SvUM6CJXvTyuz5DLSqXriiR9NQRD nLu7+4cb7No68hlZNlJYMxwsARtOdq3sDoU08wSu/Ulb5mdAykk/CbKgp1xDuTjCZbABtoEvy 6JPCU2e4uFwQislEjS0pELD3hEunPGlkrT0KSif0OYfcT5KCGy/OZbTIlPR3VU/NTaqFP92GI eNxqc6pmtuRbzjjvhI2Ftu2yPCDpNPZKgahfE/Q== X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean Provide a memcpy() function that we can use at UEFI runtime. Signed-off-by: Heinrich Schuchardt --- include/efi_loader.h | 3 +++ lib/efi_loader/efi_runtime.c | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) -- 2.27.0 diff --git a/include/efi_loader.h b/include/efi_loader.h index be6cede92f..98944640be 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h @@ -792,6 +792,9 @@ bool efi_secure_boot_enabled(void); bool efi_image_parse(void *efi, size_t len, struct efi_image_regions **regp, WIN_CERTIFICATE **auth, size_t *auth_len); +/* runtime implementation of memcpy() */ +void efi_memcpy_runtime(void *dest, const void *src, size_t n); + #else /* CONFIG_IS_ENABLED(EFI_LOADER) */ /* Without CONFIG_EFI_LOADER we don't have a runtime section, stub it out */ diff --git a/lib/efi_loader/efi_runtime.c b/lib/efi_loader/efi_runtime.c index a4aa1d8b6c..5b6506fbdc 100644 --- a/lib/efi_loader/efi_runtime.c +++ b/lib/efi_loader/efi_runtime.c @@ -137,6 +137,25 @@ efi_status_t efi_init_runtime_supported(void) return ret; } +/** + * efi_memcpy_runtime() - copy memory area + * + * At runtime memcpy() is not available. + * + * @dest: destination buffer + * @src: source buffer + * @n: number of bytes to copy + * Return: pointer to destination buffer + */ +void __efi_runtime efi_memcpy_runtime(void *dest, const void *src, size_t n) +{ + u8 *d = dest; + const u8 *s = src; + + for (; n; --n) + *d++ = *s++; +} + /** * efi_update_table_header_crc32() - Update crc32 in table header *