In 2004 Randolph added the shr() assembly macro and noted that the source and target register could not be the same. I did not find any confindence in the docs for this restriction. Maybe it's related that on PA2.0 the upper bits may be clobbered? Anyway, add a compile-time check for it now. Signed-off-by: Helge Deller <deller@xxxxxx> diff --git a/arch/parisc/include/asm/assembly.h b/arch/parisc/include/asm/assembly.h index ea0cb318b13d..ca1a12ae5ee7 100644 --- a/arch/parisc/include/asm/assembly.h +++ b/arch/parisc/include/asm/assembly.h @@ -146,6 +146,9 @@ /* Shift Right - note the r and t can NOT be the same! */ .macro shr r, sa, t extru \r, 31-(\sa), 32-(\sa), \t +.ifc \r,\t + .error "Can not used the same register (\r) in shr/extru as source and target register." +.endif .endm /* pa20w version of shift right */