]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge remote-tracking branch 'powerpc/next'
authorStephen Rothwell <sfr@canb.auug.org.au>
Fri, 7 Sep 2012 01:07:12 +0000 (11:07 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Fri, 7 Sep 2012 01:07:13 +0000 (11:07 +1000)
1  2 
arch/powerpc/include/asm/kprobes.h
arch/powerpc/include/asm/probes.h
arch/powerpc/include/asm/processor.h
arch/powerpc/include/asm/uprobes.h
arch/powerpc/kernel/process.c
arch/powerpc/kernel/traps.c
arch/powerpc/perf/core-book3s.c

index be0171afdc0f513cfff0a8bdb22abc70de29528c,dc581976c6dc6ad85126c7b9b103be753251586a..7b6feab6fd26f26cfc3c19456f163845d72db86e
  struct pt_regs;
  struct kprobe;
  
- typedef unsigned int kprobe_opcode_t;
- #define BREAKPOINT_INSTRUCTION        0x7fe00008      /* trap */
 -typedef opcode_t kprobe_opcode_t;
++typedef ppc_opcode_t kprobe_opcode_t;
  #define MAX_INSN_SIZE 1
  
- #define IS_TW(instr)          (((instr) & 0xfc0007fe) == 0x7c000008)
- #define IS_TD(instr)          (((instr) & 0xfc0007fe) == 0x7c000088)
- #define IS_TDI(instr)         (((instr) & 0xfc000000) == 0x08000000)
- #define IS_TWI(instr)         (((instr) & 0xfc000000) == 0x0c000000)
  #ifdef CONFIG_PPC64
  /*
   * 64bit powerpc uses function descriptors.
index 0000000000000000000000000000000000000000,610e000566402c4e23171569e7c1355950b32499..5f1e15b68704e6b001e7395b57e6014992888abb
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,42 +1,42 @@@
 -typedef u32 opcode_t;
+ #ifndef _ASM_POWERPC_PROBES_H
+ #define _ASM_POWERPC_PROBES_H
+ #ifdef __KERNEL__
+ /*
+  * Definitions common to probes files
+  *
+  * 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, write to the Free Software
+  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+  *
+  * Copyright IBM Corporation, 2012
+  */
+ #include <linux/types.h>
++typedef u32 ppc_opcode_t;
+ #define BREAKPOINT_INSTRUCTION        0x7fe00008      /* trap */
+ /* Trap definitions per ISA */
+ #define IS_TW(instr)          (((instr) & 0xfc0007fe) == 0x7c000008)
+ #define IS_TD(instr)          (((instr) & 0xfc0007fe) == 0x7c000088)
+ #define IS_TDI(instr)         (((instr) & 0xfc000000) == 0x08000000)
+ #define IS_TWI(instr)         (((instr) & 0xfc000000) == 0x0c000000)
+ #ifdef CONFIG_PPC64
+ #define is_trap(instr)                (IS_TW(instr) || IS_TD(instr) || \
+                               IS_TWI(instr) || IS_TDI(instr))
+ #else
+ #define is_trap(instr)                (IS_TW(instr) || IS_TWI(instr))
+ #endif /* CONFIG_PPC64 */
+ #endif /* __KERNEL__ */
+ #endif        /* _ASM_POWERPC_PROBES_H */
Simple merge
index 0000000000000000000000000000000000000000,13ba5077b59b6334c20a118a17e5ddc19f67d193..b532060d0916887b400ee5802e77655ea83df884
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,54 +1,54 @@@
 -typedef opcode_t uprobe_opcode_t;
+ #ifndef _ASM_UPROBES_H
+ #define _ASM_UPROBES_H
+ /*
+  * User-space Probes (UProbes) for powerpc
+  *
+  * 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, write to the Free Software
+  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+  *
+  * Copyright IBM Corporation, 2007-2012
+  *
+  * Adapted from the x86 port by Ananth N Mavinakayanahalli <ananth@in.ibm.com>
+  */
+ #include <linux/notifier.h>
+ #include <asm/probes.h>
++typedef ppc_opcode_t uprobe_opcode_t;
+ #define MAX_UINSN_BYTES               4
+ #define UPROBE_XOL_SLOT_BYTES (MAX_UINSN_BYTES)
+ /* The following alias is needed for reference from arch-agnostic code */
+ #define UPROBE_SWBP_INSN      BREAKPOINT_INSTRUCTION
+ #define UPROBE_SWBP_INSN_SIZE 4 /* swbp insn size in bytes */
+ struct arch_uprobe {
+       union {
+               u8      insn[MAX_UINSN_BYTES];
+               u32     ainsn;
+       };
+ };
+ struct arch_uprobe_task {
+       unsigned long   saved_trap_nr;
+ };
+ extern int  arch_uprobe_analyze_insn(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long addr);
+ extern int  arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs);
+ extern int  arch_uprobe_post_xol(struct arch_uprobe *aup, struct pt_regs *regs);
+ extern bool arch_uprobe_xol_was_trapped(struct task_struct *tsk);
+ extern int  arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val, void *data);
+ extern void arch_uprobe_abort_xol(struct arch_uprobe *aup, struct pt_regs *regs);
+ #endif        /* _ASM_UPROBES_H */
Simple merge
Simple merge
Simple merge