From: Huacai Chen Date: Mon, 21 Sep 2020 09:12:26 +0000 (+0800) Subject: MIPS: context switch: Use save/restore instead of set/clear for Status.CU2 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=4e43e5df5850ca8300180f422727e42a5065aaaa;p=linux.git MIPS: context switch: Use save/restore instead of set/clear for Status.CU2 Some processors (such as Loongson-3) need to enable CU2 in kernel mode, current set/clear method will lose Status.CU2 during context switching, so use save/restore method instead. Signed-off-by: Huacai Chen Signed-off-by: Thomas Bogendoerfer --- diff --git a/arch/mips/include/asm/switch_to.h b/arch/mips/include/asm/switch_to.h index 0b0a93bf83cd9..a4374b4cb88fd 100644 --- a/arch/mips/include/asm/switch_to.h +++ b/arch/mips/include/asm/switch_to.h @@ -117,6 +117,8 @@ do { \ __restore_dsp(next); \ } \ if (cop2_present) { \ + u32 status = read_c0_status(); \ + \ set_c0_status(ST0_CU2); \ if ((KSTK_STATUS(prev) & ST0_CU2)) { \ if (cop2_lazy_restore) \ @@ -127,7 +129,7 @@ do { \ !cop2_lazy_restore) { \ cop2_restore(next); \ } \ - clear_c0_status(ST0_CU2); \ + write_c0_status(status); \ } \ __clear_r5_hw_ll_bit(); \ __clear_software_ll_bit(); \