summaryrefslogtreecommitdiffstats
path: root/arch/ia64
diff options
context:
space:
mode:
authorMasami Hiramatsu <mhiramat@kernel.org>2021-09-14 16:41:52 +0200
committerSteven Rostedt (VMware) <rostedt@goodmis.org>2021-10-01 03:24:07 +0200
commitc1f76fe58f6983205ad14045dbc303416d5e990a (patch)
tree03e5e75920c0f726291f7aeb503e840e53857ecf /arch/ia64
parentARC: Add instruction_pointer_set() API (diff)
downloadlinux-c1f76fe58f6983205ad14045dbc303416d5e990a.tar.xz
linux-c1f76fe58f6983205ad14045dbc303416d5e990a.zip
ia64: Add instruction_pointer_set() API
Add instruction_pointer_set() API for ia64. Link: https://lkml.kernel.org/r/163163051195.489837.1039597819838213481.stgit@devnote2 Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Diffstat (limited to 'arch/ia64')
-rw-r--r--arch/ia64/include/asm/ptrace.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/ia64/include/asm/ptrace.h b/arch/ia64/include/asm/ptrace.h
index 08179135905c..8a2d0f72b324 100644
--- a/arch/ia64/include/asm/ptrace.h
+++ b/arch/ia64/include/asm/ptrace.h
@@ -51,6 +51,11 @@
* the canonical representation by adding to instruction pointer.
*/
# define instruction_pointer(regs) ((regs)->cr_iip + ia64_psr(regs)->ri)
+# define instruction_pointer_set(regs, val) \
+({ \
+ ia64_psr(regs)->ri = (val & 0xf); \
+ regs->cr_iip = (val & ~0xfULL); \
+})
static inline unsigned long user_stack_pointer(struct pt_regs *regs)
{