Commit 89e18eb3 authored by Ralf Baechle's avatar Ralf Baechle

MIPS: Change {set,clear,change}_c0_<foo> to return old value.

This is more standard and useful and need for the following fix to work
correctly.
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 5484879c
...@@ -1391,11 +1391,11 @@ static inline void tlb_write_random(void) ...@@ -1391,11 +1391,11 @@ static inline void tlb_write_random(void)
static inline unsigned int \ static inline unsigned int \
set_c0_##name(unsigned int set) \ set_c0_##name(unsigned int set) \
{ \ { \
unsigned int res; \ unsigned int res, new; \
\ \
res = read_c0_##name(); \ res = read_c0_##name(); \
res |= set; \ new = res | set; \
write_c0_##name(res); \ write_c0_##name(new); \
\ \
return res; \ return res; \
} \ } \
...@@ -1403,24 +1403,24 @@ set_c0_##name(unsigned int set) \ ...@@ -1403,24 +1403,24 @@ set_c0_##name(unsigned int set) \
static inline unsigned int \ static inline unsigned int \
clear_c0_##name(unsigned int clear) \ clear_c0_##name(unsigned int clear) \
{ \ { \
unsigned int res; \ unsigned int res, new; \
\ \
res = read_c0_##name(); \ res = read_c0_##name(); \
res &= ~clear; \ new = res & ~clear; \
write_c0_##name(res); \ write_c0_##name(new); \
\ \
return res; \ return res; \
} \ } \
\ \
static inline unsigned int \ static inline unsigned int \
change_c0_##name(unsigned int change, unsigned int new) \ change_c0_##name(unsigned int change, unsigned int val) \
{ \ { \
unsigned int res; \ unsigned int res, new; \
\ \
res = read_c0_##name(); \ res = read_c0_##name(); \
res &= ~change; \ new = res & ~change; \
res |= (new & change); \ new |= (val & change); \
write_c0_##name(res); \ write_c0_##name(new); \
\ \
return res; \ return res; \
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment