Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37717338
en ru br
ALT Linux repos
S:6.0.0-alt7.1

Group :: Development/Tools
RPM: papi

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

Patch: papi-e2k.patch
Download


diff --git a/papi/src/linux-context.h b/papi/src/linux-context.h
index 858c4e9..1bb1931 100644
--- a/papi/src/linux-context.h
+++ b/papi/src/linux-context.h
@@ -27,6 +27,8 @@ typedef ucontext_t hwd_ucontext_t;
 #define OVERFLOW_ADDRESS(ctx) ctx.ucontext->uc_mcontext.uc_regs->gregs[REG_NIP]
 #elif defined(__powerpc64__)
 #define OVERFLOW_ADDRESS(ctx) ctx.ucontext->uc_mcontext.regs->nip
+#elif defined(__e2k__)
+#define OVERFLOW_ADDRESS(ctx) ctx.ucontext->uc_mcontext.cr0_hi
 #elif defined(__sparc__)
 #define OVERFLOW_ADDRESS(ctx) ((struct sigcontext *)ctx.ucontext)->si_regs.pc
 #elif defined(__arm__)
diff --git a/papi/src/linux-lock.h b/papi/src/linux-lock.h
index ac3aa7c..02991b1 100644
--- a/papi/src/linux-lock.h
+++ b/papi/src/linux-lock.h
@@ -115,6 +115,17 @@ do {                                                    \
   } while(retval != (unsigned int)MUTEX_CLOSED);        \
 } while (0)
 
+/*****************/
+/* Elbrus 2000   */
+/*****************/
+
+#elif defined(__e2k__)
+#define _papi_hwd_lock(lck) do { \
+  while(__sync_lock_test_and_set(&_papi_hwd_lock_data[lck], 1)) \
+    __asm__ __volatile__ ("nop"); \
+} while(0)
+#define _papi_hwd_unlock(lck) __sync_lock_release(&_papi_hwd_lock_data[lck])
+
 /*****************/
 /* SPARC         */
 /*****************/
diff --git a/papi/src/linux-timer.c b/papi/src/linux-timer.c
index 71b4aa0..4706519 100644
--- a/papi/src/linux-timer.c
+++ b/papi/src/linux-timer.c
@@ -214,6 +214,18 @@ get_cycles( void )
 	return ret;
 }
 
+/************************/
+/* e2k get_cycles()     */
+/************************/
+
+#elif defined(__e2k__)
+#include <x86intrin.h>
+static inline long long
+get_cycles( void )
+{
+	return __rdtsc();
+}
+
 /************************/
 /* SPARC get_cycles()   */
 /************************/
diff --git a/papi/src/mb.h b/papi/src/mb.h
index 1019691..d04549d 100644
--- a/papi/src/mb.h
+++ b/papi/src/mb.h
@@ -39,6 +39,9 @@
 #elif defined(__aarch64__)
 #define rmb()           asm volatile("dmb ld" ::: "memory")
 
+#elif defined(__e2k__)
+#define rmb() __sync_synchronize()
+
 #elif defined(__mips__)
 #define rmb()           asm volatile(                                   \
                                 ".set   mips2\n\t"                      \
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin