diff options
Diffstat (limited to 'arch/powerpc/lib/sstep.c')
| -rw-r--r-- | arch/powerpc/lib/sstep.c | 6 | 
1 files changed, 4 insertions, 2 deletions
| diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c index 5e8418c28bd8..f208f560aecd 100644 --- a/arch/powerpc/lib/sstep.c +++ b/arch/powerpc/lib/sstep.c @@ -1684,11 +1684,13 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,   * Logical instructions   */  		case 26:	/* cntlzw */ -			op->val = __builtin_clz((unsigned int) regs->gpr[rd]); +			val = (unsigned int) regs->gpr[rd]; +			op->val = ( val ? __builtin_clz(val) : 32 );  			goto logical_done;  #ifdef __powerpc64__  		case 58:	/* cntlzd */ -			op->val = __builtin_clzl(regs->gpr[rd]); +			val = regs->gpr[rd]; +			op->val = ( val ? __builtin_clzl(val) : 64 );  			goto logical_done;  #endif  		case 28:	/* and */ | 
