root/arch/powerpc/include/asm/livepatch.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. klp_arch_set_pc
  2. klp_get_ftrace_location
  3. klp_init_thread_info
  4. klp_init_thread_info

   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 /*
   3  * livepatch.h - powerpc-specific Kernel Live Patching Core
   4  *
   5  * Copyright (C) 2015-2016, SUSE, IBM Corp.
   6  */
   7 #ifndef _ASM_POWERPC_LIVEPATCH_H
   8 #define _ASM_POWERPC_LIVEPATCH_H
   9 
  10 #include <linux/module.h>
  11 #include <linux/ftrace.h>
  12 #include <linux/sched/task_stack.h>
  13 
  14 #ifdef CONFIG_LIVEPATCH
  15 static inline void klp_arch_set_pc(struct pt_regs *regs, unsigned long ip)
  16 {
  17         regs->nip = ip;
  18 }
  19 
  20 #define klp_get_ftrace_location klp_get_ftrace_location
  21 static inline unsigned long klp_get_ftrace_location(unsigned long faddr)
  22 {
  23         /*
  24          * Live patch works only with -mprofile-kernel on PPC. In this case,
  25          * the ftrace location is always within the first 16 bytes.
  26          */
  27         return ftrace_location_range(faddr, faddr + 16);
  28 }
  29 
  30 static inline void klp_init_thread_info(struct task_struct *p)
  31 {
  32         /* + 1 to account for STACK_END_MAGIC */
  33         task_thread_info(p)->livepatch_sp = end_of_stack(p) + 1;
  34 }
  35 #else
  36 static inline void klp_init_thread_info(struct task_struct *p) { }
  37 #endif /* CONFIG_LIVEPATCH */
  38 
  39 #endif /* _ASM_POWERPC_LIVEPATCH_H */

/* [<][>][^][v][top][bottom][index][help] */