Blackfin arch: get oprofile work for user space

Signed-off-by: Graf Yang <graf.yang@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>

diff --git a/arch/blackfin/mach-common/interrupt.S b/arch/blackfin/mach-common/interrupt.S
index 4a2ec7a..2604b53 100644
--- a/arch/blackfin/mach-common/interrupt.S
+++ b/arch/blackfin/mach-common/interrupt.S
@@ -152,6 +152,12 @@
 1:
 #endif
 
+	# We are going to dump something out, so make sure we print IPEND properly
+	p2.l = lo(IPEND);
+	p2.h = hi(IPEND);
+	r0 = [p2];
+	[sp + PT_IPEND] = r0;
+
 #ifdef CONFIG_HARDWARE_PM
 	r7 = [sp + PT_SEQSTAT];
 	r7 = r7 >>> 0xe;
@@ -161,11 +167,6 @@
 	cc = r7 == r5;
 	if cc jump .Lcall_do_ovf; /* deal with performance counter overflow */
 #endif
-	# We are going to dump something out, so make sure we print IPEND properly
-	p2.l = lo(IPEND);
-	p2.h = hi(IPEND);
-	r0 = [p2];
-	[sp + PT_IPEND] = r0;
 
 	/* set the EXCAUSE to HWERR for trap_c */
 	r0 = [sp + PT_SEQSTAT];
@@ -196,6 +197,7 @@
 #ifdef CONFIG_HARDWARE_PM
 .Lcall_do_ovf:
 
+	R0 = SP;
 	SP += -12;
 	call _pm_overflow;
 	SP += 12;