|
@@ -465,8 +465,13 @@ void flush_thread(void)
|
|
|
#ifdef CONFIG_PPC64
|
|
|
struct thread_info *t = current_thread_info();
|
|
|
|
|
|
- if (t->flags & _TIF_ABI_PENDING)
|
|
|
- t->flags ^= (_TIF_ABI_PENDING | _TIF_32BIT);
|
|
|
+ if (test_ti_thread_flag(t, TIF_ABI_PENDING)) {
|
|
|
+ clear_ti_thread_flag(t, TIF_ABI_PENDING);
|
|
|
+ if (test_ti_thread_flag(t, TIF_32BIT))
|
|
|
+ clear_ti_thread_flag(t, TIF_32BIT);
|
|
|
+ else
|
|
|
+ set_ti_thread_flag(t, TIF_32BIT);
|
|
|
+ }
|
|
|
#endif
|
|
|
|
|
|
discard_lazy_cpu_state();
|