All of lore.kernel.org
 help / color / mirror / Atom feed
From: Song Gao <gaosong@loongson.cn>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, thuth@redhat.com,
	richard.henderson@linaro.org, laurent@vivier.eu,
	maobibo@loongson.cn, alistair.francis@wdc.com,
	pbonzini@redhat.com, philmd@redhat.com
Subject: [PATCH 02/20] target/loongarch: Add CSR registers definition
Date: Mon, 28 Jun 2021 20:04:27 +0800	[thread overview]
Message-ID: <1624881885-31692-3-git-send-email-gaosong@loongson.cn> (raw)
In-Reply-To: <1624881885-31692-1-git-send-email-gaosong@loongson.cn>

This patch add basic CSR registers definition. The CSR registers 
definition copy from kernel arch/loongarch/include/asm/loongarchregs.h.

Signed-off-by: Song Gao <gaosong@loongson.cn>
---
 target/loongarch/cpu-csr.h | 724 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 724 insertions(+)
 create mode 100644 target/loongarch/cpu-csr.h

diff --git a/target/loongarch/cpu-csr.h b/target/loongarch/cpu-csr.h
new file mode 100644
index 0000000..87273b1
--- /dev/null
+++ b/target/loongarch/cpu-csr.h
@@ -0,0 +1,724 @@
+/*
+ * QEMU LoongArch CSR
+ *
+ * Copyright (c) 2021 Loongson Technology Corporation Limited
+ *
+ * SPDX-License-Identifier: LGPL-2.1+
+ */
+
+#ifndef _CPU_CSR_H_
+#define _CPU_CSR_H_
+
+/*
+ * basic CSR register copy
+ * copy from kernel arch/loongarch/include/asm/loongarchregs.h
+ */
+
+#define LOONGARCH_CSR_CRMD           0x0 /* Current mode info */
+#define  CSR_CRMD_DACM_SHIFT         7
+#define  CSR_CRMD_DACM_WIDTH         2
+#define  CSR_CRMD_DACM               (0x3UL << CSR_CRMD_DACM_SHIFT)
+#define  CSR_CRMD_DACF_SHIFT         5
+#define  CSR_CRMD_DACF_WIDTH         2
+#define  CSR_CRMD_DACF               (0x3UL << CSR_CRMD_DACF_SHIFT)
+#define  CSR_CRMD_PG_SHIFT           4
+#define  CSR_CRMD_PG                 (0x1UL << CSR_CRMD_PG_SHIFT)
+#define  CSR_CRMD_DA_SHIFT           3
+#define  CSR_CRMD_DA                 (0x1UL << CSR_CRMD_DA_SHIFT)
+#define  CSR_CRMD_IE_SHIFT           2
+#define  CSR_CRMD_IE                 (0x1UL << CSR_CRMD_IE_SHIFT)
+#define  CSR_CRMD_PLV_SHIFT          0
+#define  CSR_CRMD_PLV_WIDTH          2
+#define  CSR_CRMD_PLV                (0x3UL << CSR_CRMD_PLV_SHIFT)
+
+#define PLV_USER                     3
+#define PLV_KERN                     0
+#define PLV_MASK                     0x3
+
+#define LOONGARCH_CSR_PRMD           0x1 /* Prev-exception mode info */
+#define  CSR_PRMD_PIE_SHIFT          2
+#define  CSR_PRMD_PIE                (0x1UL << CSR_PRMD_PIE_SHIFT)
+#define  CSR_PRMD_PPLV_SHIFT         0
+#define  CSR_PRMD_PPLV_WIDTH         2
+#define  CSR_PRMD_PPLV               (0x3UL << CSR_PRMD_PPLV_SHIFT)
+
+#define LOONGARCH_CSR_EUEN           0x2 /* Extended unit enable */
+#define  CSR_EUEN_LBTEN_SHIFT        3
+#define  CSR_EUEN_LBTEN              (0x1UL << CSR_EUEN_LBTEN_SHIFT)
+#define  CSR_EUEN_LASXEN_SHIFT       2
+#define  CSR_EUEN_LASXEN             (0x1UL << CSR_EUEN_LASXEN_SHIFT)
+#define  CSR_EUEN_LSXEN_SHIFT        1
+#define  CSR_EUEN_LSXEN              (0x1UL << CSR_EUEN_LSXEN_SHIFT)
+#define  CSR_EUEN_FPEN_SHIFT         0
+#define  CSR_EUEN_FPEN               (0x1UL << CSR_EUEN_FPEN_SHIFT)
+
+#define LOONGARCH_CSR_MISC           0x3 /* Misc config */
+
+#define LOONGARCH_CSR_ECFG           0x4 /* Exception config */
+#define  CSR_ECFG_VS_SHIFT           16
+#define  CSR_ECFG_VS_WIDTH           3
+#define  CSR_ECFG_VS                 (0x7UL << CSR_ECFG_VS_SHIFT)
+#define  CSR_ECFG_IM_SHIFT           0
+#define  CSR_ECFG_IM_WIDTH           13
+#define  CSR_ECFG_IM                 (0x1fffUL << CSR_ECFG_IM_SHIFT)
+
+#define  CSR_ECFG_IPMASK             0x00001fff
+
+#define LOONGARCH_CSR_ESTAT          0x5 /* Exception status */
+#define  CSR_ESTAT_ESUBCODE_SHIFT    22
+#define  CSR_ESTAT_ESUBCODE_WIDTH    9
+#define  CSR_ESTAT_ESUBCODE          (0x1ffULL << CSR_ESTAT_ESUBCODE_SHIFT)
+#define  CSR_ESTAT_EXC_SH            16
+#define  CSR_ESTAT_EXC_WIDTH         5
+#define  CSR_ESTAT_EXC               (0x1fULL << CSR_ESTAT_EXC_SH)
+#define  CSR_ESTAT_IS_SHIFT          0
+#define  CSR_ESTAT_IS_WIDTH          15
+#define  CSR_ESTAT_IS                (0x7fffULL << CSR_ESTAT_IS_SHIFT)
+
+#define  CSR_ESTAT_IPMASK            0x00001fff
+
+/*
+ * ExStatus.ExcCode
+ */
+#define  EXCCODE_INT_START           64
+#define  EXCCODE_RSV                 0    /* Reserved */
+#define  EXCCODE_TLBL                1    /* TLB miss on a load */
+#define  EXCCODE_TLBS                2    /* TLB miss on a store */
+#define  EXCCODE_TLBI                3    /* TLB miss on a ifetch */
+#define  EXCCODE_TLBM                4    /* TLB modified fault */
+#define  EXCCODE_TLBRI               5    /* TLB Read-Inhibit exception */
+#define  EXCCODE_TLBXI               6    /* TLB Execution-Inhibit exception */
+#define  EXCCODE_TLBPE               7    /* TLB Privilege Error */
+#define  EXCCODE_ADE                 8    /* Address Error */
+#define  EXCCODE_ALE                 9    /* Unalign Access */
+#define  EXCCODE_OOB                 10   /* Out of bounds */
+#define  EXCCODE_SYS                 11   /* System call */
+#define  EXCCODE_BP                  12   /* Breakpoint */
+#define  EXCCODE_INE                 13   /* Inst. Not Exist */
+#define  EXCCODE_IPE                 14   /* Inst. Privileged Error */
+#define  EXCCODE_FPDIS               15   /* FPU Disabled */
+#define  EXCCODE_LSXDIS              16   /* LSX Disabled */
+#define  EXCCODE_LASXDIS             17   /* LASX Disabled */
+#define  EXCCODE_FPE                 18   /* Floating Point Exception */
+#define  EXCCODE_WATCH               19   /* Watch address reference */
+#define  EXCCODE_BTDIS               20   /* Binary Trans. Disabled */
+#define  EXCCODE_BTE                 21   /* Binary Trans. Exception */
+#define  EXCCODE_PSI                 22   /* Guest Privileged Error */
+#define  EXCCODE_HYP                 23   /* Hypercall */
+#define  EXCCODE_GCM                 24   /* Guest CSR modified */
+#define  EXCCODE_SE                  25   /* Security*/
+
+#define LOONGARCH_CSR_ERA            0x6  /* Error PC */
+
+#define LOONGARCH_CSR_BADV           0x7  /* Bad virtual address */
+
+#define LOONGARCH_CSR_BADI           0x8  /* Bad instruction */
+
+#define LOONGARCH_CSR_EEPN           0xc  /* Exception enter base address */
+
+/* TLB related CSR register */
+#define LOONGARCH_CSR_TLBIDX         0x10 /* TLB Index, EHINV, PageSize, NP*/
+#define  CSR_TLBIDX_EHINV_SHIFT      31
+#define  CSR_TLBIDX_EHINV            (0x1ULL << CSR_TLBIDX_EHINV_SHIFT)
+#define  CSR_TLBIDX_PS_SHIFT         24
+#define  CSR_TLBIDX_PS_WIDTH         6
+#define  CSR_TLBIDX_PS               (0x3fULL << CSR_TLBIDX_PS_SHIFT)
+#define  CSR_TLBIDX_IDX_SHIFT        0
+#define  CSR_TLBIDX_IDX_WIDTH        12
+#define  CSR_TLBIDX_IDX              (0xfffULL << CSR_TLBIDX_IDX_SHIFT)
+#define  CSR_TLBIDX_SIZEM            0x3f000000
+#define  CSR_TLBIDX_SIZE             CSR_TLBIDX_PS_SHIFT
+#define  CSR_TLBIDX_IDXM             0xfff
+
+#define LOONGARCH_CSR_TLBEHI         0x11 /* TLB EntryHi without ASID */
+
+#define LOONGARCH_CSR_TLBELO0        0x12 /* TLB EntryLo0 */
+#define  CSR_TLBLO0_RPLV_SHIFT       63
+#define  CSR_TLBLO0_RPLV             (0x1ULL << CSR_TLBLO0_RPLV_SHIFT)
+#define  CSR_TLBLO0_XI_SHIFT         62
+#define  CSR_TLBLO0_XI               (0x1ULL << CSR_TLBLO0_XI_SHIFT)
+#define  CSR_TLBLO0_RI_SHIFT         61
+#define  CSR_TLBLO0_RI               (0x1ULL << CSR_TLBLO0_RI_SHIFT)
+#define  CSR_TLBLO0_PPN_SHIFT        12
+#define  CSR_TLBLO0_PPN_WIDTH        36 /* ignore lower 12bits */
+#define  CSR_TLBLO0_PPN              (0xfffffffffULL << CSR_TLBLO0_PPN_SHIFT)
+#define  CSR_TLBLO0_GLOBAL_SHIFT     6
+#define  CSR_TLBLO0_GLOBAL           (0x1ULL << CSR_TLBLO0_GLOBAL_SHIFT)
+#define  CSR_TLBLO0_CCA_SHIFT        4
+#define  CSR_TLBLO0_CCA_WIDTH        2
+#define  CSR_TLBLO0_CCA              (0x3ULL << CSR_TLBLO0_CCA_SHIFT)
+#define  CSR_TLBLO0_PLV_SHIFT        2
+#define  CSR_TLBLO0_PLV_WIDTH        2
+#define  CSR_TLBLO0_PLV              (0x3ULL << CSR_TLBLO0_PLV_SHIFT)
+#define  CSR_TLBLO0_WE_SHIFT         1
+#define  CSR_TLBLO0_WE               (0x1ULL << CSR_TLBLO0_WE_SHIFT)
+#define  CSR_TLBLO0_V_SHIFT          0
+#define  CSR_TLBLO0_V                (0x1ULL << CSR_TLBLO0_V_SHIFT)
+
+#define LOONGARCH_CSR_TLBELO1        0x13 /* TLB EntryLo1 */
+#define  CSR_TLBLO1_RPLV_SHIFT       63
+#define  CSR_TLBLO1_RPLV             (0x1ULL << CSR_TLBLO1_RPLV_SHIFT)
+#define  CSR_TLBLO1_XI_SHIFT         62
+#define  CSR_TLBLO1_XI               (0x1ULL << CSR_TLBLO1_XI_SHIFT)
+#define  CSR_TLBLO1_RI_SHIFT         61
+#define  CSR_TLBLO1_RI               (0x1ULL << CSR_TLBLO1_RI_SHIFT)
+#define  CSR_TLBLO1_PPN_SHIFT        12
+#define  CSR_TLBLO1_PPN_WIDTH        36
+#define  CSR_TLBLO1_PPN              (0xfffffffffULL << CSR_TLBLO1_PPN_SHIFT)
+#define  CSR_TLBLO1_GLOBAL_SHIFT     6
+#define  CSR_TLBLO1_GLOBAL           (0x1ULL << CSR_TLBLO1_GLOBAL_SHIFT)
+#define  CSR_TLBLO1_CCA_SHIFT        4
+#define  CSR_TLBLO1_CCA_WIDTH        2
+#define  CSR_TLBLO1_CCA              (0x3ULL << CSR_TLBLO1_CCA_SHIFT)
+#define  CSR_TLBLO1_PLV_SHIFT        2
+#define  CSR_TLBLO1_PLV_WIDTH        2
+#define  CSR_TLBLO1_PLV              (0x3ULL << CSR_TLBLO1_PLV_SHIFT)
+#define  CSR_TLBLO1_WE_SHIFT         1
+#define  CSR_TLBLO1_WE               (0x1ULL << CSR_TLBLO1_WE_SHIFT)
+#define  CSR_TLBLO1_V_SHIFT          0
+#define  CSR_TLBLO1_V                (0x1ULL << CSR_TLBLO1_V_SHIFT)
+
+#define LOONGARCH_CSR_ASID           0x18 /* 64 ASID */
+#define  CSR_ASID_BIT_SHIFT          16 /* ASIDBits */
+#define  CSR_ASID_BIT_WIDTH          8
+#define  CSR_ASID_BIT                (0xffULL << CSR_ASID_BIT_SHIFT)
+#define  CSR_ASID_ASID_SHIFT         0
+#define  CSR_ASID_ASID_WIDTH         10
+#define  CSR_ASID_ASID               (0x3ffULL << CSR_ASID_ASID_SHIFT)
+
+/* Page table base address when badv[47] = 0 */
+#define LOONGARCH_CSR_PGDL           0x19
+/* Page table base address when badv[47] = 1 */
+#define LOONGARCH_CSR_PGDH           0x1a
+
+#define LOONGARCH_CSR_PGD            0x1b /* Page table base */
+
+#define LOONGARCH_CSR_PWCTL0         0x1c /* PWCtl0 */
+#define  CSR_PWCTL0_PTEW_SHIFT       30
+#define  CSR_PWCTL0_PTEW_WIDTH       2
+#define  CSR_PWCTL0_PTEW             (0x3ULL << CSR_PWCTL0_PTEW_SHIFT)
+#define  CSR_PWCTL0_DIR1WIDTH_SHIFT  25
+#define  CSR_PWCTL0_DIR1WIDTH_WIDTH  5
+#define  CSR_PWCTL0_DIR1WIDTH        (0x1fULL << CSR_PWCTL0_DIR1WIDTH_SHIFT)
+#define  CSR_PWCTL0_DIR1BASE_SHIFT   20
+#define  CSR_PWCTL0_DIR1BASE_WIDTH   5
+#define  CSR_PWCTL0_DIR1BASE         (0x1fULL << CSR_PWCTL0_DIR1BASE_SHIFT)
+#define  CSR_PWCTL0_DIR0WIDTH_SHIFT  15
+#define  CSR_PWCTL0_DIR0WIDTH_WIDTH  5
+#define  CSR_PWCTL0_DIR0WIDTH        (0x1fULL << CSR_PWCTL0_DIR0WIDTH_SHIFT)
+#define  CSR_PWCTL0_DIR0BASE_SHIFT   10
+#define  CSR_PWCTL0_DIR0BASE_WIDTH   5
+#define  CSR_PWCTL0_DIR0BASE         (0x1fULL << CSR_PWCTL0_DIR0BASE_SHIFT)
+#define  CSR_PWCTL0_PTWIDTH_SHIFT    5
+#define  CSR_PWCTL0_PTWIDTH_WIDTH    5
+#define  CSR_PWCTL0_PTWIDTH          (0x1fULL << CSR_PWCTL0_PTWIDTH_SHIFT)
+#define  CSR_PWCTL0_PTBASE_SHIFT     0
+#define  CSR_PWCTL0_PTBASE_WIDTH     5
+#define  CSR_PWCTL0_PTBASE           (0x1fULL << CSR_PWCTL0_PTBASE_SHIFT)
+
+#define LOONGARCH_CSR_PWCTL1         0x1d /* PWCtl1 */
+#define  CSR_PWCTL1_DIR3WIDTH_SHIFT  18
+#define  CSR_PWCTL1_DIR3WIDTH_WIDTH  5
+#define  CSR_PWCTL1_DIR3WIDTH        (0x1fULL << CSR_PWCTL1_DIR3WIDTH_SHIFT)
+#define  CSR_PWCTL1_DIR3BASE_SHIFT   12
+#define  CSR_PWCTL1_DIR3BASE_WIDTH   5
+#define  CSR_PWCTL1_DIR3BASE         (0x1fULL << CSR_PWCTL0_DIR3BASE_SHIFT)
+#define  CSR_PWCTL1_DIR2WIDTH_SHIFT  6
+#define  CSR_PWCTL1_DIR2WIDTH_WIDTH  5
+#define  CSR_PWCTL1_DIR2WIDTH        (0x1fULL << CSR_PWCTL1_DIR2WIDTH_SHIFT)
+#define  CSR_PWCTL1_DIR2BASE_SHIFT   0
+#define  CSR_PWCTL1_DIR2BASE_WIDTH   5
+#define  CSR_PWCTL1_DIR2BASE         (0x1fULL << CSR_PWCTL0_DIR2BASE_SHIFT)
+
+#define LOONGARCH_CSR_STLBPGSIZE     0x1e
+#define  CSR_STLBPGSIZE_PS_WIDTH     6
+#define  CSR_STLBPGSIZE_PS           (0x3f)
+
+#define LOONGARCH_CSR_RVACFG         0x1f
+#define  CSR_RVACFG_RDVA_WIDTH       4
+#define  CSR_RVACFG_RDVA             (0xf)
+
+/* Config CSR registers */
+#define LOONGARCH_CSR_CPUID          0x20 /* CPU core number */
+#define  CSR_CPUID_CID_WIDTH         9
+#define  CSR_CPUID_CID               (0x1ff)
+
+#define LOONGARCH_CSR_PRCFG1         0x21 /* Config1 */
+#define  CSR_CONF1_VSMAX_SHIFT       12
+#define  CSR_CONF1_VSMAX_WIDTH       3
+#define  CSR_CONF1_VSMAX             (7ULL << CSR_CONF1_VSMAX_SHIFT)
+#define  CSR_CONF1_TMRBITS_SHIFT     4
+#define  CSR_CONF1_TMRBITS_WIDTH     8
+#define  CSR_CONF1_TMRBITS           (0xffULL << CSR_CONF1_TMRBITS_SHIFT)
+#define  CSR_CONF1_KSNUM_SHIFT       0
+#define  CSR_CONF1_KSNUM_WIDTH       4
+#define  CSR_CONF1_KSNUM             (0x8)
+
+#define LOONGARCH_CSR_PRCFG2         0x22 /* Config2 */
+#define  CSR_CONF2_PGMASK_SUPP       0x3ffff000
+
+#define LOONGARCH_CSR_PRCFG3         0x23 /* Config3 */
+#define  CSR_CONF3_STLBIDX_SHIFT     20
+#define  CSR_CONF3_STLBIDX_WIDTH     6
+#define  CSR_CONF3_STLBIDX           (0x3fULL << CSR_CONF3_STLBIDX_SHIFT)
+#define  CSR_CONF3_STLBWAYS_SHIFT    12
+#define  CSR_CONF3_STLBWAYS_WIDTH    8
+#define  CSR_CONF3_STLBWAYS          (0xffULL << CSR_CONF3_STLBWAYS_SHIFT)
+#define  CSR_CONF3_MTLBSIZE_SHIFT    4
+#define  CSR_CONF3_MTLBSIZE_WIDTH    8
+#define  CSR_CONF3_MTLBSIZE          (0xffULL << CSR_CONF3_MTLBSIZE_SHIFT)
+#define  CSR_CONF3_TLBORG_SHIFT      0
+#define  CSR_CONF3_TLBORG_WIDTH      4
+#define  CSR_CONF3_TLBORG            (0xfULL << CSR_CONF3_TLBORG_SHIFT)
+
+/* Kscratch registers */
+#define LOONGARCH_CSR_KS0            0x30
+#define LOONGARCH_CSR_KS1            0x31
+#define LOONGARCH_CSR_KS2            0x32
+#define LOONGARCH_CSR_KS3            0x33
+#define LOONGARCH_CSR_KS4            0x34
+#define LOONGARCH_CSR_KS5            0x35
+#define LOONGARCH_CSR_KS6            0x36
+#define LOONGARCH_CSR_KS7            0x37
+#define LOONGARCH_CSR_KS8            0x38
+
+/* Timer registers */
+#define LOONGARCH_CSR_TMID           0x40 /* Timer ID */
+
+#define LOONGARCH_CSR_TCFG           0x41 /* Timer config */
+#define  CSR_TCFG_VAL_SHIFT          2
+#define  CSR_TCFG_VAL_WIDTH          48
+#define  CSR_TCFG_VAL                (0x3fffffffffffULL << CSR_TCFG_VAL_SHIFT)
+#define  CSR_TCFG_PERIOD_SHIFT       1
+#define  CSR_TCFG_PERIOD             (0x1ULL << CSR_TCFG_PERIOD_SHIFT)
+#define  CSR_TCFG_EN                 (0x1)
+
+#define LOONGARCH_CSR_TVAL           0x42 /* Timer value */
+
+#define LOONGARCH_CSR_CNTC           0x43 /* Timer offset */
+
+#define LOONGARCH_CSR_TINTCLR        0x44 /* Timer interrupt clear */
+#define  CSR_TINTCLR_TI_SHIFT        0
+#define  CSR_TINTCLR_TI              (1 << CSR_TINTCLR_TI_SHIFT)
+
+/* LLBCTL register */
+#define LOONGARCH_CSR_LLBIT          0x60 /* LLBit control */
+#define  CSR_LLBIT_ROLLB_SHIFT       0
+#define  CSR_LLBIT_ROLLB             (1ULL << CSR_LLBIT_ROLLB_SHIFT)
+#define  CSR_LLBIT_WCLLB_SHIFT       1
+#define  CSR_LLBIT_WCLLB             (1ULL << CSR_LLBIT_WCLLB_SHIFT)
+#define  CSR_LLBIT_KLO_SHIFT         2
+#define  CSR_LLBIT_KLO               (1ULL << CSR_LLBIT_KLO_SHIFT)
+
+/* Implement dependent */
+#define LOONGARCH_CSR_IMPCTL1        0x80 /* Loongarch config1 */
+#define  CSR_MISPEC_SHIFT            20
+#define  CSR_MISPEC_WIDTH            8
+#define  CSR_MISPEC                  (0xffULL << CSR_MISPEC_SHIFT)
+#define  CSR_SSEN_SHIFT              18
+#define  CSR_SSEN                    (1ULL << CSR_SSEN_SHIFT)
+#define  CSR_SCRAND_SHIFT            17
+#define  CSR_SCRAND                  (1ULL << CSR_SCRAND_SHIFT)
+#define  CSR_LLEXCL_SHIFT            16
+#define  CSR_LLEXCL                  (1ULL << CSR_LLEXCL_SHIFT)
+#define  CSR_DISVC_SHIFT             15
+#define  CSR_DISVC                   (1ULL << CSR_DISVC_SHIFT)
+#define  CSR_VCLRU_SHIFT             14
+#define  CSR_VCLRU                   (1ULL << CSR_VCLRU_SHIFT)
+#define  CSR_DCLRU_SHIFT             13
+#define  CSR_DCLRU                   (1ULL << CSR_DCLRU_SHIFT)
+#define  CSR_FASTLDQ_SHIFT           12
+#define  CSR_FASTLDQ                 (1ULL << CSR_FASTLDQ_SHIFT)
+#define  CSR_USERCAC_SHIFT           11
+#define  CSR_USERCAC                 (1ULL << CSR_USERCAC_SHIFT)
+#define  CSR_ANTI_MISPEC_SHIFT       10
+#define  CSR_ANTI_MISPEC             (1ULL << CSR_ANTI_MISPEC_SHIFT)
+#define  CSR_ANTI_FLUSHSFB_SHIFT     9
+#define  CSR_ANTI_FLUSHSFB           (1ULL << CSR_ANTI_FLUSHSFB_SHIFT)
+#define  CSR_STFILL_SHIFT            8
+#define  CSR_STFILL                  (1ULL << CSR_STFILL_SHIFT)
+#define  CSR_LIFEP_SHIFT             7
+#define  CSR_LIFEP                   (1ULL << CSR_LIFEP_SHIFT)
+#define  CSR_LLSYNC_SHIFT            6
+#define  CSR_LLSYNC                  (1ULL << CSR_LLSYNC_SHIFT)
+#define  CSR_BRBTDIS_SHIFT           5
+#define  CSR_BRBTDIS                 (1ULL << CSR_BRBTDIS_SHIFT)
+#define  CSR_RASDIS_SHIFT            4
+#define  CSR_RASDIS                  (1ULL << CSR_RASDIS_SHIFT)
+#define  CSR_STPRE_SHIFT             2
+#define  CSR_STPRE_WIDTH             2
+#define  CSR_STPRE                   (3ULL << CSR_STPRE_SHIFT)
+#define  CSR_INSTPRE_SHIFT           1
+#define  CSR_INSTPRE                 (1ULL << CSR_INSTPRE_SHIFT)
+#define  CSR_DATAPRE_SHIFT           0
+#define  CSR_DATAPRE                 (1ULL << CSR_DATAPRE_SHIFT)
+
+#define LOONGARCH_CSR_IMPCTL2        0x81 /* loongarch config2 */
+#define  CSR_IMPCTL2_MTLB_SHIFT      0
+#define  CSR_IMPCTL2_MTLB            (1ULL << CSR_IMPCTL2_MTLB_SHIFT)
+#define  CSR_IMPCTL2_STLB_SHIFT      1
+#define  CSR_IMPCTL2_STLB            (1ULL << CSR_IMPCTL2_STLB_SHIFT)
+#define  CSR_IMPCTL2_DTLB_SHIFT      2
+#define  CSR_IMPCTL2_DTLB            (1ULL << CSR_IMPCTL2_DTLB_SHIFT)
+#define  CSR_IMPCTL2_ITLB_SHIFT      3
+#define  CSR_IMPCTL2_ITLB            (1ULL << CSR_IMPCTL2_ITLB_SHIFT)
+#define  CSR_IMPCTL2_BTAC_SHIFT      4
+#define  CSR_IMPCTL2_BTAC            (1ULL << CSR_IMPCTL2_BTAC_SHIFT)
+
+#define LOONGARCH_CSR_GNMI           0x82
+
+/* TLB refill registers */
+#define LOONGARCH_CSR_TLBRENT        0x88 /* TLB refill exception address */
+#define LOONGARCH_CSR_TLBRBADV       0x89 /* TLB refill badvaddr */
+#define LOONGARCH_CSR_TLBRERA        0x8a /* TLB refill ERA */
+#define LOONGARCH_CSR_TLBRSAVE       0x8b /* KScratch for TLB refill */
+#define LOONGARCH_CSR_TLBRELO0       0x8c /* TLB refill entrylo0 */
+#define LOONGARCH_CSR_TLBRELO1       0x8d /* TLB refill entrylo1 */
+#define LOONGARCH_CSR_TLBREHI        0x8e /* TLB refill entryhi */
+#define LOONGARCH_CSR_TLBRPRMD       0x8f /* TLB refill mode info */
+
+/* Machine error registers */
+#define LOONGARCH_CSR_ERRCTL         0x90 /* ERRCTL */
+#define LOONGARCH_CSR_ERRINFO        0x91 /* Error info1 */
+#define LOONGARCH_CSR_ERRINFO1       0x92 /* Error info2 */
+#define LOONGARCH_CSR_ERRENT         0x93 /* Error exception base address */
+#define LOONGARCH_CSR_ERRERA         0x94 /* Error exception PC */
+#define LOONGARCH_CSR_ERRSAVE        0x95 /* KScratch machine error exception */
+
+#define LOONGARCH_CSR_CTAG           0x98 /* TagLo + TagHi */
+
+/* Shadow MCSR : 0xc0 ~ 0xff */
+#define LOONGARCH_CSR_MCSR0          0xc0 /* CPUCFG0 and CPUCFG1 */
+#define  MCSR0_INT_IMPL_SHIFT        58
+#define  MCSR0_INT_IMPL              0
+#define  MCSR0_IOCSR_BRD_SHIFT       57
+#define  MCSR0_IOCSR_BRD             (1ULL << MCSR0_IOCSR_BRD_SHIFT)
+#define  MCSR0_HUGEPG_SHIFT          56
+#define  MCSR0_HUGEPG                (1ULL << MCSR0_HUGEPG_SHIFT)
+#define  MCSR0_RPLVTLB_SHIFT         55
+#define  MCSR0_RPLVTLB               (1ULL << MCSR0_RPLVTLB_SHIFT)
+#define  MCSR0_EXEPROT_SHIFT         54
+#define  MCSR0_EXEPROT               (1ULL << MCSR0_EXEPROT_SHIFT)
+#define  MCSR0_RI_SHIFT              53
+#define  MCSR0_RI                    (1ULL << MCSR0_RI_SHIFT)
+#define  MCSR0_UAL_SHIFT             52
+#define  MCSR0_UAL                   (1ULL << MCSR0_UAL_SHIFT)
+#define  MCSR0_VABIT_SHIFT           44
+#define  MCSR0_VABIT_WIDTH           8
+#define  MCSR0_VABIT                 (0xffULL << MCSR0_VABIT_SHIFT)
+#define  VABIT_DEFAULT               0x2f
+#define  MCSR0_PABIT_SHIFT           36
+#define  MCSR0_PABIT_WIDTH           8
+#define  MCSR0_PABIT                 (0xffULL << MCSR0_PABIT_SHIFT)
+#define  PABIT_DEFAULT               0x2f
+#define  MCSR0_IOCSR_SHIFT           35
+#define  MCSR0_IOCSR                 (1ULL << MCSR0_IOCSR_SHIFT)
+#define  MCSR0_PAGING_SHIFT          34
+#define  MCSR0_PAGING                (1ULL << MCSR0_PAGING_SHIFT)
+#define  MCSR0_GR64_SHIFT            33
+#define  MCSR0_GR64                  (1ULL << MCSR0_GR64_SHIFT)
+#define  GR64_DEFAULT                1
+#define  MCSR0_GR32_SHIFT            32
+#define  MCSR0_GR32                  (1ULL << MCSR0_GR32_SHIFT)
+#define  GR32_DEFAULT                0
+#define  MCSR0_PRID_WIDTH            32
+#define  MCSR0_PRID                  0x14C010
+
+#define LOONGARCH_CSR_MCSR1          0xc1 /* CPUCFG2 and CPUCFG3 */
+#define  MCSR1_HPFOLD_SHIFT          43
+#define  MCSR1_HPFOLD                (1ULL << MCSR1_HPFOLD_SHIFT)
+#define  MCSR1_SPW_LVL_SHIFT         40
+#define  MCSR1_SPW_LVL_WIDTH         3
+#define  MCSR1_SPW_LVL               (7ULL << MCSR1_SPW_LVL_SHIFT)
+#define  MCSR1_ICACHET_SHIFT         39
+#define  MCSR1_ICACHET               (1ULL << MCSR1_ICACHET_SHIFT)
+#define  MCSR1_ITLBT_SHIFT           38
+#define  MCSR1_ITLBT                 (1ULL << MCSR1_ITLBT_SHIFT)
+#define  MCSR1_LLDBAR_SHIFT          37
+#define  MCSR1_LLDBAR                (1ULL << MCSR1_LLDBAR_SHIFT)
+#define  MCSR1_SCDLY_SHIFT           36
+#define  MCSR1_SCDLY                 (1ULL << MCSR1_SCDLY_SHIFT)
+#define  MCSR1_LLEXC_SHIFT           35
+#define  MCSR1_LLEXC                 (1ULL << MCSR1_LLEXC_SHIFT)
+#define  MCSR1_UCACC_SHIFT           34
+#define  MCSR1_UCACC                 (1ULL << MCSR1_UCACC_SHIFT)
+#define  MCSR1_SFB_SHIFT             33
+#define  MCSR1_SFB                   (1ULL << MCSR1_SFB_SHIFT)
+#define  MCSR1_CCDMA_SHIFT           32
+#define  MCSR1_CCDMA                 (1ULL << MCSR1_CCDMA_SHIFT)
+#define  MCSR1_LAMO_SHIFT            22
+#define  MCSR1_LAMO                  (1ULL << MCSR1_LAMO_SHIFT)
+#define  MCSR1_LSPW_SHIFT            21
+#define  MCSR1_LSPW                  (1ULL << MCSR1_LSPW_SHIFT)
+#define  MCSR1_LOONGARCHBT_SHIFT     20
+#define  MCSR1_LOONGARCHBT           (1ULL << MCSR1_LOONGARCHBT_SHIFT)
+#define  MCSR1_ARMBT_SHIFT           19
+#define  MCSR1_ARMBT                 (1ULL << MCSR1_ARMBT_SHIFT)
+#define  MCSR1_X86BT_SHIFT           18
+#define  MCSR1_X86BT                 (1ULL << MCSR1_X86BT_SHIFT)
+#define  MCSR1_LLFTPVERS_SHIFT       15
+#define  MCSR1_LLFTPVERS_WIDTH       3
+#define  MCSR1_LLFTPVERS             (7ULL << MCSR1_LLFTPVERS_SHIFT)
+#define  MCSR1_LLFTP_SHIFT           14
+#define  MCSR1_LLFTP                 (1ULL << MCSR1_LLFTP_SHIFT)
+#define  MCSR1_VZVERS_SHIFT          11
+#define  MCSR1_VZVERS_WIDTH          3
+#define  MCSR1_VZVERS                (7ULL << MCSR1_VZVERS_SHIFT)
+#define  MCSR1_VZ_SHIFT              10
+#define  MCSR1_VZ                    (1ULL << MCSR1_VZ_SHIFT)
+#define  MCSR1_CRYPTO_SHIFT          9
+#define  MCSR1_CRYPTO                (1ULL << MCSR1_CRYPTO_SHIFT)
+#define  MCSR1_COMPLEX_SHIFT         8
+#define  MCSR1_COMPLEX               (1ULL << MCSR1_COMPLEX_SHIFT)
+#define  MCSR1_LASX_SHIFT            7
+#define  MCSR1_LASX                  (1ULL << MCSR1_LASX_SHIFT)
+#define  MCSR1_LSX_SHIFT             6
+#define  MCSR1_LSX                   (1ULL << MCSR1_LSX_SHIFT)
+#define  MCSR1_FPVERS_SHIFT          3
+#define  MCSR1_FPVERS_WIDTH          3
+#define  MCSR1_FPVERS                (7ULL << MCSR1_FPVERS_SHIFT)
+#define  MCSR1_FPDP_SHIFT            2
+#define  MCSR1_FPDP                  (1ULL << MCSR1_FPDP_SHIFT)
+#define  MCSR1_FPSP_SHIFT            1
+#define  MCSR1_FPSP                  (1ULL << MCSR1_FPSP_SHIFT)
+#define  MCSR1_FP_SHIFT              0
+#define  MCSR1_FP                    (1ULL << MCSR1_FP_SHIFT)
+
+#define LOONGARCH_CSR_MCSR2          0xc2 /* CPUCFG4 and CPUCFG5 */
+#define  MCSR2_CCDIV_SHIFT           48
+#define  MCSR2_CCDIV_WIDTH           16
+#define  MCSR2_CCDIV                 (0xffffULL << MCSR2_CCDIV_SHIFT)
+#define  MCSR2_CCMUL_SHIFT           32
+#define  MCSR2_CCMUL_WIDTH           16
+#define  MCSR2_CCMUL                 (0xffffULL << MCSR2_CCMUL_SHIFT)
+#define  MCSR2_CCFREQ_WIDTH          32
+#define  MCSR2_CCFREQ                (0xffffffff)
+#define  CCFREQ_DEFAULT              0x5f5e100 /* 100MHZ */
+
+#define LOONGARCH_CSR_MCSR3          0xc3 /* CPUCFG6 */
+#define  MCSR3_UPM_SHIFT             14
+#define  MCSR3_UPM                   (1ULL << MCSR3_UPM_SHIFT)
+#define  MCSR3_PMBITS_SHIFT          8
+#define  MCSR3_PMBITS_WIDTH          6
+#define  MCSR3_PMBITS                (0x3fULL << MCSR3_PMBITS_SHIFT)
+#define  PMBITS_DEFAULT              0x40
+#define  MCSR3_PMNUM_SHIFT           4
+#define  MCSR3_PMNUM_WIDTH           4
+#define  MCSR3_PMNUM                 (0xfULL << MCSR3_PMNUM_SHIFT)
+#define  MCSR3_PAMVER_SHIFT          1
+#define  MCSR3_PAMVER_WIDTH          3
+#define  MCSR3_PAMVER                (0x7ULL << MCSR3_PAMVER_SHIFT)
+#define  MCSR3_PMP_SHIFT             0
+#define  MCSR3_PMP                   (1ULL << MCSR3_PMP_SHIFT)
+
+#define LOONGARCH_CSR_MCSR8          0xc8 /* CPUCFG16 and CPUCFG17 */
+#define  MCSR8_L1I_SIZE_SHIFT        56
+#define  MCSR8_L1I_SIZE_WIDTH        7
+#define  MCSR8_L1I_SIZE              (0x7fULL << MCSR8_L1I_SIZE_SHIFT)
+#define  MCSR8_L1I_IDX_SHIFT         48
+#define  MCSR8_L1I_IDX_WIDTH         8
+#define  MCSR8_L1I_IDX               (0xffULL << MCSR8_L1I_IDX_SHIFT)
+#define  MCSR8_L1I_WAY_SHIFT         32
+#define  MCSR8_L1I_WAY_WIDTH         16
+#define  MCSR8_L1I_WAY               (0xffffULL << MCSR8_L1I_WAY_SHIFT)
+#define  MCSR8_L3DINCL_SHIFT         16
+#define  MCSR8_L3DINCL               (1ULL << MCSR8_L3DINCL_SHIFT)
+#define  MCSR8_L3DPRIV_SHIFT         15
+#define  MCSR8_L3DPRIV               (1ULL << MCSR8_L3DPRIV_SHIFT)
+#define  MCSR8_L3DPRE_SHIFT          14
+#define  MCSR8_L3DPRE                (1ULL << MCSR8_L3DPRE_SHIFT)
+#define  MCSR8_L3IUINCL_SHIFT        13
+#define  MCSR8_L3IUINCL              (1ULL << MCSR8_L3IUINCL_SHIFT)
+#define  MCSR8_L3IUPRIV_SHIFT        12
+#define  MCSR8_L3IUPRIV              (1ULL << MCSR8_L3IUPRIV_SHIFT)
+#define  MCSR8_L3IUUNIFY_SHIFT       11
+#define  MCSR8_L3IUUNIFY             (1ULL << MCSR8_L3IUUNIFY_SHIFT)
+#define  MCSR8_L3IUPRE_SHIFT         10
+#define  MCSR8_L3IUPRE               (1ULL << MCSR8_L3IUPRE_SHIFT)
+#define  MCSR8_L2DINCL_SHIFT         9
+#define  MCSR8_L2DINCL               (1ULL << MCSR8_L2DINCL_SHIFT)
+#define  MCSR8_L2DPRIV_SHIFT         8
+#define  MCSR8_L2DPRIV               (1ULL << MCSR8_L2DPRIV_SHIFT)
+#define  MCSR8_L2DPRE_SHIFT          7
+#define  MCSR8_L2DPRE                (1ULL << MCSR8_L2DPRE_SHIFT)
+#define  MCSR8_L2IUINCL_SHIFT        6
+#define  MCSR8_L2IUINCL              (1ULL << MCSR8_L2IUINCL_SHIFT)
+#define  MCSR8_L2IUPRIV_SHIFT        5
+#define  MCSR8_L2IUPRIV              (1ULL << MCSR8_L2IUPRIV_SHIFT)
+#define  MCSR8_L2IUUNIFY_SHIFT       4
+#define  MCSR8_L2IUUNIFY             (1ULL << MCSR8_L2IUUNIFY_SHIFT)
+#define  MCSR8_L2IUPRE_SHIFT         3
+#define  MCSR8_L2IUPRE               (1ULL << MCSR8_L2IUPRE_SHIFT)
+#define  MCSR8_L1DPRE_SHIFT          2
+#define  MCSR8_L1DPRE                (1ULL << MCSR8_L1DPRE_SHIFT)
+#define  MCSR8_L1IUUNIFY_SHIFT       1
+#define  MCSR8_L1IUUNIFY             (1ULL << MCSR8_L1IUUNIFY_SHIFT)
+#define  MCSR8_L1IUPRE_SHIFT         0
+#define  MCSR8_L1IUPRE               (1ULL << MCSR8_L1IUPRE_SHIFT)
+
+#define LOONGARCH_CSR_MCSR9          0xc9 /* CPUCFG18 and CPUCFG19 */
+#define  MCSR9_L2U_SIZE_SHIFT        56
+#define  MCSR9_L2U_SIZE_WIDTH        7
+#define  MCSR9_L2U_SIZE              (0x7fULL << MCSR9_L2U_SIZE_SHIFT)
+#define  MCSR9_L2U_IDX_SHIFT         48
+#define  MCSR9_L2U_IDX_WIDTH         8
+#define  MCSR9_L2U_IDX               (0xffULL << MCSR9_IDX_LOG_SHIFT)
+#define  MCSR9_L2U_WAY_SHIFT         32
+#define  MCSR9_L2U_WAY_WIDTH         16
+#define  MCSR9_L2U_WAY               (0xffffULL << MCSR9_L2U_WAY_SHIFT)
+#define  MCSR9_L1D_SIZE_SHIFT        24
+#define  MCSR9_L1D_SIZE_WIDTH        7
+#define  MCSR9_L1D_SIZE              (0x7fULL << MCSR9_L1D_SIZE_SHIFT)
+#define  MCSR9_L1D_IDX_SHIFT         16
+#define  MCSR9_L1D_IDX_WIDTH         8
+#define  MCSR9_L1D_IDX               (0xffULL << MCSR9_L1D_IDX_SHIFT)
+#define  MCSR9_L1D_WAY_SHIFT         0
+#define  MCSR9_L1D_WAY_WIDTH         16
+#define  MCSR9_L1D_WAY               (0xffffULL << MCSR9_L1D_WAY_SHIFT)
+
+#define LOONGARCH_CSR_MCSR10         0xca /* CPUCFG20 */
+#define  MCSR10_L3U_SIZE_SHIFT       24
+#define  MCSR10_L3U_SIZE_WIDTH       7
+#define  MCSR10_L3U_SIZE             (0x7fULL << MCSR10_L3U_SIZE_SHIFT)
+#define  MCSR10_L3U_IDX_SHIFT        16
+#define  MCSR10_L3U_IDX_WIDTH        8
+#define  MCSR10_L3U_IDX              (0xffULL << MCSR10_L3U_IDX_SHIFT)
+#define  MCSR10_L3U_WAY_SHIFT        0
+#define  MCSR10_L3U_WAY_WIDTH        16
+#define  MCSR10_L3U_WAY              (0xffffULL << MCSR10_L3U_WAY_SHIFT)
+
+#define LOONGARCH_CSR_MCSR24         0xf0 /* CPUCFG48 */
+#define  MCSR24_RAMCG_SHIFT          3
+#define  MCSR24_RAMCG                (1ULL << MCSR24_RAMCG_SHIFT)
+#define  MCSR24_VFPUCG_SHIFT         2
+#define  MCSR24_VFPUCG               (1ULL << MCSR24_VFPUCG_SHIFT)
+#define  MCSR24_NAPEN_SHIFT          1
+#define  MCSR24_NAPEN                (1ULL << MCSR24_NAPEN_SHIFT)
+#define  MCSR24_MCSRLOCK_SHIFT       0
+#define  MCSR24_MCSRLOCK             (1ULL << MCSR24_MCSRLOCK_SHIFT)
+
+/* Uncached accelerate windows registers  */
+#define LOONGARCH_CSR_UCAWIN         0x100 /* read only info */
+#define LOONGARCH_CSR_UCAWIN0_LO     0x102 /* win0 low */
+#define LOONGARCH_CSR_UCAWIN0_HI     0x103 /* win0 high */
+#define LOONGARCH_CSR_UCAWIN1_LO     0x104 /* win1 low */
+#define LOONGARCH_CSR_UCAWIN1_HI     0x105 /* win1 high */
+#define LOONGARCH_CSR_UCAWIN2_LO     0x106 /* win2 low */
+#define LOONGARCH_CSR_UCAWIN2_HI     0x107 /* win2 high */
+#define LOONGARCH_CSR_UCAWIN3_LO     0x108 /* win3 low */
+#define LOONGARCH_CSR_UCAWIN3_HI     0x109 /* win3 high */
+
+/* Direct map windows registers */
+#define LOONGARCH_CSR_DMWIN0         0x180 /* direct map win0: MEM & IF */
+#define LOONGARCH_CSR_DMWIN1         0x181 /* direct map win1: MEM & IF */
+#define LOONGARCH_CSR_DMWIN2         0x182 /* direct map win2: MEM */
+#define LOONGARCH_CSR_DMWIN3         0x183 /* direct map win3: MEM */
+
+/* Performance counter registers */
+#define LOONGARCH_CSR_PERFCTRL0      0x200 /* perf event 0 config */
+#define LOONGARCH_CSR_PERFCNTR0      0x201 /* perf event 0 count value */
+#define LOONGARCH_CSR_PERFCTRL1      0x202 /* perf event 1 config */
+#define LOONGARCH_CSR_PERFCNTR1      0x203 /* perf event 1 count value */
+#define LOONGARCH_CSR_PERFCTRL2      0x204 /* perf event 2 config */
+#define LOONGARCH_CSR_PERFCNTR2      0x205 /* perf event 2 count value */
+#define LOONGARCH_CSR_PERFCTRL3      0x206 /* perf event 3 config */
+#define LOONGARCH_CSR_PERFCNTR3      0x207 /* perf event 3 count value */
+#define  CSR_PERFCTRL_PLV0           (1ULL << 16)
+#define  CSR_PERFCTRL_PLV1           (1ULL << 17)
+#define  CSR_PERFCTRL_PLV2           (1ULL << 18)
+#define  CSR_PERFCTRL_PLV3           (1ULL << 19)
+#define  CSR_PERFCTRL_IE             (1ULL << 20)
+#define  CSR_PERFCTRL_EVENT          0x3ff
+
+/* CSR register */
+#define CPU_LOONGARCH_CSR    \
+    uint64_t CSR_CRMD;       \
+    uint64_t CSR_PRMD;       \
+    uint64_t CSR_EUEN;       \
+    uint64_t CSR_MISC;       \
+    uint64_t CSR_ECFG;       \
+    uint64_t CSR_ESTAT;      \
+    uint64_t CSR_ERA;        \
+    uint64_t CSR_BADV;       \
+    uint64_t CSR_BADI;       \
+    uint64_t CSR_EEPN;       \
+    uint64_t CSR_TLBIDX;     \
+    uint64_t CSR_TLBEHI;     \
+    uint64_t CSR_TLBELO0;    \
+    uint64_t CSR_TLBELO1;    \
+    uint64_t CSR_ASID;       \
+    uint64_t CSR_PGDL;       \
+    uint64_t CSR_PGDH;       \
+    uint64_t CSR_PGD;        \
+    uint64_t CSR_PWCTL0;     \
+    uint64_t CSR_PWCTL1;     \
+    uint64_t CSR_STLBPGSIZE; \
+    uint64_t CSR_RVACFG;     \
+    uint64_t CSR_CPUID;      \
+    uint64_t CSR_PRCFG1;     \
+    uint64_t CSR_PRCFG2;     \
+    uint64_t CSR_PRCFG3;     \
+    uint64_t CSR_KS0;        \
+    uint64_t CSR_KS1;        \
+    uint64_t CSR_KS2;        \
+    uint64_t CSR_KS3;        \
+    uint64_t CSR_KS4;        \
+    uint64_t CSR_KS5;        \
+    uint64_t CSR_KS6;        \
+    uint64_t CSR_KS7;        \
+    uint64_t CSR_KS8;        \
+    uint64_t CSR_TMID;       \
+    uint64_t CSR_TCFG;       \
+    uint64_t CSR_TVAL;       \
+    uint64_t CSR_CNTC;       \
+    uint64_t CSR_TINTCLR;    \
+    uint64_t CSR_LLBIT;      \
+    uint64_t CSR_IMPCTL1;    \
+    uint64_t CSR_IMPCTL2;    \
+    uint64_t CSR_GNMI;       \
+    uint64_t CSR_TLBRENT;    \
+    uint64_t CSR_TLBRBADV;   \
+    uint64_t CSR_TLBRERA;    \
+    uint64_t CSR_TLBRSAVE;   \
+    uint64_t CSR_TLBRELO0;   \
+    uint64_t CSR_TLBRELO1;   \
+    uint64_t CSR_TLBREHI;    \
+    uint64_t CSR_TLBRPRMD;   \
+    uint64_t CSR_ERRCTL;     \
+    uint64_t CSR_ERRINFO;    \
+    uint64_t CSR_ERRINFO1;   \
+    uint64_t CSR_ERRENT;     \
+    uint64_t CSR_ERRERA;     \
+    uint64_t CSR_ERRSAVE;    \
+    uint64_t CSR_CTAG;       \
+    uint64_t CSR_MCSR0;      \
+    uint64_t CSR_MCSR1;      \
+    uint64_t CSR_MCSR2;      \
+    uint64_t CSR_MCSR3;      \
+    uint64_t CSR_MCSR8;      \
+    uint64_t CSR_MCSR9;      \
+    uint64_t CSR_MCSR10;     \
+    uint64_t CSR_MCSR24;     \
+    uint64_t CSR_UCAWIN;     \
+    uint64_t CSR_UCAWIN0_LO; \
+    uint64_t CSR_UCAWIN0_HI; \
+    uint64_t CSR_UCAWIN1_LO; \
+    uint64_t CSR_UCAWIN1_HI; \
+    uint64_t CSR_UCAWIN2_LO; \
+    uint64_t CSR_UCAWIN2_HI; \
+    uint64_t CSR_UCAWIN3_LO; \
+    uint64_t CSR_UCAWIN3_HI; \
+    uint64_t CSR_DMWIN0;     \
+    uint64_t CSR_DMWIN1;     \
+    uint64_t CSR_DMWIN2;     \
+    uint64_t CSR_DMWIN3;     \
+    uint64_t CSR_PERFCTRL0;  \
+    uint64_t CSR_PERFCNTR0;  \
+    uint64_t CSR_PERFCTRL1;  \
+    uint64_t CSR_PERFCNTR1;  \
+    uint64_t CSR_PERFCTRL2;  \
+    uint64_t CSR_PERFCNTR2;  \
+    uint64_t CSR_PERFCTRL3;  \
+    uint64_t CSR_PERFCNTR3;  \
+
+#endif
-- 
1.8.3.1



  parent reply	other threads:[~2021-06-28 12:06 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-28 12:04 [PATCH 00/20] Add LoongArch linux-user emulation support Song Gao
2021-06-28 12:04 ` [PATCH 01/20] target/loongarch: Add README Song Gao
2021-06-28 18:40   ` Philippe Mathieu-Daudé
2021-06-29  7:33     ` Song Gao
2021-06-29 11:13   ` Alex Bennée
2021-06-30  1:09     ` Song Gao
2021-06-29 11:52   ` Peter Maydell
2021-06-30  1:22     ` Song Gao
2021-06-28 12:04 ` Song Gao [this message]
2021-06-28 12:04 ` [PATCH 03/20] target/loongarch: Add core definition Song Gao
2021-06-28 18:44   ` Philippe Mathieu-Daudé
2021-06-29  7:39     ` Song Gao
2021-06-28 12:04 ` [PATCH 04/20] target/loongarch: Add interrupt handling support Song Gao
2021-06-28 12:04 ` [PATCH 05/20] target/loongarch: Add memory management support Song Gao
2021-06-28 12:04 ` [PATCH 06/20] target/loongarch: Add main translation routines Song Gao
2021-06-28 18:46   ` Philippe Mathieu-Daudé
2021-06-29  8:50     ` Song Gao
2021-06-29 12:26       ` Alex Bennée
2021-06-30  1:04         ` Song Gao
2021-06-28 12:04 ` [PATCH 07/20] target/loongarch: Add fixed point arithmetic instruction translation Song Gao
2021-07-01 20:31   ` Philippe Mathieu-Daudé
2021-07-02  8:15     ` Song Gao
2021-07-02  8:51       ` Philippe Mathieu-Daudé
2021-07-02  9:16         ` Song Gao
2021-07-02 14:46         ` Richard Henderson
2021-07-05  0:45           ` Song Gao
2021-06-28 12:04 ` [PATCH 08/20] target/loongarch: Add fixed point shift " Song Gao
2021-06-28 12:04 ` [PATCH 09/20] target/loongarch: Add fixed point bit " Song Gao
2021-06-28 12:04 ` [PATCH 10/20] target/loongarch: Add fixed point load/store " Song Gao
2021-06-28 12:04 ` [PATCH 11/20] target/loongarch: Add fixed point atomic " Song Gao
2021-06-28 12:04 ` [PATCH 12/20] target/loongarch: Add fixed point extra " Song Gao
2021-06-28 12:04 ` [PATCH 13/20] target/loongarch: Add floating point arithmetic " Song Gao
2021-06-28 12:04 ` [PATCH 14/20] target/loongarch: Add floating point comparison " Song Gao
2021-06-28 12:04 ` [PATCH 15/20] target/loongarch: Add floating point conversion " Song Gao
2021-06-28 12:04 ` [PATCH 16/20] target/loongarch: Add floating point move " Song Gao
2021-06-28 12:04 ` [PATCH 17/20] target/loongarch: Add floating point load/store " Song Gao
2021-06-28 12:04 ` [PATCH 18/20] target/loongarch: Add branch " Song Gao
2021-06-28 12:04 ` [PATCH 19/20] target/loongarch: Add disassembler Song Gao
2021-06-28 12:04 ` [PATCH 20/20] target/loongarch: Add linux-user emulation support Song Gao
2021-06-29 13:42   ` Peter Maydell
2021-06-30  1:41     ` maobibo
2021-06-30  9:36       ` Alex Bennée
2021-07-01  1:07         ` maobibo
2021-07-01  6:47           ` Thomas Huth
2021-07-01  7:08             ` maobibo
2021-07-01 10:35             ` Alex Bennée
2021-07-01 10:53               ` Peter Maydell
2021-07-01 12:05                 ` maobibo
2021-06-30  1:59     ` Song Gao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1624881885-31692-3-git-send-email-gaosong@loongson.cn \
    --to=gaosong@loongson.cn \
    --cc=alistair.francis@wdc.com \
    --cc=laurent@vivier.eu \
    --cc=maobibo@loongson.cn \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.