On 19.06.24 14:23, Ilias Apalodimas wrote:
On Sun, 16 Jun 2024 at 20:31, Heinrich Schuchardt
<heinrich.schucha...@canonical.com> wrote:
If we have multiple weak implementations of functions, the linker might
choose any of these. ARM and RISC-V already provide a weak implementation
of flush_dcache_all().
Signed-off-by: Heinrich Schuchardt <heinrich.schucha...@canonical.com>
---
cmd/cache.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/cmd/cache.c b/cmd/cache.c
index 0254ff17f9b..16fa0f7c652 100644
--- a/cmd/cache.c
+++ b/cmd/cache.c
@@ -52,11 +52,14 @@ static int do_icache(struct cmd_tbl *cmdtp, int flag, int
argc,
return 0;
}
+/* ARM and RISC-V define a weak flush_dcache_all() themselves. */
+#if !defined(CONFIG_ARM) && !defined(CONFIG_RISCV)
void __weak flush_dcache_all(void)
{
puts("No arch specific flush_dcache_all available!\n");
/* please define arch specific flush_dcache_all */
}
Aren't we supposed to add a single __weak function so the linker can
replace it? IOW why is the declaration for Arm/riscv a weak one?
Some sub-architectures override the architecture specific weak
implementation, e.g.
arch/riscv/cpu/andes/cache.c:44:
void flush_dcache_all(void)
arch/arm/cpu/arm926ejs/cache.c:17:
void flush_dcache_all(void)
Best regards
Heinrich
Thanks
/Ilias
+#endif
static int do_dcache(struct cmd_tbl *cmdtp, int flag, int argc,
char *const argv[])
--
2.43.0