2019-11-25 15:33:48 +08:00
|
|
|
/*
|
|
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
|
|
*
|
|
|
|
* Copyright (c) 2019 Western Digital Corporation or its affiliates.
|
|
|
|
*
|
|
|
|
* Authors:
|
|
|
|
* Anup Patel <anup.patel@wdc.com>
|
|
|
|
* Atish Patra <anup.patel@wdc.com>
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
2020-06-06 20:03:48 +08:00
|
|
|
* HFENCE.GVMA rs1, rs2
|
|
|
|
* HFENCE.GVMA zero, rs2
|
|
|
|
* HFENCE.GVMA rs1
|
|
|
|
* HFENCE.GVMA
|
|
|
|
*
|
|
|
|
* rs1!=zero and rs2!=zero ==> HFENCE.GVMA rs1, rs2
|
|
|
|
* rs1==zero and rs2!=zero ==> HFENCE.GVMA zero, rs2
|
|
|
|
* rs1!=zero and rs2==zero ==> HFENCE.GVMA rs1
|
|
|
|
* rs1==zero and rs2==zero ==> HFENCE.GVMA
|
|
|
|
*
|
|
|
|
* Instruction encoding of HFENCE.GVMA is:
|
2019-11-25 15:33:48 +08:00
|
|
|
* 0110001 rs2(5) rs1(5) 000 00000 1110011
|
|
|
|
*/
|
|
|
|
|
|
|
|
.align 3
|
|
|
|
.global __sbi_hfence_gvma_vmid_gpa
|
|
|
|
__sbi_hfence_gvma_vmid_gpa:
|
2020-06-06 20:03:48 +08:00
|
|
|
/*
|
|
|
|
* rs1 = a0 (GPA)
|
|
|
|
* rs2 = a1 (VMID)
|
|
|
|
* HFENCE.GVMA a0, a1
|
|
|
|
* 0110001 01011 01010 000 00000 1110011
|
|
|
|
*/
|
|
|
|
.word 0x62b50073
|
2019-11-25 15:33:48 +08:00
|
|
|
ret
|
|
|
|
|
|
|
|
.align 3
|
|
|
|
.global __sbi_hfence_gvma_vmid
|
|
|
|
__sbi_hfence_gvma_vmid:
|
2020-06-06 20:03:48 +08:00
|
|
|
/*
|
|
|
|
* rs1 = zero
|
|
|
|
* rs2 = a0 (VMID)
|
|
|
|
* HFENCE.GVMA zero, a0
|
|
|
|
* 0110001 01010 00000 000 00000 1110011
|
|
|
|
*/
|
2019-11-25 15:33:48 +08:00
|
|
|
.word 0x62a00073
|
|
|
|
ret
|
|
|
|
|
|
|
|
.align 3
|
|
|
|
.global __sbi_hfence_gvma_gpa
|
|
|
|
__sbi_hfence_gvma_gpa:
|
2020-06-06 20:03:48 +08:00
|
|
|
/*
|
|
|
|
* rs1 = a0 (GPA)
|
|
|
|
* rs2 = zero
|
|
|
|
* HFENCE.GVMA a0
|
|
|
|
* 0110001 00000 01010 000 00000 1110011
|
|
|
|
*/
|
2019-11-25 15:33:48 +08:00
|
|
|
.word 0x62050073
|
|
|
|
ret
|
|
|
|
|
|
|
|
.align 3
|
|
|
|
.global __sbi_hfence_gvma_all
|
|
|
|
__sbi_hfence_gvma_all:
|
2020-06-06 20:03:48 +08:00
|
|
|
/*
|
|
|
|
* rs1 = zero
|
|
|
|
* rs2 = zero
|
|
|
|
* HFENCE.GVMA
|
|
|
|
* 0110001 00000 00000 000 00000 1110011
|
|
|
|
*/
|
2019-11-25 15:33:48 +08:00
|
|
|
.word 0x62000073
|
|
|
|
ret
|
|
|
|
|
|
|
|
/*
|
2020-06-06 20:03:48 +08:00
|
|
|
* HFENCE.VVMA rs1, rs2
|
|
|
|
* HFENCE.VVMA zero, rs2
|
|
|
|
* HFENCE.VVMA rs1
|
|
|
|
* HFENCE.VVMA
|
|
|
|
*
|
|
|
|
* rs1!=zero and rs2!=zero ==> HFENCE.VVMA rs1, rs2
|
|
|
|
* rs1==zero and rs2!=zero ==> HFENCE.VVMA zero, rs2
|
|
|
|
* rs1!=zero and rs2==zero ==> HFENCE.VVMA rs1
|
|
|
|
* rs1==zero and rs2==zero ==> HFENCE.vVMA
|
|
|
|
*
|
|
|
|
* Instruction encoding of HFENCE.VVMA is:
|
2019-11-25 15:33:48 +08:00
|
|
|
* 0010001 rs2(5) rs1(5) 000 00000 1110011
|
|
|
|
*/
|
|
|
|
|
|
|
|
.align 3
|
|
|
|
.global __sbi_hfence_vvma_asid_va
|
|
|
|
__sbi_hfence_vvma_asid_va:
|
2020-06-06 20:03:48 +08:00
|
|
|
/*
|
|
|
|
* rs1 = a0 (VA)
|
|
|
|
* rs2 = a1 (ASID)
|
|
|
|
* HFENCE.VVMA a0, a1
|
|
|
|
* 0010001 01011 01010 000 00000 1110011
|
|
|
|
*/
|
|
|
|
.word 0x22b50073
|
2019-11-25 15:33:48 +08:00
|
|
|
ret
|
|
|
|
|
|
|
|
.align 3
|
|
|
|
.global __sbi_hfence_vvma_asid
|
|
|
|
__sbi_hfence_vvma_asid:
|
2020-06-06 20:03:48 +08:00
|
|
|
/*
|
|
|
|
* rs1 = zero
|
|
|
|
* rs2 = a0 (ASID)
|
|
|
|
* HFENCE.VVMA zero, a0
|
|
|
|
* 0010001 01010 00000 000 00000 1110011
|
|
|
|
*/
|
2019-11-25 15:33:48 +08:00
|
|
|
.word 0x22a00073
|
|
|
|
ret
|
|
|
|
|
|
|
|
.align 3
|
|
|
|
.global __sbi_hfence_vvma_va
|
|
|
|
__sbi_hfence_vvma_va:
|
2020-06-06 20:03:48 +08:00
|
|
|
/*
|
|
|
|
* rs1 = a0 (VA)
|
|
|
|
* rs2 = zero
|
|
|
|
* HFENCE.VVMA zero, a0
|
|
|
|
* 0010001 00000 01010 000 00000 1110011
|
|
|
|
*/
|
2019-11-25 15:33:48 +08:00
|
|
|
.word 0x22050073
|
|
|
|
ret
|
|
|
|
|
|
|
|
.align 3
|
|
|
|
.global __sbi_hfence_vvma_all
|
|
|
|
__sbi_hfence_vvma_all:
|
2020-06-06 20:03:48 +08:00
|
|
|
/*
|
|
|
|
* rs1 = zero
|
|
|
|
* rs2 = zero
|
|
|
|
* HFENCE.VVMA
|
|
|
|
* 0010001 00000 00000 000 00000 1110011
|
|
|
|
*/
|
2019-11-25 15:33:48 +08:00
|
|
|
.word 0x22000073
|
|
|
|
ret
|