mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-18 05:28:36 -07:00
util/cacheflush.c: Update cache flushing mechanism for Emscripten
Although __builtin___clear_cache is used to flush the instruction cache for a specified memory region, this operation doesn't apply to wasm, as its memory isn't executable. Moreover, Emscripten does not support this builtin and fails to compile it with the following error. > fatal error: error in backend: llvm.clear_cache is not supported on wasm To resolve this, this commit removes the call to __builtin___clear_cache for Emscripten build. Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Link: https://lore.kernel.org/r/2926a798fa52a3a5b11c3df4edd1643d2b7cdcb9.1745820062.git.ktokunaga.mail@gmail.com Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
4cd5a25557
commit
4c7c051719
2 changed files with 11 additions and 0 deletions
|
|
@ -26,6 +26,13 @@ static inline void flush_idcache_range(uintptr_t rx, uintptr_t rw, size_t len)
|
|||
/* icache is coherent and does not require flushing. */
|
||||
}
|
||||
|
||||
#elif defined(EMSCRIPTEN)
|
||||
|
||||
static inline void flush_idcache_range(uintptr_t rx, uintptr_t rw, size_t len)
|
||||
{
|
||||
/* Wasm doesn't have executable region of memory. */
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
void flush_idcache_range(uintptr_t rx, uintptr_t rw, size_t len);
|
||||
|
|
|
|||
|
|
@ -229,6 +229,10 @@ static void __attribute__((constructor)) init_cache_info(void)
|
|||
|
||||
/* Caches are coherent and do not require flushing; symbol inline. */
|
||||
|
||||
#elif defined(EMSCRIPTEN)
|
||||
|
||||
/* Wasm doesn't have executable region of memory. */
|
||||
|
||||
#elif defined(__aarch64__) && !defined(CONFIG_WIN32)
|
||||
/*
|
||||
* For Windows, we use generic implementation of flush_idcache_range, that
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue