aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/include/asm/mipsregs.h')
-rw-r--r--arch/mips/include/asm/mipsregs.h18
1 files changed, 11 insertions, 7 deletions
diff --git a/arch/mips/include/asm/mipsregs.h b/arch/mips/include/asm/mipsregs.h
index 48fa1f1f7f..f80311e64e 100644
--- a/arch/mips/include/asm/mipsregs.h
+++ b/arch/mips/include/asm/mipsregs.h
@@ -1013,9 +1013,7 @@ do { \
1013#define __read_64bit_c0_split(source, sel) \ 1013#define __read_64bit_c0_split(source, sel) \
1014({ \ 1014({ \
1015 unsigned long long __val; \ 1015 unsigned long long __val; \
1016 unsigned long __flags; \
1017 \ 1016 \
1018 local_irq_save(__flags); \
1019 if (sel == 0) \ 1017 if (sel == 0) \
1020 __asm__ __volatile__( \ 1018 __asm__ __volatile__( \
1021 ".set\tmips64\n\t" \ 1019 ".set\tmips64\n\t" \
@@ -1034,16 +1032,12 @@ do { \
1034 "dsra\t%L0, %L0, 32\n\t" \ 1032 "dsra\t%L0, %L0, 32\n\t" \
1035 ".set\tmips0" \ 1033 ".set\tmips0" \
1036 : "=r" (__val)); \ 1034 : "=r" (__val)); \
1037 local_irq_restore(__flags); \
1038 \ 1035 \
1039 __val; \ 1036 __val; \
1040}) 1037})
1041 1038
1042#define __write_64bit_c0_split(source, sel, val) \ 1039#define __write_64bit_c0_split(source, sel, val) \
1043do { \ 1040do { \
1044 unsigned long __flags; \
1045 \
1046 local_irq_save(__flags); \
1047 if (sel == 0) \ 1041 if (sel == 0) \
1048 __asm__ __volatile__( \ 1042 __asm__ __volatile__( \
1049 ".set\tmips64\n\t" \ 1043 ".set\tmips64\n\t" \
@@ -1064,7 +1058,6 @@ do { \
1064 "dmtc0\t%L0, " #source ", " #sel "\n\t" \ 1058 "dmtc0\t%L0, " #source ", " #sel "\n\t" \
1065 ".set\tmips0" \ 1059 ".set\tmips0" \
1066 : : "r" (val)); \ 1060 : : "r" (val)); \
1067 local_irq_restore(__flags); \
1068} while (0) 1061} while (0)
1069 1062
1070#define __readx_32bit_c0_register(source) \ 1063#define __readx_32bit_c0_register(source) \
@@ -2005,6 +1998,17 @@ static inline unsigned int get_ebase_cpunum(void)
2005 return read_c0_ebase() & 0x3ff; 1998 return read_c0_ebase() & 0x3ff;
2006} 1999}
2007 2000
2001static inline void write_one_tlb(int index, u32 pagemask, u32 hi, u32 low0,
2002 u32 low1)
2003{
2004 write_c0_entrylo0(low0);
2005 write_c0_pagemask(pagemask);
2006 write_c0_entrylo1(low1);
2007 write_c0_entryhi(hi);
2008 write_c0_index(index);
2009 tlb_write_indexed();
2010}
2011
2008#endif /* !__ASSEMBLY__ */ 2012#endif /* !__ASSEMBLY__ */
2009 2013
2010#endif /* _ASM_MIPSREGS_H */ 2014#endif /* _ASM_MIPSREGS_H */