retrieve prefix instruction operands RA and pc relative bit R values
using macros and adopt it in sstep.c and test_emulate_step.c.

Signed-off-by: Balamuruhan S <bal...@linux.ibm.com>
---
 arch/powerpc/include/asm/sstep.h |  4 ++++
 arch/powerpc/lib/sstep.c         | 12 ++++++------
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/arch/powerpc/include/asm/sstep.h b/arch/powerpc/include/asm/sstep.h
index 3b01c69a44aa..325975b4ef30 100644
--- a/arch/powerpc/include/asm/sstep.h
+++ b/arch/powerpc/include/asm/sstep.h
@@ -104,6 +104,10 @@ enum instruction_type {
 
 #define MKOP(t, f, s)  ((t) | (f) | SIZE(s))
 
+/* Prefix instruction operands */
+#define GET_PREFIX_RA(i)       (((i) >> 16) & 0x1f)
+#define GET_PREFIX_R(i)                ((i) & (1ul << 20))
+
 struct instruction_op {
        int type;
        int reg;
diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c
index 5abe98216dc2..fb4c5767663d 100644
--- a/arch/powerpc/lib/sstep.c
+++ b/arch/powerpc/lib/sstep.c
@@ -200,8 +200,8 @@ static nokprobe_inline unsigned long mlsd_8lsd_ea(unsigned 
int instr,
        unsigned int  dd;
        unsigned long ea, d0, d1, d;
 
-       prefix_r = instr & (1ul << 20);
-       ra = (suffix >> 16) & 0x1f;
+       prefix_r = GET_PREFIX_R(instr);
+       ra = GET_PREFIX_RA(suffix);
 
        d0 = instr & 0x3ffff;
        d1 = suffix & 0xffff;
@@ -1339,8 +1339,8 @@ int analyse_instr(struct instruction_op *op, const struct 
pt_regs *regs,
        switch (opcode) {
 #ifdef __powerpc64__
        case 1:
-               prefix_r = word & (1ul << 20);
-               ra = (suffix >> 16) & 0x1f;
+               prefix_r = GET_PREFIX_R(word);
+               ra = GET_PREFIX_RA(suffix);
                rd = (suffix >> 21) & 0x1f;
                op->reg = rd;
                op->val = regs->gpr[rd];
@@ -2715,8 +2715,8 @@ int analyse_instr(struct instruction_op *op, const struct 
pt_regs *regs,
                }
                break;
        case 1: /* Prefixed instructions */
-               prefix_r = word & (1ul << 20);
-               ra = (suffix >> 16) & 0x1f;
+               prefix_r = GET_PREFIX_R(word);
+               ra = GET_PREFIX_RA(suffix);
                op->update_reg = ra;
                rd = (suffix >> 21) & 0x1f;
                op->reg = rd;
-- 
2.24.1

Reply via email to