代码拉取完成,页面将自动刷新
同步操作将从 src-openEuler/papi 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
diff -ruN papi-6.0.0/src/libpfm4/config.mk papi/src/libpfm4/config.mk
--- papi-6.0.0/src/libpfm4/config.mk 2022-10-29 13:04:32.000000000 +0800
+++ papi/src/libpfm4/config.mk 2023-01-15 21:16:16.101680541 +0800
@@ -177,6 +177,9 @@
CONFIG_PFMLIB_CELL=y
endif
+ifeq ($(ARCH),riscv64)
+CONFIG_PFMLIB_ARCH_RISCV64=y
+endif
#
# you shouldn't have to touch anything beyond this point
diff -ruN papi-6.0.0/src/linux-context.h papi/src/linux-context.h
--- papi-6.0.0/src/linux-context.h 2022-10-29 13:04:32.000000000 +0800
+++ papi/src/linux-context.h 2023-01-15 21:16:16.101680541 +0800
@@ -37,6 +37,8 @@
#define OVERFLOW_ADDRESS(ctx) ctx.ucontext->uc_mcontext.pc
#elif defined(__hppa__)
#define OVERFLOW_ADDRESS(ctx) ctx.ucontext->uc_mcontext.sc_iaoq[0]
+#elif defined(__riscv)
+#define OVERFLOW_ADDRESS(ctx) ctx.ucontext->uc_mcontext.__gregs[REG_PC]
#else
#error "OVERFLOW_ADDRESS() undefined!"
#endif
diff -ruN papi-6.0.0/src/linux-timer.c papi/src/linux-timer.c
--- papi-6.0.0/src/linux-timer.c 2022-10-29 13:04:32.000000000 +0800
+++ papi/src/linux-timer.c 2023-01-15 21:16:16.101680541 +0800
@@ -288,6 +288,27 @@
return 0;
}
+/************************/
+/* riscv64 get_cycles() */
+/************************/
+
+#elif defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 64
+static inline long long
+get_cycles( void )
+{
+ register unsigned long ret;
+
+ __asm__ __volatile__ ("rdcycle %0" : "=r" (ret));
+
+ return ret;
+}
+
+/*
+ * TODO: riscv32 implementation can be done following example in:
+ * Volume I: RISC-V User-Level ISA V2.2
+ * 2.8 Control and Status Register Instructions
+ * Timers and Counters
+ */
#elif !defined(HAVE_GETTIMEOFDAY) && !defined(HAVE_CLOCK_GETTIME)
#error "No get_cycles support for this architecture. "
diff -ruN papi-6.0.0/src/mb.h papi/src/mb.h
--- papi-6.0.0/src/mb.h 2022-10-29 13:04:32.000000000 +0800
+++ papi/src/mb.h 2023-01-15 21:16:16.101680541 +0800
@@ -39,6 +39,9 @@
#elif defined(__aarch64__)
#define rmb() asm volatile("dmb ld" ::: "memory")
+#elif defined(__riscv)
+#define rmb() asm volatile("fence ir, ir" ::: "memory")
+
#elif defined(__mips__)
#define rmb() asm volatile( \
".set mips2\n\t" \
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。