134c3ffa34
This patch adds support for the XTheadSync ISA extension. The patch uses the T-Head specific decoder and translation. The implementation introduces a helper to execute synchronization tasks: helper_tlb_flush_all() performs a synchronized TLB flush on all CPUs. Co-developed-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu> Message-Id: <20230131202013.2541053-3-christoph.muellner@vrull.eu> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
48 lines
2.1 KiB
Plaintext
48 lines
2.1 KiB
Plaintext
#
|
|
# Translation routines for the instructions of the XThead* ISA extensions
|
|
#
|
|
# Copyright (c) 2022 Christoph Muellner, christoph.muellner@vrull.eu
|
|
#
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
#
|
|
# The documentation of the ISA extensions can be found here:
|
|
# https://github.com/T-head-Semi/thead-extension-spec/releases/latest
|
|
|
|
# Fields:
|
|
%rs1 15:5
|
|
%rs2 20:5
|
|
|
|
# Formats
|
|
@sfence_vm ....... ..... ..... ... ..... ....... %rs1
|
|
@rs2_s ....... ..... ..... ... ..... ....... %rs2 %rs1
|
|
|
|
# XTheadCmo
|
|
th_dcache_call 0000000 00001 00000 000 00000 0001011
|
|
th_dcache_ciall 0000000 00011 00000 000 00000 0001011
|
|
th_dcache_iall 0000000 00010 00000 000 00000 0001011
|
|
th_dcache_cpa 0000001 01001 ..... 000 00000 0001011 @sfence_vm
|
|
th_dcache_cipa 0000001 01011 ..... 000 00000 0001011 @sfence_vm
|
|
th_dcache_ipa 0000001 01010 ..... 000 00000 0001011 @sfence_vm
|
|
th_dcache_cva 0000001 00101 ..... 000 00000 0001011 @sfence_vm
|
|
th_dcache_civa 0000001 00111 ..... 000 00000 0001011 @sfence_vm
|
|
th_dcache_iva 0000001 00110 ..... 000 00000 0001011 @sfence_vm
|
|
th_dcache_csw 0000001 00001 ..... 000 00000 0001011 @sfence_vm
|
|
th_dcache_cisw 0000001 00011 ..... 000 00000 0001011 @sfence_vm
|
|
th_dcache_isw 0000001 00010 ..... 000 00000 0001011 @sfence_vm
|
|
th_dcache_cpal1 0000001 01000 ..... 000 00000 0001011 @sfence_vm
|
|
th_dcache_cval1 0000001 00100 ..... 000 00000 0001011 @sfence_vm
|
|
th_icache_iall 0000000 10000 00000 000 00000 0001011
|
|
th_icache_ialls 0000000 10001 00000 000 00000 0001011
|
|
th_icache_ipa 0000001 11000 ..... 000 00000 0001011 @sfence_vm
|
|
th_icache_iva 0000001 10000 ..... 000 00000 0001011 @sfence_vm
|
|
th_l2cache_call 0000000 10101 00000 000 00000 0001011
|
|
th_l2cache_ciall 0000000 10111 00000 000 00000 0001011
|
|
th_l2cache_iall 0000000 10110 00000 000 00000 0001011
|
|
|
|
# XTheadSync
|
|
th_sfence_vmas 0000010 ..... ..... 000 00000 0001011 @rs2_s
|
|
th_sync 0000000 11000 00000 000 00000 0001011
|
|
th_sync_i 0000000 11010 00000 000 00000 0001011
|
|
th_sync_is 0000000 11011 00000 000 00000 0001011
|
|
th_sync_s 0000000 11001 00000 000 00000 0001011
|