فهرست منبع

application: add `iregion_base` entry in `CPU_INFO_Group` in cpuinfo

Signed-off-by: qiujiandong <qiujiandong@nucleisys.com>
qiujiandong 3 ماه پیش
والد
کامیت
13fc76eefe
3فایلهای تغییر یافته به همراه3 افزوده شده و 1 حذف شده
  1. 1 1
      application/baremetal/cpuinfo/cpuinfo.c
  2. 1 0
      application/baremetal/cpuinfo/cpuinfo.h
  3. 1 0
      application/baremetal/cpuinfo/main.c

+ 1 - 1
application/baremetal/cpuinfo/cpuinfo.c

@@ -335,7 +335,7 @@ static void show_iregion(const CPU_INFO_Group *cpuinfo)
 
     CIF_PRINTF("         IREGION:");
     U64_CSR_MIRGB_INFO_Type mirgb = cpuinfo->mirgbinfo;
-    unsigned long iregion_base = mirgb.d & (~0x3FF);
+    unsigned long iregion_base = cpuinfo->iregion_base;
     CIF_PRINTF(" %#lx", iregion_base);
     CIF_PRINTF(" %s\r\n", cvt_size(POW2(mirgb.b.iregion_size + 9)));
     CIF_PRINTF("                  Unit        Size        Address\r\n");

+ 1 - 0
application/baremetal/cpuinfo/cpuinfo.h

@@ -348,6 +348,7 @@ typedef struct {
     U32_CSR_MDCFG_INFO_Type mdcfginfo;
     U32_CSR_MTLBCFG_INFO_Type mtlbcfginfo;
     U64_CSR_MIRGB_INFO_Type mirgbinfo;
+    uint64_t iregion_base;
     U64_CSR_MPPICFG_INFO_Type mppicfginfo;
     U64_CSR_MFIOCFG_INFO_Type mfiocfginfo;
     IINFO_Type *iinfo;                           /*!< IREGION INFO memory pointer */

+ 1 - 0
application/baremetal/cpuinfo/main.c

@@ -58,6 +58,7 @@ int main(void)
         cpuinfo.mirgbinfo.d = (uint64_t)__RV_CSR_READ(CSR_MIRGB_INFO);
         unsigned long iregion_base = cpuinfo.mirgbinfo.d & (~0x3FFULL);
         cpuinfo.iinfo = (IINFO_Type *)iregion_base;
+        cpuinfo.iregion_base = iregion_base;
         if (mcfg.b.smp) {
             cpuinfo.smpcfg.d =
                 *(uint32_t *)(iregion_base + CPUINFO_IRG_SMP_OFS + 0x4);