Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

MIPS: Add kernel_pref & user_pref helpers

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

+6
+6
arch/mips/include/asm/asm-eva.h
··· 15 15 /* Kernel variants */ 16 16 17 17 #define kernel_cache(op, base) "cache " op ", " base "\n" 18 + #define kernel_pref(hint, base) "pref " hint ", " base "\n" 18 19 #define kernel_ll(reg, addr) "ll " reg ", " addr "\n" 19 20 #define kernel_sc(reg, addr) "sc " reg ", " addr "\n" 20 21 #define kernel_lw(reg, addr) "lw " reg ", " addr "\n" ··· 52 51 " .set pop\n" 53 52 54 53 #define user_cache(op, base) __BUILD_EVA_INSN("cachee", op, base) 54 + #define user_pref(hint, base) __BUILD_EVA_INSN("prefe", hint, base) 55 55 #define user_ll(reg, addr) __BUILD_EVA_INSN("lle", reg, addr) 56 56 #define user_sc(reg, addr) __BUILD_EVA_INSN("sce", reg, addr) 57 57 #define user_lw(reg, addr) __BUILD_EVA_INSN("lwe", reg, addr) ··· 74 72 #else 75 73 76 74 #define user_cache(op, base) kernel_cache(op, base) 75 + #define user_pref(hint, base) kernel_pref(hint, base) 77 76 #define user_ll(reg, addr) kernel_ll(reg, addr) 78 77 #define user_sc(reg, addr) kernel_sc(reg, addr) 79 78 #define user_lw(reg, addr) kernel_lw(reg, addr) ··· 102 99 #else /* __ASSEMBLY__ */ 103 100 104 101 #define kernel_cache(op, base) cache op, base 102 + #define kernel_pref(hint, base) pref hint, base 105 103 #define kernel_ll(reg, addr) ll reg, addr 106 104 #define kernel_sc(reg, addr) sc reg, addr 107 105 #define kernel_lw(reg, addr) lw reg, addr ··· 139 135 .set pop; 140 136 141 137 #define user_cache(op, base) __BUILD_EVA_INSN(cachee, op, base) 138 + #define user_pref(hint, base) __BUILD_EVA_INSN(prefe, hint, base) 142 139 #define user_ll(reg, addr) __BUILD_EVA_INSN(lle, reg, addr) 143 140 #define user_sc(reg, addr) __BUILD_EVA_INSN(sce, reg, addr) 144 141 #define user_lw(reg, addr) __BUILD_EVA_INSN(lwe, reg, addr) ··· 160 155 #else 161 156 162 157 #define user_cache(op, base) kernel_cache(op, base) 158 + #define user_pref(hint, base) kernel_pref(hint, base) 163 159 #define user_ll(reg, addr) kernel_ll(reg, addr) 164 160 #define user_sc(reg, addr) kernel_sc(reg, addr) 165 161 #define user_lw(reg, addr) kernel_lw(reg, addr)