mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-11 08:18:47 +00:00
94afd069d9
Currently unsigned ints are used to represent instructions on powerpc. This has worked well as instructions have always been 4 byte words. However, ISA v3.1 introduces some changes to instructions that mean this scheme will no longer work as well. This change is Prefixed Instructions. A prefixed instruction is made up of a word prefix followed by a word suffix to make an 8 byte double word instruction. No matter the endianness of the system the prefix always comes first. Prefixed instructions are only planned for powerpc64. Introduce a ppc_inst type to represent both prefixed and word instructions on powerpc64 while keeping it possible to exclusively have word instructions on powerpc32. Signed-off-by: Jordan Niethe <jniethe5@gmail.com> [mpe: Fix compile error in emulate_spe()] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20200506034050.24806-12-jniethe5@gmail.com
37 lines
819 B
C
37 lines
819 B
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
#ifndef _ASM_UPROBES_H
|
|
#define _ASM_UPROBES_H
|
|
/*
|
|
* User-space Probes (UProbes) for powerpc
|
|
*
|
|
* 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>
|
|
#include <asm/inst.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 {
|
|
struct ppc_inst insn;
|
|
struct ppc_inst ixol;
|
|
};
|
|
};
|
|
|
|
struct arch_uprobe_task {
|
|
unsigned long saved_trap_nr;
|
|
};
|
|
|
|
#endif /* _ASM_UPROBES_H */
|