linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ley Foon Tan <lftan@altera.com>
To: <linux-arch@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-doc@vger.kernel.org>
Cc: Ley Foon Tan <lftan@altera.com>, <lftan.linux@gmail.com>,
	<cltang@codesourcery.com>
Subject: [PATCH 02/28] nios2: Assembly macros and definitions
Date: Fri, 18 Apr 2014 20:26:49 +0800	[thread overview]
Message-ID: <1397824031-4892-3-git-send-email-lftan@altera.com> (raw)
In-Reply-To: <1397824031-4892-1-git-send-email-lftan@altera.com>

This patch add assembly macros and definitions used in
the .S files across arch/nios2/ and together with asm-offsets.c.

Signed-off-by: Ley Foon Tan <lftan@altera.com>
---
 arch/nios2/include/asm/asm-macros.h  | 309 +++++++++++++++++++++++++++++++++++
 arch/nios2/include/asm/asm-offsets.h |  20 +++
 arch/nios2/kernel/asm-offsets.c      |  88 ++++++++++
 3 files changed, 417 insertions(+)
 create mode 100644 arch/nios2/include/asm/asm-macros.h
 create mode 100644 arch/nios2/include/asm/asm-offsets.h
 create mode 100644 arch/nios2/kernel/asm-offsets.c

diff --git a/arch/nios2/include/asm/asm-macros.h b/arch/nios2/include/asm/asm-macros.h
new file mode 100644
index 0000000..29fa2e4d7b009da93a362731a278bc5296c70f25
--- /dev/null
+++ b/arch/nios2/include/asm/asm-macros.h
@@ -0,0 +1,309 @@
+/*
+ * Macro used to simplify coding multi-line assembler.
+ * Some of the bit test macro can simplify down to one line
+ * depending on the mask value.
+ *
+ * Copyright (C) 2004 Microtronix Datacom Ltd.
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
+ * NON INFRINGEMENT.  See the GNU General Public License for more
+ * details.
+ *
+ */
+#ifndef _ASM_NIOS2_ASMMACROS_H
+#define _ASM_NIOS2_ASMMACROS_H
+/*
+ * ANDs reg2 with mask and places the result in reg1.
+ *
+ * You cannnot use the same register for reg1 & reg2.
+ */
+
+.macro ANDI32	reg1, reg2, mask
+.if \mask & 0xffff
+	.if \mask & 0xffff0000
+		movhi	\reg1, %hi(\mask)
+		movui	\reg1, %lo(\mask)
+		and	\reg1, \reg1, \reg2
+	.else
+		andi	\reg1, \reg2, %lo(\mask)
+	.endif
+.else
+	andhi	\reg1, \reg2, %hi(\mask)
+.endif
+.endm
+
+/*
+ * ORs reg2 with mask and places the result in reg1.
+ *
+ * It is safe to use the same register for reg1 & reg2.
+ */
+
+.macro ORI32	reg1, reg2, mask
+.if \mask & 0xffff
+	.if \mask & 0xffff0000
+		orhi	\reg1, \reg2, %hi(\mask)
+		ori	\reg1, \reg2, %lo(\mask)
+	.else
+		ori	\reg1, \reg2, %lo(\mask)
+	.endif
+.else
+	orhi	\reg1, \reg2, %hi(\mask)
+.endif
+.endm
+
+/*
+ * XORs reg2 with mask and places the result in reg1.
+ *
+ * It is safe to use the same register for reg1 & reg2.
+ */
+
+.macro XORI32	reg1, reg2, mask
+.if \mask & 0xffff
+	.if \mask & 0xffff0000
+		xorhi	\reg1, \reg2, %hi(\mask)
+		xori	\reg1, \reg1, %lo(\mask)
+	.else
+		xori	\reg1, \reg2, %lo(\mask)
+	.endif
+.else
+	xorhi	\reg1, \reg2, %hi(\mask)
+.endif
+.endm
+
+/*
+ * This is a support macro for BTBZ & BTBNZ.  It checks
+ * the bit to make sure it is valid 32 value.
+ *
+ * It is safe to use the same register for reg1 & reg2.
+ */
+
+.macro BT	reg1, reg2, bit
+.if \bit > 31
+	.err
+.else
+	.if \bit < 16
+		andi	\reg1, \reg2, (1 << \bit)
+	.else
+		andhi	\reg1, \reg2, (1 << (\bit - 16))
+	.endif
+.endif
+.endm
+
+/*
+ * Tests the bit in reg2 and branches to label if the
+ * bit is zero.  The result of the bit test is stored in reg1.
+ *
+ * It is safe to use the same register for reg1 & reg2.
+ */
+
+.macro BTBZ	reg1, reg2, bit, label
+	BT	\reg1, \reg2, \bit
+	beq	\reg1, r0, \label
+.endm
+
+/*
+ * Tests the bit in reg2 and branches to label if the
+ * bit is non-zero.  The result of the bit test is stored in reg1.
+ *
+ * It is safe to use the same register for reg1 & reg2.
+ */
+
+.macro BTBNZ	reg1, reg2, bit, label
+	BT	\reg1, \reg2, \bit
+	bne	\reg1, r0, \label
+.endm
+
+/*
+ * Tests the bit in reg2 and then compliments the bit in reg2.
+ * The result of the bit test is stored in reg1.
+ *
+ * It is NOT safe to use the same register for reg1 & reg2.
+ */
+
+.macro BTC	reg1, reg2, bit
+.if \bit > 31
+	.err
+.else
+	.if \bit < 16
+		andi	\reg1, \reg2, (1 << \bit)
+		xori	\reg2, \reg2, (1 << \bit)
+	.else
+		andhi	\reg1, \reg2, (1 << (\bit - 16))
+		xorhi	\reg2, \reg2, (1 << (\bit - 16))
+	.endif
+.endif
+.endm
+
+/*
+ * Tests the bit in reg2 and then sets the bit in reg2.
+ * The result of the bit test is stored in reg1.
+ *
+ * It is NOT safe to use the same register for reg1 & reg2.
+ */
+
+.macro BTS	reg1, reg2, bit
+.if \bit > 31
+	.err
+.else
+	.if \bit < 16
+		andi	\reg1, \reg2, (1 << \bit)
+		ori	\reg2, \reg2, (1 << \bit)
+	.else
+		andhi	\reg1, \reg2, (1 << (\bit - 16))
+		orhi	\reg2, \reg2, (1 << (\bit - 16))
+	.endif
+.endif
+.endm
+
+/*
+ * Tests the bit in reg2 and then resets the bit in reg2.
+ * The result of the bit test is stored in reg1.
+ *
+ * It is NOT safe to use the same register for reg1 & reg2.
+ */
+
+.macro BTR	reg1, reg2, bit
+.if \bit > 31
+	.err
+.else
+	.if \bit < 16
+		andi	\reg1, \reg2, (1 << \bit)
+		andi	\reg2, \reg2, %lo(~(1 << \bit))
+	.else
+		andhi	\reg1, \reg2, (1 << (\bit - 16))
+		andhi	\reg2, \reg2, %lo(~(1 << (\bit - 16)))
+	.endif
+.endif
+.endm
+
+/*
+ * Tests the bit in reg2 and then compliments the bit in reg2.
+ * The result of the bit test is stored in reg1.  If the
+ * original bit was zero it branches to label.
+ *
+ * It is NOT safe to use the same register for reg1 & reg2.
+ */
+
+.macro BTCBZ	reg1, reg2, bit, label
+	BTC	\reg1, \reg2, \bit
+	beq	\reg1, r0, \label
+.endm
+
+/*
+ * Tests the bit in reg2 and then compliments the bit in reg2.
+ * The result of the bit test is stored in reg1.  If the
+ * original bit was non-zero it branches to label.
+ *
+ * It is NOT safe to use the same register for reg1 & reg2.
+ */
+
+.macro BTCBNZ	reg1, reg2, bit, label
+	BTC	\reg1, \reg2, \bit
+	bne	\reg1, r0, \label
+.endm
+
+/*
+ * Tests the bit in reg2 and then sets the bit in reg2.
+ * The result of the bit test is stored in reg1.  If the
+ * original bit was zero it branches to label.
+ *
+ * It is NOT safe to use the same register for reg1 & reg2.
+ */
+
+.macro BTSBZ	reg1, reg2, bit, label
+	BTS	\reg1, \reg2, \bit
+	beq	\reg1, r0, \label
+.endm
+
+/*
+ * Tests the bit in reg2 and then sets the bit in reg2.
+ * The result of the bit test is stored in reg1.  If the
+ * original bit was non-zero it branches to label.
+ *
+ * It is NOT safe to use the same register for reg1 & reg2.
+ */
+
+.macro BTSBNZ	reg1, reg2, bit, label
+	BTS	\reg1, \reg2, \bit
+	bne	\reg1, r0, \label
+.endm
+
+/*
+ * Tests the bit in reg2 and then resets the bit in reg2.
+ * The result of the bit test is stored in reg1.  If the
+ * original bit was zero it branches to label.
+ *
+ * It is NOT safe to use the same register for reg1 & reg2.
+ */
+
+.macro BTRBZ	reg1, reg2, bit, label
+	BTR	\reg1, \reg2, \bit
+	bne	\reg1, r0, \label
+.endm
+
+/*
+ * Tests the bit in reg2 and then resets the bit in reg2.
+ * The result of the bit test is stored in reg1.  If the
+ * original bit was non-zero it branches to label.
+ *
+ * It is NOT safe to use the same register for reg1 & reg2.
+ */
+
+.macro BTRBNZ	reg1, reg2, bit, label
+	BTR	\reg1, \reg2, \bit
+	bne	\reg1, r0, \label
+.endm
+
+/*
+ * Tests the bits in mask against reg2 stores the result in reg1.
+ * If the all the bits in the mask are zero it branches to label.
+ *
+ * It is safe to use the same register for reg1 & reg2.
+ */
+
+.macro TSTBZ	reg1, reg2, mask, label
+	ANDI32	\reg1, \reg2, \mask
+	beq	\reg1, r0, \label
+.endm
+
+/*
+ * Tests the bits in mask against reg2 stores the result in reg1.
+ * If the any of the bits in the mask are 1 it branches to label.
+ *
+ * It is safe to use the same register for reg1 & reg2.
+ */
+
+.macro TSTBNZ	reg1, reg2, mask, label
+	ANDI32	\reg1, \reg2, \mask
+	bne	\reg1, r0, \label
+.endm
+
+/*
+ * Pushes reg onto the stack.
+ */
+
+.macro PUSH	reg
+	addi	sp, sp, -4
+	stw	\reg, 0(sp)
+.endm
+
+/*
+ * Pops the top of the stack into reg.
+ */
+
+.macro POP	reg
+	ldw	\reg, 0(sp)
+	addi	sp, sp, 4
+.endm
+
+
+#endif /* _ASM_NIOS2_ASMMACROS_H */
diff --git a/arch/nios2/include/asm/asm-offsets.h b/arch/nios2/include/asm/asm-offsets.h
new file mode 100644
index 0000000..5b9f5e04a058056e0aedcfe35b1a3512ac74e989
--- /dev/null
+++ b/arch/nios2/include/asm/asm-offsets.h
@@ -0,0 +1,20 @@
+/*
+ *  Copyright (C) 2010 Tobias Klauser <tklauser@distanz.ch>
+ *  Copyright (C) 2009 Thomas Chou <thomas@wytron.com.tw>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <generated/asm-offsets.h>
diff --git a/arch/nios2/kernel/asm-offsets.c b/arch/nios2/kernel/asm-offsets.c
new file mode 100644
index 0000000..3852f5c
--- /dev/null
+++ b/arch/nios2/kernel/asm-offsets.c
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2011 Tobias Klauser <tklauser@distanz.ch>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <linux/stddef.h>
+#include <linux/sched.h>
+#include <linux/kernel_stat.h>
+#include <linux/ptrace.h>
+#include <linux/hardirq.h>
+#include <linux/thread_info.h>
+#include <linux/kbuild.h>
+
+int main(void)
+{
+	/* struct task_struct */
+	OFFSET(TASK_THREAD, task_struct, thread);
+	BLANK();
+
+	/* struct thread_struct */
+	OFFSET(THREAD_KSP, thread_struct, ksp);
+	OFFSET(THREAD_KPSR, thread_struct, kpsr);
+	BLANK();
+
+	/* struct pt_regs */
+	OFFSET(PT_ORIG_R2, pt_regs, orig_r2);
+	OFFSET(PT_ORIG_R7, pt_regs, orig_r7);
+
+	OFFSET(PT_R1, pt_regs, r1);
+	OFFSET(PT_R2, pt_regs, r2);
+	OFFSET(PT_R3, pt_regs, r3);
+	OFFSET(PT_R4, pt_regs, r4);
+	OFFSET(PT_R5, pt_regs, r5);
+	OFFSET(PT_R6, pt_regs, r6);
+	OFFSET(PT_R7, pt_regs, r7);
+	OFFSET(PT_R8, pt_regs, r8);
+	OFFSET(PT_R9, pt_regs, r9);
+	OFFSET(PT_R10, pt_regs, r10);
+	OFFSET(PT_R11, pt_regs, r11);
+	OFFSET(PT_R12, pt_regs, r12);
+	OFFSET(PT_R13, pt_regs, r13);
+	OFFSET(PT_R14, pt_regs, r14);
+	OFFSET(PT_R15, pt_regs, r15);
+	OFFSET(PT_EA, pt_regs, ea);
+	OFFSET(PT_RA, pt_regs, ra);
+	OFFSET(PT_FP, pt_regs, fp);
+	OFFSET(PT_SP, pt_regs, sp);
+	OFFSET(PT_GP, pt_regs, gp);
+	OFFSET(PT_ESTATUS, pt_regs, estatus);
+	DEFINE(PT_REGS_SIZE, sizeof(struct pt_regs));
+	BLANK();
+
+	/* struct switch_stack */
+	OFFSET(SW_R16, switch_stack, r16);
+	OFFSET(SW_R17, switch_stack, r17);
+	OFFSET(SW_R18, switch_stack, r18);
+	OFFSET(SW_R19, switch_stack, r19);
+	OFFSET(SW_R20, switch_stack, r20);
+	OFFSET(SW_R21, switch_stack, r21);
+	OFFSET(SW_R22, switch_stack, r22);
+	OFFSET(SW_R23, switch_stack, r23);
+	OFFSET(SW_FP, switch_stack, fp);
+	OFFSET(SW_GP, switch_stack, gp);
+	OFFSET(SW_RA, switch_stack, ra);
+	DEFINE(SWITCH_STACK_SIZE, sizeof(struct switch_stack));
+	BLANK();
+
+	/* struct thread_info */
+	OFFSET(TI_TASK, thread_info, task);
+	OFFSET(TI_FLAGS, thread_info, flags);
+	OFFSET(TI_PREEMPT_COUNT, thread_info, preempt_count);
+	BLANK();
+
+	return 0;
+}
-- 
1.8.3.2


  parent reply	other threads:[~2014-04-18 12:53 UTC|newest]

Thread overview: 126+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-18 12:26 [PATCH 00/28] nios2 Linux kernel port Ley Foon Tan
2014-04-18 12:26 ` [PATCH 01/28] nios2: Build infrastructure Ley Foon Tan
2014-04-18 14:35   ` Sam Ravnborg
2014-04-21  3:03     ` Ley Foon Tan
2014-04-18 19:16   ` Paul Bolle
2014-04-21  5:02     ` Ley Foon Tan
2014-04-18 19:41   ` Paul Bolle
2014-04-21  3:26     ` Ley Foon Tan
2014-04-18 12:26 ` Ley Foon Tan [this message]
2014-04-18 12:26 ` [PATCH 04/28] nios2: Exception handling Ley Foon Tan
2014-04-22 10:57   ` Ezequiel Garcia
2014-04-22 11:08     ` Ley Foon Tan
2014-04-22 12:33   ` Arnd Bergmann
2014-04-23  2:47     ` Ley Foon Tan
2014-04-23  7:20       ` Geert Uytterhoeven
2014-04-23 12:23         ` Arnd Bergmann
2014-04-24  6:04           ` Ley Foon Tan
2014-04-18 12:26 ` [PATCH 06/28] nios2: Memory management Ley Foon Tan
2014-04-22 14:24   ` Ezequiel Garcia
2014-04-22 15:14     ` Tobias Klauser
2014-04-22 15:35       ` Ezequiel Garcia
2014-04-22 16:01         ` Chung-Lin Tang
2014-04-22 16:27           ` Ezequiel Garcia
2014-04-22 16:36             ` Chung-Lin Tang
2014-04-22 16:24         ` Sam Ravnborg
2014-04-23  2:53           ` LF.Tan
2014-04-23  7:24           ` Geert Uytterhoeven
2014-04-18 12:26 ` [PATCH 08/28] nios2: MMU Fault handling Ley Foon Tan
2014-04-22 14:30   ` Ezequiel Garcia
2014-04-24  6:42     ` Ley Foon Tan
2014-04-24 15:22       ` Ezequiel Garcia
2014-04-24 16:02         ` Ley Foon Tan
2014-04-24 16:18           ` Ezequiel Garcia
2014-04-24  7:18     ` Geert Uytterhoeven
2014-04-18 12:26 ` [PATCH 09/28] nios2: Page table management Ley Foon Tan
2014-04-19 16:05   ` Pavel Machek
2014-04-22  8:09     ` Ley Foon Tan
2014-04-18 12:26 ` [PATCH 10/28] nios2: Process management Ley Foon Tan
2014-04-18 12:26 ` [PATCH 11/28] nios2: Cache handling Ley Foon Tan
2014-04-18 12:26 ` [PATCH 12/28] nios2: TLB handling Ley Foon Tan
2014-04-18 12:26 ` [PATCH 13/28] nios2: Interrupt handling Ley Foon Tan
2014-04-18 12:26 ` [PATCH 15/28] nios2: ELF definitions Ley Foon Tan
2014-04-18 12:26 ` [PATCH 16/28] nios2: System calls handling Ley Foon Tan
2014-04-19 16:09   ` Pavel Machek
2014-04-21 17:32     ` Ley Foon Tan
2014-04-21 17:52       ` Richard Weinberger
2014-04-21 20:48         ` Pavel Machek
2014-04-22  8:24           ` Ley Foon Tan
2014-04-21 20:46       ` Pavel Machek
2014-04-19 20:12   ` Geert Uytterhoeven
2014-04-21 17:23     ` Ley Foon Tan
2014-04-22 12:30   ` Arnd Bergmann
2014-04-24 16:23     ` Ley Foon Tan
2014-04-18 12:27 ` [PATCH 17/28] nios2: Signal handling support Ley Foon Tan
2014-04-19 19:29   ` Richard Weinberger
2014-04-24 10:01     ` Ley Foon Tan
2014-04-24 10:07       ` Richard Weinberger
2014-04-24 10:13       ` Ley Foon Tan
2014-04-24 10:17         ` Richard Weinberger
2014-04-24 10:29           ` Ley Foon Tan
2014-04-24 10:39             ` Richard Weinberger
2014-04-24 10:46               ` Ley Foon Tan
2014-04-24 16:16                 ` Richard Weinberger
2014-04-18 12:27 ` [PATCH 18/28] nios2: Library functions Ley Foon Tan
2014-04-18 12:27 ` [PATCH 19/28] nios2: Device tree support Ley Foon Tan
2014-04-22 13:42   ` Arnd Bergmann
2014-04-23  6:52     ` Ley Foon Tan
2014-04-23  7:35       ` Arnd Bergmann
2014-04-23  9:52         ` Ley Foon Tan
2014-04-24 16:05     ` Ezequiel Garcia
2014-04-18 12:27 ` [PATCH 20/28] nios2: Time keeping Ley Foon Tan
2014-04-22 13:44   ` Arnd Bergmann
2014-04-23  3:21     ` Ley Foon Tan
2014-04-18 12:27 ` [PATCH 21/28] nios2: Cpuinfo handling Ley Foon Tan
2014-04-18 12:27 ` [PATCH 22/28] nios2: Miscellaneous header files Ley Foon Tan
2014-04-18 12:27 ` [PATCH 23/28] nios2: Nios2 registers Ley Foon Tan
2014-04-22 12:39   ` Tobias Klauser
2014-04-23  7:10     ` Ley Foon Tan
2014-04-23  8:00       ` Tobias Klauser
2014-04-18 12:27 ` [PATCH 24/28] nios2: Module support Ley Foon Tan
2014-04-18 12:27 ` [PATCH 25/28] nios2: ptrace support Ley Foon Tan
2014-04-25 23:52   ` Pedro Alves
2014-04-28  6:03     ` Ley Foon Tan
2014-04-18 12:27 ` [PATCH 26/28] Add ELF machine define for Nios2 Ley Foon Tan
2014-04-18 12:27 ` [PATCH 27/28] MAINTAINERS: Add nios2 maintainer Ley Foon Tan
2014-04-18 12:27 ` [PATCH 28/28] Documentation: Add documentation for Nios2 architecture Ley Foon Tan
2014-04-22 12:28   ` Tobias Klauser
2014-04-23  7:48     ` Ley Foon Tan
2014-04-18 18:19 ` [PATCH 03/28] nios2: Kernel booting and initialization Ley Foon Tan
2014-04-18 18:19   ` [PATCH 05/28] nios2: Traps exception handling Ley Foon Tan
2014-04-22 14:28     ` Ezequiel Garcia
2014-04-23 10:07       ` Ley Foon Tan
2014-04-18 18:19   ` [PATCH 07/28] nios2: I/O Mapping Ley Foon Tan
2014-04-22 13:59     ` Arnd Bergmann
2014-04-24  6:02       ` Ley Foon Tan
2014-04-24  7:43         ` Arnd Bergmann
2014-04-24 15:51           ` Ley Foon Tan
2014-05-02 10:37         ` Ley Foon Tan
2014-05-02 12:22           ` Arnd Bergmann
2014-05-05  7:13             ` Ley Foon Tan
2014-04-18 18:19   ` [PATCH 14/28] nios2: DMA mapping API Ley Foon Tan
2014-04-22 13:52     ` Arnd Bergmann
2014-04-25 10:13       ` Ley Foon Tan
2014-04-25 10:33         ` Arnd Bergmann
2014-04-25 10:36           ` Ley Foon Tan
2014-04-18 20:48 ` [PATCH 00/28] nios2 Linux kernel port H. Peter Anvin
2014-04-19 15:30   ` Arnd Bergmann
2014-04-21  5:23     ` Ley Foon Tan
2014-04-21  5:31       ` H. Peter Anvin
2014-04-21  8:14         ` Chung-Lin Tang
2014-04-22 10:37         ` Ley Foon Tan
2014-04-22 10:56           ` Arnd Bergmann
2014-04-22 11:20             ` Ley Foon Tan
2014-04-22 14:48               ` Chung-Lin Tang
2014-04-23 17:59               ` Chung-Lin Tang
2014-04-23 18:15                 ` Pinski, Andrew
2014-04-23 19:21                   ` H. Peter Anvin
2014-04-24  6:26                   ` Chung-Lin Tang
2014-04-24  8:55                     ` Chung-Lin Tang
2014-04-24 15:28                       ` Catalin Marinas
2014-04-24 18:37                         ` Chung-Lin Tang
2014-04-24 18:42                           ` Pinski, Andrew
2014-04-25  6:06                             ` Chung-Lin Tang
2014-04-25  8:37                               ` Pinski, Andrew
2014-04-25 13:19                                 ` Chung-Lin Tang
2014-04-25  8:49                               ` Geert Uytterhoeven

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=1397824031-4892-3-git-send-email-lftan@altera.com \
    --to=lftan@altera.com \
    --cc=cltang@codesourcery.com \
    --cc=lftan.linux@gmail.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).