Title: [8235] trunk/arch/blackfin/include/asm/ftrace.h: rewrite return_address() - make it a little simpler.
Revision
8235
Author
adamliyi
Date
2010-01-26 04:31:23 -0500 (Tue, 26 Jan 2010)

Log Message

rewrite return_address() - make it a little simpler.

Modified Paths


Diff

Modified: trunk/arch/blackfin/include/asm/ftrace.h (8234 => 8235)


--- trunk/arch/blackfin/include/asm/ftrace.h	2010-01-26 07:33:53 UTC (rev 8234)
+++ trunk/arch/blackfin/include/asm/ftrace.h	2010-01-26 09:31:23 UTC (rev 8235)
@@ -20,23 +20,22 @@
 	unsigned long *endstack, *fp, *ret_addr;
 	unsigned int current_level = 0;
 
-	ret_addr = (unsigned long *)__builtin_return_address(0);
+	if (level == 0)
+		return __builtin_return_address(0);
+
 	fp = (unsigned long *)__builtin_frame_address(0);
 	endstack = (unsigned long *)PAGE_ALIGN((unsigned int)&level);
 
-	if (level == 0
-		|| !(fp && ((unsigned int)fp & 0x3) == 0 && fp < endstack))
-		return ret_addr;
-
-	fp = (unsigned long *)*fp;
-	while (current_level < level && fp && ((unsigned int)fp & 0x3) == 0
-		&& (fp + 1) < endstack) {
-		ret_addr = (unsigned long *)*(fp + 1);
-		current_level++;
+	while (((unsigned int)fp & 0x3) == 0 && fp
+			&& (fp + 1) < endstack && current_level < level) {
 		fp = (unsigned long *)*fp;
+		current_level++;
 	}
 
-	if (current_level < level)
+	if (((unsigned int)fp & 0x3) == 0 && fp
+			&& (fp + 1) < endstack)
+		ret_addr = (unsigned long *)*(fp + 1);
+	else
 		ret_addr = NULL;
 
 	return ret_addr;
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to