35 lines
1.3 KiB
Diff
35 lines
1.3 KiB
Diff
|
|
From 7f4a912da99f5787c88b275b83ee547c9e1aa3d7 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Lulu Cheng <chenglulu@loongson.cn>
|
||
|
|
Date: Mon, 23 Oct 2023 09:07:32 +0800
|
||
|
|
Subject: [PATCH 014/188] LoongArch: Define macro CLEAR_INSN_CACHE.
|
||
|
|
|
||
|
|
LoongArch's microstructure ensures cache consistency by hardware.
|
||
|
|
Due to out-of-order execution, "ibar" is required to ensure the visibility of the
|
||
|
|
store (invalidated icache) executed by this CPU before "ibar" (to the instance).
|
||
|
|
"ibar" will not invalidate the icache, so the start and end parameters are not Affect
|
||
|
|
"ibar" performance.
|
||
|
|
|
||
|
|
gcc/ChangeLog:
|
||
|
|
|
||
|
|
* config/loongarch/loongarch.h (CLEAR_INSN_CACHE): New definition.
|
||
|
|
---
|
||
|
|
gcc/config/loongarch/loongarch.h | 5 +++++
|
||
|
|
1 file changed, 5 insertions(+)
|
||
|
|
|
||
|
|
diff --git a/gcc/config/loongarch/loongarch.h b/gcc/config/loongarch/loongarch.h
|
||
|
|
index 572b538be..f7ddfc452 100644
|
||
|
|
--- a/gcc/config/loongarch/loongarch.h
|
||
|
|
+++ b/gcc/config/loongarch/loongarch.h
|
||
|
|
@@ -1231,3 +1231,8 @@ struct GTY (()) machine_function
|
||
|
|
(TARGET_HARD_FLOAT_ABI ? (TARGET_DOUBLE_FLOAT_ABI ? 8 : 4) : 0)
|
||
|
|
|
||
|
|
#define FUNCTION_VALUE_REGNO_P(N) ((N) == GP_RETURN || (N) == FP_RETURN)
|
||
|
|
+
|
||
|
|
+/* LoongArch maintains ICache/DCache coherency by hardware,
|
||
|
|
+ we just need "ibar" to avoid instruction hazard here. */
|
||
|
|
+#undef CLEAR_INSN_CACHE
|
||
|
|
+#define CLEAR_INSN_CACHE(beg, end) __builtin_loongarch_ibar (0)
|
||
|
|
--
|
||
|
|
2.43.0
|
||
|
|
|