]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
MIPS: Add kernel_pref & user_pref helpers
authorPaul Burton <paul.burton@mips.com>
Mon, 15 Oct 2018 18:33:21 +0000 (18:33 +0000)
committerPaul Burton <paul.burton@mips.com>
Tue, 16 Oct 2018 06:11:13 +0000 (23:11 -0700)
Add kernel_pref & user_pref macros to asm/asm-eva.h, providing an
abstraction around EVA & non-EVA pref instructions consistent with the
existing macros we have for cache & load/store instructions.

Signed-off-by: Paul Burton <paul.burton@mips.com>
Patchwork: https://patchwork.linux-mips.org/patch/20906/
Cc: linux-mips@linux-mips.org
arch/mips/include/asm/asm-eva.h

index 1e38f0e1ea3e68c8b3c77e9ff7a798a2bc0bfe1d..d80be38c4144c769d47a2fd7fc77c46818d9d8a9 100644 (file)
@@ -15,6 +15,7 @@
 /* Kernel variants */
 
 #define kernel_cache(op, base)         "cache " op ", " base "\n"
+#define kernel_pref(hint, base)                "pref " hint ", " base "\n"
 #define kernel_ll(reg, addr)           "ll " reg ", " addr "\n"
 #define kernel_sc(reg, addr)           "sc " reg ", " addr "\n"
 #define kernel_lw(reg, addr)           "lw " reg ", " addr "\n"
@@ -51,6 +52,7 @@
                                "       .set    pop\n"
 
 #define user_cache(op, base)           __BUILD_EVA_INSN("cachee", op, base)
+#define user_pref(hint, base)          __BUILD_EVA_INSN("prefe", hint, base)
 #define user_ll(reg, addr)             __BUILD_EVA_INSN("lle", reg, addr)
 #define user_sc(reg, addr)             __BUILD_EVA_INSN("sce", reg, addr)
 #define user_lw(reg, addr)             __BUILD_EVA_INSN("lwe", reg, addr)
@@ -72,6 +74,7 @@
 #else
 
 #define user_cache(op, base)           kernel_cache(op, base)
+#define user_pref(hint, base)          kernel_pref(hint, base)
 #define user_ll(reg, addr)             kernel_ll(reg, addr)
 #define user_sc(reg, addr)             kernel_sc(reg, addr)
 #define user_lw(reg, addr)             kernel_lw(reg, addr)
 #else /* __ASSEMBLY__ */
 
 #define kernel_cache(op, base)         cache op, base
+#define kernel_pref(hint, base)                pref hint, base
 #define kernel_ll(reg, addr)           ll reg, addr
 #define kernel_sc(reg, addr)           sc reg, addr
 #define kernel_lw(reg, addr)           lw reg, addr
                                .set    pop;
 
 #define user_cache(op, base)           __BUILD_EVA_INSN(cachee, op, base)
+#define user_pref(hint, base)          __BUILD_EVA_INSN(prefe, hint, base)
 #define user_ll(reg, addr)             __BUILD_EVA_INSN(lle, reg, addr)
 #define user_sc(reg, addr)             __BUILD_EVA_INSN(sce, reg, addr)
 #define user_lw(reg, addr)             __BUILD_EVA_INSN(lwe, reg, addr)
 #else
 
 #define user_cache(op, base)           kernel_cache(op, base)
+#define user_pref(hint, base)          kernel_pref(hint, base)
 #define user_ll(reg, addr)             kernel_ll(reg, addr)
 #define user_sc(reg, addr)             kernel_sc(reg, addr)
 #define user_lw(reg, addr)             kernel_lw(reg, addr)