summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSSE4 <tomskside@gmail.com>2021-01-27 11:15:56 +0300
committerAliaksey Kandratsenka <alkondratenko@gmail.com>2021-01-30 13:45:18 -0800
commit3b1c60cc4ea737ff151977dbcd164c5e2eb859fb (patch)
tree941217737091e5f48f1e90afd0e64e368f27aac0
parentc5747615da78f7c2d91112f2a6b6b4da4f18540a (diff)
downloadgperftools-3b1c60cc4ea737ff151977dbcd164c5e2eb859fb.tar.gz
Add support for Elbrus 2000 (e2k)
-rw-r--r--cmake/PCFromUContext.cmake1
-rw-r--r--m4/pc_from_ucontext.m41
-rw-r--r--src/base/basictypes.h2
-rw-r--r--src/malloc_hook_mmap_linux.h3
4 files changed, 6 insertions, 1 deletions
diff --git a/cmake/PCFromUContext.cmake b/cmake/PCFromUContext.cmake
index e2db2e3..d231124 100644
--- a/cmake/PCFromUContext.cmake
+++ b/cmake/PCFromUContext.cmake
@@ -29,6 +29,7 @@ macro(pc_from_ucontext variable)
"uc_mcontext.psw.addr" # Linux (s390)
"uc_mcontext.gregs[R15]" # Linux (arm old [untested])
"uc_mcontext.arm_pc" # Linux (arm arch 5)
+ "uc_mcontext.cr0_hi" # Linux (e2k)
"uc_mcontext.gp_regs[PT_NIP]" # Suse SLES 11 (ppc64)
"uc_mcontext.mc_eip" # FreeBSD (i386)
"uc_mcontext.mc_rip" # FreeBSD (x86_64 [untested])
diff --git a/m4/pc_from_ucontext.m4 b/m4/pc_from_ucontext.m4
index 88c8abf..159b01d 100644
--- a/m4/pc_from_ucontext.m4
+++ b/m4/pc_from_ucontext.m4
@@ -32,6 +32,7 @@ AC_DEFUN([AC_PC_FROM_UCONTEXT],
pc_fields="$pc_fields uc_mcontext.psw.addr" # Linux (s390)
pc_fields="$pc_fields uc_mcontext.gregs[[R15]]" # Linux (arm old [untested])
pc_fields="$pc_fields uc_mcontext.arm_pc" # Linux (arm arch 5)
+ pc_fields="$pc_fields uc_mcontext.cr0_hi" # Linux (e2k)
pc_fields="$pc_fields uc_mcontext.gp_regs[[PT_NIP]]" # Suse SLES 11 (ppc64)
pc_fields="$pc_fields uc_mcontext.mc_eip" # FreeBSD (i386)
pc_fields="$pc_fields uc_mcontext.mc_srr0" # FreeBSD (powerpc, powerpc64)
diff --git a/src/base/basictypes.h b/src/base/basictypes.h
index 5512906..ea87a6d 100644
--- a/src/base/basictypes.h
+++ b/src/base/basictypes.h
@@ -385,6 +385,8 @@ class AssignAttributeStartEnd {
# define CACHELINE_ALIGNED __attribute__((aligned(256)))
# elif (defined(__riscv) && __riscv_xlen == 64)
# define CACHELINE_ALIGNED __attribute__((aligned(64)))
+# elif (defined(__e2k__))
+# define CACHELINE_ALIGNED __attribute__((aligned(64)))
# else
# error Could not determine cache line length - unknown architecture
# endif
diff --git a/src/malloc_hook_mmap_linux.h b/src/malloc_hook_mmap_linux.h
index fb93b8a..927c533 100644
--- a/src/malloc_hook_mmap_linux.h
+++ b/src/malloc_hook_mmap_linux.h
@@ -56,7 +56,8 @@
|| defined(__PPC64__) \
|| defined(__aarch64__) \
|| (defined(_MIPS_SIM) && (_MIPS_SIM == _ABI64 || _MIPS_SIM == _ABIN32)) \
- || defined(__s390__) || (defined(__riscv) && __riscv_xlen == 64)
+ || defined(__s390__) || (defined(__riscv) && __riscv_xlen == 64) \
+ || defined(__e2k__)
static inline void* do_mmap64(void *start, size_t length,
int prot, int flags,