All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greentime Hu <green.hu@gmail.com>
To: greentime@andestech.com, linux-kernel@vger.kernel.org,
	arnd@arndb.de, linux-arch@vger.kernel.org, tglx@linutronix.de,
	jason@lakedaemon.net, marc.zyngier@arm.com, robh+dt@kernel.org,
	netdev@vger.kernel.org, deanbo422@gmail.com,
	devicetree@vger.kernel.org, viro@zeniv.linux.org.uk,
	dhowells@redhat.com, will.deacon@arm.com,
	daniel.lezcano@linaro.org, linux-serial@vger.kernel.org,
	geert.uytterhoeven@gmail.com, linus.walleij@linaro.org,
	mark.rutland@arm.com, greg@kroah.com, ren_guo@c-sky.com,
	rdunlap@infradead.org, davem@davemloft.net, jonas@southpole.se,
	stefan.kristiansson@saunalahti.fi, shorne@gmail.com
Cc: green.hu@gmail.com, Vincent Chen <vincentc@andestech.com>
Subject: [PATCH v6 22/36] nds32: Debugging support
Date: Mon, 15 Jan 2018 13:53:30 +0800	[thread overview]
Message-ID: <65ae3b5b7eabe8680857b1821c72127f611c950b.1515766253.git.green.hu@gmail.com> (raw)
In-Reply-To: <cover.1515766253.git.green.hu@gmail.com>
In-Reply-To: <cover.1515766253.git.green.hu@gmail.com>

From: Greentime Hu <greentime@andestech.com>

This patch adds ptrace support.

Signed-off-by: Vincent Chen <vincentc@andestech.com>
Signed-off-by: Greentime Hu <greentime@andestech.com>
---
 arch/nds32/include/uapi/asm/ptrace.h |   25 +++
 arch/nds32/kernel/ptrace.c           |  311 ++++++++++++++++++++++++++++++++++
 2 files changed, 336 insertions(+)
 create mode 100644 arch/nds32/include/uapi/asm/ptrace.h
 create mode 100644 arch/nds32/kernel/ptrace.c

diff --git a/arch/nds32/include/uapi/asm/ptrace.h b/arch/nds32/include/uapi/asm/ptrace.h
new file mode 100644
index 0000000..358c99e
--- /dev/null
+++ b/arch/nds32/include/uapi/asm/ptrace.h
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (C) 2005-2017 Andes Technology Corporation
+
+#ifndef __UAPI_ASM_NDS32_PTRACE_H
+#define __UAPI_ASM_NDS32_PTRACE_H
+
+#ifndef __ASSEMBLY__
+
+/*
+ * User structures for general purpose register.
+ */
+struct user_pt_regs {
+	long uregs[26];
+	long fp;
+	long gp;
+	long lp;
+	long sp;
+	long ipc;
+	long lb;
+	long le;
+	long lc;
+	long syscallno;
+};
+#endif
+#endif
diff --git a/arch/nds32/kernel/ptrace.c b/arch/nds32/kernel/ptrace.c
new file mode 100644
index 0000000..0e18564
--- /dev/null
+++ b/arch/nds32/kernel/ptrace.c
@@ -0,0 +1,311 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (C) 2005-2017 Andes Technology Corporation
+
+#include <linux/kernel.h>
+#include <linux/sched.h>
+#include <linux/mm.h>
+#include <linux/smp.h>
+#include <linux/ptrace.h>
+#include <linux/user.h>
+#include <linux/security.h>
+#include <linux/init.h>
+#include <linux/uaccess.h>
+#include <linux/regset.h>
+#include <linux/tracehook.h>
+#include <linux/elf.h>
+#include <linux/sched/task_stack.h>
+
+#include <asm/pgtable.h>
+
+enum nds32_regset {
+	REGSET_GPR,
+};
+
+static int gpr_get(struct task_struct *target,
+		   const struct user_regset *regset,
+		   unsigned int pos, unsigned int count,
+		   void *kbuf, void __user * ubuf)
+{
+	struct user_pt_regs *uregs = &task_pt_regs(target)->user_regs;
+	return user_regset_copyout(&pos, &count, &kbuf, &ubuf, uregs, 0, -1);
+}
+
+static int gpr_set(struct task_struct *target, const struct user_regset *regset,
+		   unsigned int pos, unsigned int count,
+		   const void *kbuf, const void __user * ubuf)
+{
+	int err;
+	struct user_pt_regs newregs = task_pt_regs(target)->user_regs;
+
+	err = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &newregs, 0, -1);
+	if (err)
+		return err;
+
+	task_pt_regs(target)->user_regs = newregs;
+	return 0;
+}
+
+static const struct user_regset nds32_regsets[] = {
+	[REGSET_GPR] = {
+			.core_note_type = NT_PRSTATUS,
+			.n = sizeof(struct user_pt_regs) / sizeof(u32),
+			.size = sizeof(u32),
+			.align = sizeof(u32),
+			.get = gpr_get,
+			.set = gpr_set}
+};
+
+static const struct user_regset_view nds32_user_view = {
+	.name = "nds32",.e_machine = EM_NDS32,
+	.regsets = nds32_regsets,.n = ARRAY_SIZE(nds32_regsets)
+};
+
+const struct user_regset_view *task_user_regset_view(struct task_struct *task)
+{
+	return &nds32_user_view;
+}
+
+/* get_user_reg()
+ *
+ * This routine will get a word off of the processes privileged stack.
+ * the offset is how far from the base addr as stored in the THREAD.
+ * this routine assumes that all the privileged stacks are in our
+ * data space.
+ */
+static inline unsigned int get_user_reg(struct task_struct *task, int offset)
+{
+	return task_pt_regs(task)->uregs[offset];
+}
+
+/* put_user_reg()
+ *
+ * this routine will put a word on the processes privileged stack.
+ * the offset is how far from the base addr as stored in the THREAD.
+ * this routine assumes that all the privileged stacks are in our
+ * data space.
+ */
+static inline int put_user_reg(struct task_struct *task, int offset, long data)
+{
+	struct pt_regs newregs, *regs = task_pt_regs(task);
+	int ret = -EINVAL;
+
+	newregs = *regs;
+	newregs.uregs[offset] = data;
+
+	if (valid_user_regs(&newregs)) {
+		regs->uregs[offset] = data;
+		ret = 0;
+	}
+
+	return ret;
+}
+
+/*
+ * Called by kernel/ptrace.c when detaching..
+ *
+ * Make sure the single step bit is not set.
+ */
+void ptrace_disable(struct task_struct *child)
+{
+	user_disable_single_step(child);
+}
+
+static void fill_sigtrap_info(struct task_struct *tsk,
+			      struct pt_regs *regs,
+			      int error_code, int si_code, struct siginfo *info)
+{
+	tsk->thread.trap_no = ENTRY_DEBUG_RELATED;
+	tsk->thread.error_code = error_code;
+
+	memset(info, 0, sizeof(*info));
+	info->si_signo = SIGTRAP;
+	info->si_code = si_code;
+	info->si_addr = (void __user *)instruction_pointer(regs);
+}
+
+void user_single_step_siginfo(struct task_struct *tsk,
+			      struct pt_regs *regs, struct siginfo *info)
+{
+	fill_sigtrap_info(tsk, regs, 0, TRAP_BRKPT, info);
+}
+
+/*
+ * Handle hitting a breakpoint.
+ */
+void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs,
+		  int error_code, int si_code)
+{
+	struct siginfo info;
+
+	fill_sigtrap_info(tsk, regs, error_code, TRAP_BRKPT, &info);
+	/* Send us the fake SIGTRAP */
+	force_sig_info(SIGTRAP, &info, tsk);
+}
+
+/* ptrace_read_user()
+ *
+ * Read the word at offset "off" into the "struct user".  We
+ * actually access the pt_regs stored on the kernel stack.
+ */
+static int
+ptrace_read_user(struct task_struct *tsk, unsigned long off,
+		 unsigned long __user * ret)
+{
+	unsigned long tmp = 0;
+
+	if (off < sizeof(struct pt_regs)) {
+		if (off & 3)
+			return -EIO;
+		tmp = get_user_reg(tsk, off >> 2);
+		return put_user(tmp, ret);
+	} else
+		return -EIO;
+}
+
+/* ptrace_write_user()
+ *
+ * Write the word at offset "off" into "struct user".  We
+ * actually access the pt_regs stored on the kernel stack.
+ */
+static int
+ptrace_write_user(struct task_struct *tsk, unsigned long off, unsigned long val)
+{
+	if (off < sizeof(struct pt_regs)) {
+		if (off & 3)
+			return -EIO;
+		return put_user_reg(tsk, off >> 2, val);
+	} else
+		return -EIO;
+}
+
+/* ptrace_getregs()
+ *
+ * Get all user integer registers.
+ */
+static int ptrace_getregs(struct task_struct *tsk, void __user * uregs)
+{
+	struct pt_regs *regs = task_pt_regs(tsk);
+
+	return copy_to_user(uregs, regs, sizeof(struct pt_regs)) ? -EFAULT : 0;
+}
+
+/* ptrace_setregs()
+ *
+ * Set all user integer registers.
+ */
+static int ptrace_setregs(struct task_struct *tsk, void __user * uregs)
+{
+	struct pt_regs newregs;
+	int ret;
+
+	ret = -EFAULT;
+	if (copy_from_user(&newregs, uregs, sizeof(struct pt_regs)) == 0) {
+		struct pt_regs *regs = task_pt_regs(tsk);
+
+		ret = -EINVAL;
+		if (valid_user_regs(&newregs)) {
+			*regs = newregs;
+			ret = 0;
+		}
+	}
+
+	return ret;
+}
+
+/* ptrace_getfpregs()
+ *
+ * Get the child FPU state.
+ */
+static int ptrace_getfpregs(struct task_struct *tsk, void __user * ufpregs)
+{
+	return -EFAULT;
+}
+
+/*
+ * Set the child FPU state.
+ */
+static int ptrace_setfpregs(struct task_struct *tsk, void __user * ufpregs)
+{
+	return -EFAULT;
+}
+
+/* do_ptrace()
+ *
+ * Provide ptrace defined service.
+ */
+long arch_ptrace(struct task_struct *child, long request, unsigned long addr,
+		 unsigned long data)
+{
+	int ret;
+
+	switch (request) {
+	case PTRACE_PEEKUSR:
+		ret =
+		    ptrace_read_user(child, addr, (unsigned long __user *)data);
+		break;
+
+	case PTRACE_POKEUSR:
+		ret = ptrace_write_user(child, addr, data);
+		break;
+
+	case PTRACE_GETREGS:
+		ret = ptrace_getregs(child, (void __user *)data);
+		break;
+
+	case PTRACE_SETREGS:
+		ret = ptrace_setregs(child, (void __user *)data);
+		break;
+
+	case PTRACE_GETFPREGS:
+		ret = ptrace_getfpregs(child, (void __user *)data);
+		break;
+
+	case PTRACE_SETFPREGS:
+		ret = ptrace_setfpregs(child, (void __user *)data);
+		break;
+
+	default:
+		ret = ptrace_request(child, request, addr, data);
+		break;
+	}
+
+	return ret;
+}
+
+void user_enable_single_step(struct task_struct *child)
+{
+	struct pt_regs *regs;
+	regs = task_pt_regs(child);
+	regs->ipsw |= PSW_mskHSS;
+	set_tsk_thread_flag(child, TIF_SINGLESTEP);
+}
+
+void user_disable_single_step(struct task_struct *child)
+{
+	struct pt_regs *regs;
+	regs = task_pt_regs(child);
+	regs->ipsw &= ~PSW_mskHSS;
+	clear_tsk_thread_flag(child, TIF_SINGLESTEP);
+}
+
+/* sys_trace()
+ *
+ * syscall trace handler.
+ */
+
+asmlinkage int syscall_trace_enter(int syscall, struct pt_regs *regs)
+{
+	if (test_thread_flag(TIF_SYSCALL_TRACE)) {
+		if (tracehook_report_syscall_entry(regs))
+			return -1;
+	}
+	return syscall;
+}
+
+asmlinkage void syscall_trace_leave(struct pt_regs *regs)
+{
+	int step = test_thread_flag(TIF_SINGLESTEP);
+	if (step || test_thread_flag(TIF_SYSCALL_TRACE))
+		tracehook_report_syscall_exit(regs, step);
+
+}
-- 
1.7.9.5

  parent reply	other threads:[~2018-01-15  6:03 UTC|newest]

Thread overview: 261+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-15  5:53 [PATCH v6 00/36] Andes(nds32) Linux Kernel Port Greentime Hu
2018-01-15  5:53 ` [PATCH v6 01/36] asm-generic/io.h: move ioremap_nocache/ioremap_uc/ioremap_wc/ioremap_wt out of ifndef CONFIG_MMU Greentime Hu
2018-01-15  5:53 ` [PATCH v6 02/36] openrisc: add ioremap_nocache declaration before include asm-generic/io.h and sync ioremap prototype with it Greentime Hu
2018-01-15 13:07   ` Stafford Horne
2018-01-15 13:28     ` Greentime Hu
2018-01-15 13:28       ` Greentime Hu
2018-01-15  5:53 ` [PATCH v6 03/36] sparc: io: To use the define of ioremap_[nocache|wc|wb] in asm-generic/io.h Greentime Hu
2018-01-18  9:56   ` Arnd Bergmann
2018-01-18  9:56     ` Arnd Bergmann
2018-01-18  9:56     ` Arnd Bergmann
2018-01-19 12:50     ` Greentime Hu
2018-01-19 12:50       ` Greentime Hu
2018-01-19 12:50       ` Greentime Hu
2018-01-15  5:53 ` [PATCH v6 04/36] earlycon: add reg-offset to physical address before mapping Greentime Hu
2018-01-18 10:00   ` Arnd Bergmann
2018-01-18 10:00     ` Arnd Bergmann
2018-01-18 10:00     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 05/36] nds32: Assembly macros and definitions Greentime Hu
2018-01-18 10:01   ` Arnd Bergmann
2018-01-18 10:01     ` Arnd Bergmann
2018-01-18 10:01     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 06/36] nds32: Kernel booting and initialization Greentime Hu
2018-01-18 10:11   ` Arnd Bergmann
2018-01-18 10:11     ` Arnd Bergmann
2018-01-18 10:11     ` Arnd Bergmann
2018-01-19 16:34     ` Greentime Hu
2018-01-19 16:34       ` Greentime Hu
2018-01-19 16:34       ` Greentime Hu
2018-01-19 16:41       ` Arnd Bergmann
2018-01-19 16:41         ` Arnd Bergmann
2018-01-19 16:41         ` Arnd Bergmann
2018-01-22  9:49         ` Greentime Hu
2018-01-22  9:49           ` Greentime Hu
2018-01-22  9:49           ` Greentime Hu
2018-01-22  9:53           ` Arnd Bergmann
2018-01-22  9:53             ` Arnd Bergmann
2018-01-22  9:53             ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 07/36] nds32: Exception handling Greentime Hu
2018-01-18 10:14   ` Arnd Bergmann
2018-01-18 10:14     ` Arnd Bergmann
2018-01-18 10:14     ` Arnd Bergmann
2018-01-24 10:53     ` Vincent Chen
2018-01-24 10:53       ` Vincent Chen
2018-01-24 10:53       ` Vincent Chen
2018-01-24 11:09       ` Arnd Bergmann
2018-01-24 11:09         ` Arnd Bergmann
2018-01-24 11:09         ` Arnd Bergmann
2018-01-24 11:10         ` Arnd Bergmann
2018-01-24 11:10           ` Arnd Bergmann
2018-01-24 11:10           ` Arnd Bergmann
2018-01-30 10:01           ` Vincent Chen
2018-01-30 10:01             ` Vincent Chen
2018-01-30 10:01             ` Vincent Chen
2018-01-30 13:33             ` Arnd Bergmann
2018-01-30 13:33               ` Arnd Bergmann
2018-01-30 13:33               ` Arnd Bergmann
2018-01-30 14:49               ` Greentime Hu
2018-01-30 14:49                 ` Greentime Hu
2018-01-30 14:49                 ` Greentime Hu
2018-01-30 15:27                 ` Arnd Bergmann
2018-01-30 15:27                   ` Arnd Bergmann
2018-01-30 15:27                   ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 08/36] nds32: MMU definitions Greentime Hu
2018-01-15  5:53   ` Greentime Hu
2018-01-18 10:14   ` Arnd Bergmann
2018-01-18 10:14     ` Arnd Bergmann
2018-01-18 10:14     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 09/36] nds32: MMU initialization Greentime Hu
2018-01-18 10:16   ` Arnd Bergmann
2018-01-18 10:16     ` Arnd Bergmann
2018-01-18 10:16     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 10/36] nds32: MMU fault handling and page table management Greentime Hu
2018-01-18 10:16   ` Arnd Bergmann
2018-01-18 10:16     ` Arnd Bergmann
2018-01-18 10:16     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 11/36] nds32: Cache and TLB routines Greentime Hu
2018-01-18 10:17   ` Arnd Bergmann
2018-01-18 10:17     ` Arnd Bergmann
2018-01-18 10:17     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 12/36] nds32: Process management Greentime Hu
2018-01-15  5:53   ` Greentime Hu
2018-01-18 10:22   ` Arnd Bergmann
2018-01-18 10:22     ` Arnd Bergmann
2018-01-18 10:22     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 13/36] nds32: IRQ handling Greentime Hu
2018-01-15  5:53   ` Greentime Hu
2018-01-18 10:22   ` Arnd Bergmann
2018-01-18 10:22     ` Arnd Bergmann
2018-01-18 10:22     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 14/36] nds32: Atomic operations Greentime Hu
2018-01-18 10:23   ` Arnd Bergmann
2018-01-18 10:23     ` Arnd Bergmann
2018-01-18 10:23     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 15/36] nds32: Device specific operations Greentime Hu
2018-01-18 10:25   ` Arnd Bergmann
2018-01-18 10:25     ` Arnd Bergmann
2018-01-18 10:25     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 16/36] nds32: DMA mapping API Greentime Hu
2018-01-18 10:26   ` Arnd Bergmann
2018-01-18 10:26     ` Arnd Bergmann
2018-01-18 10:26     ` Arnd Bergmann
2018-01-23  8:23     ` Greentime Hu
2018-01-23  8:23       ` Greentime Hu
2018-01-23  8:23       ` Greentime Hu
2018-01-23 11:52       ` Greentime Hu
2018-01-23 11:52         ` Greentime Hu
2018-01-23 11:52         ` Greentime Hu
2018-01-24 11:36         ` Arnd Bergmann
2018-01-24 11:36           ` Arnd Bergmann
2018-01-24 11:36           ` Arnd Bergmann
2018-01-25  3:45           ` Greentime Hu
2018-01-25  3:45             ` Greentime Hu
2018-01-25  3:45             ` Greentime Hu
2018-01-25 10:42             ` Arnd Bergmann
2018-01-25 10:42               ` Arnd Bergmann
2018-01-25 10:42               ` Arnd Bergmann
2018-01-25 13:48               ` Greentime Hu
2018-01-25 13:48                 ` Greentime Hu
2018-01-25 13:48                 ` Greentime Hu
2018-01-15  5:53 ` [PATCH v6 17/36] nds32: ELF definitions Greentime Hu
2018-01-18 10:27   ` Arnd Bergmann
2018-01-18 10:27     ` Arnd Bergmann
2018-01-18 10:27     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 18/36] nds32: System calls handling Greentime Hu
2018-01-15  5:53   ` Greentime Hu
2018-01-18 10:27   ` Arnd Bergmann
2018-01-18 10:27     ` Arnd Bergmann
2018-01-18 10:27     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 19/36] nds32: VDSO support Greentime Hu
2018-01-18 10:28   ` Arnd Bergmann
2018-01-18 10:28     ` Arnd Bergmann
2018-01-18 10:28     ` Arnd Bergmann
2018-02-06  7:41     ` Vincent Chen
2018-02-06  7:41       ` Vincent Chen
2018-02-06  7:41       ` Vincent Chen
2018-02-06  8:48       ` Arnd Bergmann
2018-02-06  8:48         ` Arnd Bergmann
2018-02-06  8:48         ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 20/36] nds32: Signal handling support Greentime Hu
2018-01-18 10:30   ` Arnd Bergmann
2018-01-18 10:30     ` Arnd Bergmann
2018-01-18 10:30     ` Arnd Bergmann
2018-01-24  0:56     ` Vincent Chen
2018-01-24  0:56       ` Vincent Chen
2018-01-24  0:56       ` Vincent Chen
2018-01-24 11:13       ` Arnd Bergmann
2018-01-24 11:13         ` Arnd Bergmann
2018-01-24 11:13         ` Arnd Bergmann
2018-02-06  6:39         ` Vincent Chen
2018-02-06  6:39           ` Vincent Chen
2018-02-06  6:39           ` Vincent Chen
2018-01-15  5:53 ` [PATCH v6 21/36] nds32: Library functions Greentime Hu
2018-01-18 10:31   ` Arnd Bergmann
2018-01-18 10:31     ` Arnd Bergmann
2018-01-18 10:31     ` Arnd Bergmann
2018-01-15  5:53 ` Greentime Hu [this message]
2018-01-18 10:37   ` [PATCH v6 22/36] nds32: Debugging support Arnd Bergmann
2018-01-18 10:37     ` Arnd Bergmann
2018-01-18 10:37     ` Arnd Bergmann
2018-01-23  7:28     ` Vincent Chen
2018-01-23  7:28       ` Vincent Chen
2018-01-23  7:28       ` Vincent Chen
2018-01-23  8:21       ` Arnd Bergmann
2018-01-23  8:21         ` Arnd Bergmann
2018-01-23  8:21         ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 23/36] nds32: L2 cache support Greentime Hu
2018-01-18 10:37   ` Arnd Bergmann
2018-01-18 10:37     ` Arnd Bergmann
2018-01-18 10:37     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 24/36] nds32: Loadable modules Greentime Hu
2018-01-18 10:41   ` Arnd Bergmann
2018-01-18 10:41     ` Arnd Bergmann
2018-01-18 10:41     ` Arnd Bergmann
2018-01-19 14:26     ` Greentime Hu
2018-01-19 14:26       ` Greentime Hu
2018-01-19 14:26       ` Greentime Hu
2018-01-15  5:53 ` [PATCH v6 25/36] nds32: Generic timers support Greentime Hu
2018-01-18 10:41   ` Arnd Bergmann
2018-01-18 10:41     ` Arnd Bergmann
2018-01-18 10:41     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 26/36] nds32: Device tree support Greentime Hu
2018-01-18 10:43   ` Arnd Bergmann
2018-01-18 10:43     ` Arnd Bergmann
2018-01-18 10:43     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 27/36] nds32: Miscellaneous header files Greentime Hu
2018-01-18 10:46   ` Arnd Bergmann
2018-01-18 10:46     ` Arnd Bergmann
2018-01-18 10:46     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 28/36] nds32: defconfig Greentime Hu
2018-01-18 10:44   ` Arnd Bergmann
2018-01-18 10:44     ` Arnd Bergmann
2018-01-18 10:44     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 29/36] nds32: Build infrastructure Greentime Hu
2018-01-18 11:00   ` Arnd Bergmann
2018-01-18 11:00     ` Arnd Bergmann
2018-01-18 11:00     ` Arnd Bergmann
2018-01-22 15:20     ` Greentime Hu
2018-01-22 15:20       ` Greentime Hu
2018-01-22 15:20       ` Greentime Hu
2018-01-22 15:38       ` Arnd Bergmann
2018-01-22 15:38         ` Arnd Bergmann
2018-01-22 15:38         ` Arnd Bergmann
2018-01-22 16:00         ` Greentime Hu
2018-01-22 16:00           ` Greentime Hu
2018-01-22 16:00           ` Greentime Hu
2018-01-15  5:53 ` [PATCH v6 30/36] MAINTAINERS: Add nds32 Greentime Hu
2018-01-18 10:45   ` Arnd Bergmann
2018-01-18 10:45     ` Arnd Bergmann
2018-01-18 10:45     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 31/36] dt-bindings: nds32 CPU Bindings Greentime Hu
2018-01-18 11:02   ` Arnd Bergmann
2018-01-18 11:02     ` Arnd Bergmann
2018-01-18 11:02     ` Arnd Bergmann
2018-01-19 14:32     ` Greentime Hu
2018-01-19 14:32       ` Greentime Hu
2018-01-19 14:32       ` Greentime Hu
2018-01-19 14:52       ` Arnd Bergmann
2018-01-19 14:52         ` Arnd Bergmann
2018-01-19 14:52         ` Arnd Bergmann
2018-01-19 15:18         ` Greentime Hu
2018-01-19 15:18           ` Greentime Hu
2018-01-19 15:18           ` Greentime Hu
2018-01-19 15:29           ` Geert Uytterhoeven
2018-01-19 15:29             ` Geert Uytterhoeven
2018-01-19 15:29             ` Geert Uytterhoeven
2018-01-19 15:35             ` Greentime Hu
2018-01-19 15:35               ` Greentime Hu
2018-01-19 15:35               ` Greentime Hu
2018-01-19 15:37               ` Geert Uytterhoeven
2018-01-19 15:37                 ` Geert Uytterhoeven
2018-01-19 15:37                 ` Geert Uytterhoeven
2018-01-22  9:53                 ` Greentime Hu
2018-01-22  9:53                   ` Greentime Hu
2018-01-22  9:53                   ` Greentime Hu
2018-01-22 11:15                   ` Arnd Bergmann
2018-01-22 11:15                     ` Arnd Bergmann
2018-01-22 11:15                     ` Arnd Bergmann
2018-01-22 13:55                     ` Greentime Hu
2018-01-22 13:55                       ` Greentime Hu
2018-01-22 13:55                       ` Greentime Hu
2018-01-15  5:53 ` [PATCH v6 32/36] dt-bindings: nds32 L2 cache controller Bindings Greentime Hu
2018-01-18 10:45   ` Arnd Bergmann
2018-01-18 10:45     ` Arnd Bergmann
2018-01-18 10:45     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 33/36] dt-bindings: nds32 SoC Bindings Greentime Hu
2018-01-18 11:03   ` Arnd Bergmann
2018-01-18 11:03     ` Arnd Bergmann
2018-01-18 11:03     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 34/36] dt-bindings: interrupt-controller: Andestech Internal Vector Interrupt Controller Greentime Hu
2018-01-18 10:46   ` Arnd Bergmann
2018-01-18 10:46     ` Arnd Bergmann
2018-01-18 10:46     ` Arnd Bergmann
2018-01-15  5:53 ` [PATCH v6 35/36] irqchip: Andestech Internal Vector Interrupt Controller driver Greentime Hu
2018-01-15  5:53   ` Greentime Hu
2018-01-15  5:53 ` [PATCH v6 36/36] net: faraday add nds32 support Greentime Hu
2018-01-18 11:02   ` Arnd Bergmann
2018-01-18 11:02     ` Arnd Bergmann
2018-01-18 11:02     ` Arnd Bergmann
2018-01-18  9:49 ` [PATCH v6 00/36] Andes(nds32) Linux Kernel Port Arnd Bergmann
2018-01-18  9:49   ` Arnd Bergmann
2018-01-18  9:49   ` Arnd Bergmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=65ae3b5b7eabe8680857b1821c72127f611c950b.1515766253.git.green.hu@gmail.com \
    --to=green.hu@gmail.com \
    --cc=arnd@arndb.de \
    --cc=daniel.lezcano@linaro.org \
    --cc=davem@davemloft.net \
    --cc=deanbo422@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dhowells@redhat.com \
    --cc=geert.uytterhoeven@gmail.com \
    --cc=greentime@andestech.com \
    --cc=greg@kroah.com \
    --cc=jason@lakedaemon.net \
    --cc=jonas@southpole.se \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=netdev@vger.kernel.org \
    --cc=rdunlap@infradead.org \
    --cc=ren_guo@c-sky.com \
    --cc=robh+dt@kernel.org \
    --cc=shorne@gmail.com \
    --cc=stefan.kristiansson@saunalahti.fi \
    --cc=tglx@linutronix.de \
    --cc=vincentc@andestech.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.