Commit 38c52459 authored by Mao Minkai's avatar Mao Minkai Committed by guzitao
Browse files

sw64: optimize hmcall rdusp() and wrusp()

Sunway inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I8CCPO



--------------------------------

Remove the unnecessary memory barrier and instruction barrier.

Signed-off-by: default avatarMao Minkai <maominkai@wxiat.com>
Reviewed-by: default avatarHe Sheng <hesheng@wxiat.com>
Signed-off-by: default avatarGu Zitao <guzitao@wxiat.com>
parent 1a8e5712
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -92,6 +92,22 @@ static inline void fixup_wrktp(void)
	entry[1] = 0x1ee00000;	/* pri_ret $23 */
}

static inline void fixup_rdusp(void)
{
	unsigned int *entry = __va(HMCALL_ENTRY(rdusp));

	entry[0] = 0x94161018;	/* pri_ldl/p $0, VC__USP(vcpucb) */
	entry[1] = 0x1ee00000;	/* pri_ret $23 */
}

static inline void fixup_wrusp(void)
{
	unsigned int *entry = __va(HMCALL_ENTRY(wrusp));

	entry[0] = 0xb6161018;	/* pri_stl/p $16, VC__USP(vcpucb) */
	entry[1] = 0x1ee00000;	/* pri_ret $23 */
}

void __init fixup_hmcall(void)
{
#if defined(CONFIG_SUBARCH_C3B)
@@ -101,6 +117,8 @@ void __init fixup_hmcall(void)
	fixup_wrasid();
	fixup_rdktp();
	fixup_wrktp();
	fixup_rdusp();
	fixup_wrusp();
	imemb();
#endif
}