Lines Matching +full:10 +full:base +full:- +full:t1
1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Copyright (C) 2020-2023 Loongson Technology Corporation Limited
16 .macro kvm_save_host_gpr base argument
18 st.d $r\n, \base, HGPR_OFFSET(\n)
22 .macro kvm_restore_host_gpr base argument
24 ld.d $r\n, \base, HGPR_OFFSET(\n)
29 * Save and restore all GPRs except base register,
30 * and default value of base register is a2.
32 .macro kvm_save_guest_gprs base argument
33 .irp n,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
34 st.d $r\n, \base, GGPR_OFFSET(\n)
38 .macro kvm_restore_guest_gprs base argument
39 .irp n,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
40 ld.d $r\n, \base, GGPR_OFFSET(\n)
47 * t0, t1: temp register
68 ld.d t1, a2, KVM_VCPU_KVM - KVM_VCPU_ARCH
72 ldx.d t0, t1, t0
76 csrrd t1, LOONGARCH_CSR_GSTAT
77 bstrpick.w t1, t1, CSR_GSTAT_GID_SHIFT_END, CSR_GSTAT_GID_SHIFT
79 bstrins.w t0, t1, CSR_GTLBC_TGID_SHIFT_END, CSR_GTLBC_TGID_SHIFT
104 * - IRQ is disabled
105 * - kernel privilege in root mode
106 * - page mode keep unchanged from previous PRMD in root mode
107 * - Fixme: tlb exception cannot happen since registers relative with TLB
108 * - is still in guest mode, such as pgd table/vmid registers etc,
109 * - will fix with hw page walk enabled in future
141 ld.d t1, a2, KVM_ARCH_HECFG
142 or t0, t0, t1
171 addi.d sp, sp, -PT_SIZE
197 addi.d a2, a2, -PT_SIZE
213 addi.d a2, sp, -PT_SIZE
230 fpu_save_csr a0 t1
231 fpu_save_double a0 t1
232 fpu_save_cc a0 t1 t2
237 fpu_restore_double a0 t1
238 fpu_restore_csr a0 t1 t2
239 fpu_restore_cc a0 t1 t2
245 fpu_save_csr a0 t1
246 fpu_save_cc a0 t1 t2
247 lsx_save_data a0 t1
252 lsx_restore_data a0 t1
253 fpu_restore_cc a0 t1 t2
254 fpu_restore_csr a0 t1 t2
261 fpu_save_csr a0 t1
262 fpu_save_cc a0 t1 t2
263 lasx_save_data a0 t1
268 lasx_restore_data a0 t1
269 fpu_restore_cc a0 t1 t2
270 fpu_restore_csr a0 t1 t2
275 SYM_DATA(kvm_exception_size, .quad kvm_exc_entry_end - kvm_exc_entry)
276 SYM_DATA(kvm_enter_guest_size, .quad kvm_enter_guest_end - kvm_enter_guest)