From patchwork Wed Dec 9 18:42:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1413607 X-Patchwork-Delegate: sjg@chromium.org 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=fail (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=PaZNHXaO; 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 4CrmC30K1vz9sWL for ; Thu, 10 Dec 2020 05:43:00 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id CDF5481F67; Wed, 9 Dec 2020 19:42:55 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (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="PaZNHXaO"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id CB8A9806C5; Wed, 9 Dec 2020 19:42: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.6 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2, SPF_HELO_NONE,T_FILL_THIS_FORM_SHORT autolearn=ham autolearn_force=no version=3.4.2 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 6A641806C5 for ; Wed, 9 Dec 2020 19:42:51 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (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=1607539370; bh=/KILqiFG5AkNeOmpc8+oZS6NmVTYSmmOm1NAJhjq/tQ=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date; b=PaZNHXaOv8YUcBmjW1wj9EeLyohxM7aWygEqi1tueAgOW/u8d+GMXOAbeLyd+QBqq 2xHeBtjPBypBOlAME9L5qFHMpzHpYbg6V00yp75NS/7LlcIjgEmuITU9DxOEbEBvpN NdYayNW6dStWQUhMwJ3ATmK1q6fYQbTvd45CEC34= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from mcbin.fritz.box ([62.143.246.89]) by mail.gmx.com (mrgmx005 [212.227.17.184]) with ESMTPSA (Nemesis) id 1MXp9i-1kdFji1kaK-00YAy7; Wed, 09 Dec 2020 19:42:50 +0100 From: Heinrich Schuchardt To: Simon Glass Cc: Mario Six , u-boot@lists.denx.de, Heinrich Schuchardt Subject: [PATCH 1/1] sandbox: implement invalidate_icache_all() Date: Wed, 9 Dec 2020 19:42:44 +0100 Message-Id: <20201209184244.33510-1-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 X-Provags-ID: V03:K1:ky78c7nEOMqzoBlpJZ7J4mJCmxd12do03wbpPf0X1vHQeAgQd2r /Drh7oay582ltL9O6snD6XwnsXUAVURmxZhwmPVNc+SNQSCAdH9wNxyw2YoajS/EZxq+EB5 ENLt+qPaJEbg6PkvTbQPsEP0PeAo4RE0FGUoJgxZhtq/iIWrwV+OA4MD01aLdWGj18CVNJw gwiEl5B/g3Q/tTaj37Dwg== X-UI-Out-Filterresults: notjunk:1;V03:K0:eWZmsmKDlFo=:NVBxFeJbrI/KHmMlo10zxN yFkhr6vvuU88nnq6fZsKsQWC/oyJgs/3dRfbtZhvI72MaK8+4rGiZH+cLKFx5zL9mLMjxVd7A BX43CkhydRyIxe1urczBzYTfudcWXoclUqREPKDZJEGue7ebZInG+zEJr4NecVKNjtLI9Ozzg m00nHgU8EgrivhQ3wDbgWJ4L1XqSAOJJxzV2tycYti2Tou+dE8HDh7iSy9xR3wPV8fU9JS27n F5cFT8MBDi2aw6rOs384XQ4qVum0NhSfsIwGcWKQw5c7Cvmtl2ddMlvsrmkVhcg3/vW1e8aiQ iJPawqDVIv4iWlxXbNquXbuRGC6rnuTXYYqqLIe281itLWaDfgBv0a9TnXS54w3T+j/WrxBOm jeDGQrOOrEIfgzYD3yVarXiO1EaO+Gi15la/YvmC0LDCQkAQskT3rdozgR6NV0UDALVlcXvsc k05Evg5ILvZBphBJl03ph951h9W9DpCxgJH/QG+orUhGYatf+TBbB7CnKf64Err5tln6Zf/sw Bh+i2IRYeJbN7TOQBnJ+HCCOvnM/qzkCiVRO24tirWpZuHhXGWtkpAbqj5OpX9O7yTFSDt2DQ 8EnWQESzvg/XYKtqKiKrG/8nYZD7RjzjdnUG4Vr3XEhlmXPm1ypgrRedEA2rldp/XQejaNQfg aEuzJ8wzE38QeOL9lTwuNxIj6qSytjp6MzoDTrOPvpapVXfqpMpfPD06qISlMkBs82NqtPD1s er3Q8uTowdItEkZ9KhaNrOKON3ehlqd/xfh9NKSLkw1BvnLzlH1MeRxMOyNJd+Mks6gBo++F6 6CQE4boXq+lv701MTbRd8LGlO+3BuJDJ1JcoRdijbntwbWF/Ik4JupqSm+SrF/y+7FZl0zg4v DjiLzhESAZh7XxfLFQQA== 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 Before executing code that we have loaded from a file we need to flush the data cache and invalidate the instruction flash. Implement functions flush_cache() and invalidate_icache_all(). Signed-off-by: Heinrich Schuchardt Reviewed-by: Simon Glass --- arch/sandbox/cpu/Makefile | 2 +- arch/sandbox/cpu/cache.c | 23 +++++++++++++++++++++++ board/sandbox/sandbox.c | 4 ---- 3 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 arch/sandbox/cpu/cache.c -- 2.29.2 diff --git a/arch/sandbox/cpu/Makefile b/arch/sandbox/cpu/Makefile index bac96447d5..de7fe7f391 100644 --- a/arch/sandbox/cpu/Makefile +++ b/arch/sandbox/cpu/Makefile @@ -5,7 +5,7 @@ # (C) Copyright 2000-2003 # Wolfgang Denk, DENX Software Engineering, wd@denx.de. -obj-y := cpu.o state.o +obj-y := cache.o cpu.o state.o extra-y := start.o os.o extra-$(CONFIG_SANDBOX_SDL) += sdl.o obj-$(CONFIG_SPL_BUILD) += spl.o diff --git a/arch/sandbox/cpu/cache.c b/arch/sandbox/cpu/cache.c new file mode 100644 index 0000000000..46c62c0b44 --- /dev/null +++ b/arch/sandbox/cpu/cache.c @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2020, Heinrich Schuchardt + */ + +#include +#include +#include + +void flush_cache(unsigned long addr, unsigned long size) +{ + /* Clang uses (char *) parameters, GCC (void *) */ + __builtin___clear_cache((void *)addr, (void *)(addr + size)); +} + +void invalidate_icache_all(void) +{ + struct sandbox_state *state = state_get_current(); + + /* Clang uses (char *) parameters, GCC (void *) */ + __builtin___clear_cache((void *)state->ram_buf, + (void *)(state->ram_buf + state->ram_size)); +} diff --git a/board/sandbox/sandbox.c b/board/sandbox/sandbox.c index 18a605de02..3235541a7d 100644 --- a/board/sandbox/sandbox.c +++ b/board/sandbox/sandbox.c @@ -28,10 +28,6 @@ U_BOOT_DEVICE(gpio_sandbox) = { }; #endif -void flush_cache(unsigned long start, unsigned long size) -{ -} - #ifndef CONFIG_TIMER /* system timer offset in ms */ static unsigned long sandbox_timer_offset;