From 3b1c60cc4ea737ff151977dbcd164c5e2eb859fb Mon Sep 17 00:00:00 2001 From: SSE4 Date: Wed, 27 Jan 2021 11:15:56 +0300 Subject: Add support for Elbrus 2000 (e2k) --- cmake/PCFromUContext.cmake | 1 + m4/pc_from_ucontext.m4 | 1 + src/base/basictypes.h | 2 ++ src/malloc_hook_mmap_linux.h | 3 ++- 4 files changed, 6 insertions(+), 1 deletion(-) 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, -- cgit v1.2.1