mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-22 17:27:53 +00:00
hv: fix violations of coding guideline C-FN-16
The coding guideline rule C-FN-16 requires that 'Mixed-use of C code and assembly code in a single function shall not be allowed', this patch wraps inline assembly to inline functions. Tracked-On: #6776 Signed-off-by: Mingqiang Chi <mingqiang.chi@intel.com> Acked-by: Anthony Xu <anthony.xu@intel.com> v1-->v2: use inline functions for read/write XMM registers
This commit is contained in:
committed by
acrnsi-robot
parent
31a5a907ba
commit
b6b69f2178
@@ -225,21 +225,11 @@ void load_iwkey(struct acrn_vcpu *vcpu)
|
||||
if (pcpu_has_cap(X86_FEATURE_KEYLOCKER) && vcpu->arch.cr4_kl_enabled &&
|
||||
(get_cpu_var(whose_iwkey) != vcpu)) {
|
||||
/* Save/restore xmm0/xmm1/xmm2 during the process */
|
||||
asm volatile ( "movdqu %%xmm0, %0\n"
|
||||
"movdqu %%xmm1, %1\n"
|
||||
"movdqu %%xmm2, %2\n"
|
||||
"movdqu %3, %%xmm0\n"
|
||||
"movdqu %4, %%xmm1\n"
|
||||
"movdqu %5, %%xmm2\n"
|
||||
: "=m"(xmm_save[0]), "=m"(xmm_save[2]), "=m"(xmm_save[4])
|
||||
: "m"(vcpu->arch.IWKey.integrity_key[0]),
|
||||
"m"(vcpu->arch.IWKey.encryption_key[0]),
|
||||
"m"(vcpu->arch.IWKey.encryption_key[2]));
|
||||
read_xmm_0_2(&xmm_save[0], &xmm_save[2], &xmm_save[4]);
|
||||
write_xmm_0_2(vcpu->arch.IWKey.integrity_key[0], vcpu->arch.IWKey.encryption_key[0],
|
||||
vcpu->arch.IWKey.encryption_key[2]);
|
||||
asm_loadiwkey(0);
|
||||
asm volatile ( "movdqu %2, %%xmm2\n"
|
||||
"movdqu %1, %%xmm1\n"
|
||||
"movdqu %0, %%xmm0\n"
|
||||
: : "m"(xmm_save[0]), "m"(xmm_save[2]), "m"(xmm_save[4]));
|
||||
write_xmm_0_2(xmm_save[0], xmm_save[2], xmm_save[4]);
|
||||
get_cpu_var(whose_iwkey) = vcpu;
|
||||
}
|
||||
}
|
||||
|
@@ -477,10 +477,7 @@ static int32_t loadiwkey_vmexit_handler(struct acrn_vcpu *vcpu)
|
||||
if ((vcpu_get_gpreg(vcpu, CPU_REG_RAX) != 0UL)) {
|
||||
vcpu_inject_gp(vcpu, 0);
|
||||
} else {
|
||||
asm volatile ("movdqu %%xmm0, %0\n"
|
||||
"movdqu %%xmm1, %1\n"
|
||||
"movdqu %%xmm2, %2\n"
|
||||
: : "m"(xmm[0]), "m"(xmm[2]), "m"(xmm[4]));
|
||||
read_xmm_0_2(&xmm[0], &xmm[2], &xmm[4]);
|
||||
vcpu->arch.IWKey.encryption_key[0] = xmm[2];
|
||||
vcpu->arch.IWKey.encryption_key[1] = xmm[3];
|
||||
vcpu->arch.IWKey.encryption_key[2] = xmm[4];
|
||||
|
Reference in New Issue
Block a user