1 Star 0 Fork 19

Jingwiw/memleax

forked from src-openEuler/memleax 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0001-add-loongarch64-support.patch 1.99 KB
一键复制 编辑 原始数据 按行查看 历史
dpd 提交于 2022-12-14 03:20 . add loongarch64 support
From e82e3332d36a97a86cc1e23e7f3c6e953a1ada2c Mon Sep 17 00:00:00 2001
From: doupengda <[email protected]>
Date: Wed, 14 Dec 2022 02:58:36 +0000
Subject: [PATCH] add loongarch64 support
---
configure | 6 +-
machines.h | 31 +++++++
tags | 252 +++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 288 insertions(+), 1 deletion(-)
create mode 100644 tags
diff --git a/configure b/configure
index 7c7280f..60fd170 100755
--- a/configure
+++ b/configure
@@ -59,9 +59,13 @@ case `uname -m` in
machine="aarch64"
CFLAGS="$CFLAGS -DMLX_AARCH64"
;;
+'loongarch64')
+ machine="loongarch64"
+ CFLAGS="$CFLAGS -DMLX_LOONGARCH64"
+ ;;
*)
echo "Error: unsupported machine: `uname -m`."
- echo "Only x86, x86_64, arm, and aarch64 are supported."
+ echo "Only x86, x86_64, arm, loongarch and aarch64 are supported."
exit 2
;;
esac
diff --git a/machines.h b/machines.h
index cbbe69d..4472bd1 100644
--- a/machines.h
+++ b/machines.h
@@ -87,6 +87,37 @@ static inline int is_breakpoint(pid_t pid, uintptr_t address)
return (ptrace_get_data(pid, address) & 0xFF) == 0xCC;
}
+#elif defined(MLX_LOONGARCH64)
+static inline uintptr_t call_return_address(pid_t pid, registers_info_t *regs)
+{
+ return ptrace_get_data(pid, regs->gpr[3]);
+}
+static inline uintptr_t call_return_value(registers_info_t *regs)
+{
+ return regs->gpr[1];
+}
+static inline uintptr_t call_arg1(pid_t pid, registers_info_t *regs)
+{
+ return regs->gpr[6];
+}
+static inline uintptr_t call_arg2(pid_t pid, registers_info_t *regs)
+{
+ return regs->gpr[7];
+}
+static inline uintptr_t pc_unwind(pid_t pid, registers_info_t *regs)
+{
+ return regs->pc;
+}
+static inline void set_breakpoint(pid_t pid, uintptr_t address, uintptr_t code)
+{
+ ptrace_set_data(pid, address, (code & 0x002a0000));
+}
+static inline int is_breakpoint(pid_t pid, uintptr_t address)
+{
+ return ptrace_get_data(pid, address) == 0x002a0000;
+}
+
+
#elif defined(MLX_ARMv7)
static inline uintptr_t call_return_address(pid_t pid, registers_info_t *regs)
{
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/Jingwiw/memleax.git
[email protected]:Jingwiw/memleax.git
Jingwiw
memleax
memleax
master

搜索帮助