LOONGARCH_CSR_EUEN
euen = csr_read32(LOONGARCH_CSR_EUEN);
csr_xchg32(CSR_EUEN_LSXEN, CSR_EUEN_LSXEN, LOONGARCH_CSR_EUEN);
csr_xchg32(0, CSR_EUEN_LSXEN, LOONGARCH_CSR_EUEN);
csr_xchg32(CSR_EUEN_LASXEN, CSR_EUEN_LASXEN, LOONGARCH_CSR_EUEN);
csr_xchg32(0, CSR_EUEN_LASXEN, LOONGARCH_CSR_EUEN);
return (csr_read32(LOONGARCH_CSR_EUEN) & CSR_EUEN_FPEN) ?
return (csr_read32(LOONGARCH_CSR_EUEN) & CSR_EUEN_LSXEN) ?
return (csr_read32(LOONGARCH_CSR_EUEN) & CSR_EUEN_LASXEN) ?
#define read_gcsr_euen() gcsr_read(LOONGARCH_CSR_EUEN)
#define write_gcsr_euen(val) gcsr_write(val, LOONGARCH_CSR_EUEN)
return (csr_read32(LOONGARCH_CSR_EUEN) & CSR_EUEN_LBTEN) ?
csr_xchg32(CSR_EUEN_LBTEN, CSR_EUEN_LBTEN, LOONGARCH_CSR_EUEN);
csr_xchg32(0, CSR_EUEN_LBTEN, LOONGARCH_CSR_EUEN);
#define read_csr_euen() csr_read32(LOONGARCH_CSR_EUEN)
#define write_csr_euen(val) csr_write32(val, LOONGARCH_CSR_EUEN)
csrrd t0, LOONGARCH_CSR_EUEN
csrwr \temp, LOONGARCH_CSR_EUEN
__asm__ __volatile__(CSRRD_ONE_REG(LOONGARCH_CSR_EUEN) : "=r" (regs->csr_euen));
*euen_curr = csr_xchg32(euen_mask, euen_mask, LOONGARCH_CSR_EUEN);
*euen_curr = csr_xchg32(*euen_curr, euen_mask, LOONGARCH_CSR_EUEN);
set_gcsr_hw_flag(LOONGARCH_CSR_EUEN);
kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_EUEN);
kvm_save_hw_gcsr(csr, LOONGARCH_CSR_EUEN);
saved_euen = csr_read32(LOONGARCH_CSR_EUEN);
csr_write32(saved_euen, LOONGARCH_CSR_EUEN);
saved_regs.euen = csr_read32(LOONGARCH_CSR_EUEN);
csr_write32(saved_regs.euen, LOONGARCH_CSR_EUEN);
loongarch_set_csr(vcpu, LOONGARCH_CSR_EUEN, 1);