PERFORCE change 207108 for review

Oleksandr Tymoshenko gonzo at FreeBSD.org
Wed Feb 29 20:21:17 UTC 2012


http://p4web.freebsd.org/@@207108?ac=10

Change 207108 by gonzo at gonzo_thinkpad on 2012/02/29 20:20:46

	- Implement stackdepth handler

Affected files ...

.. //depot/projects/dtrace-mips/sys/cddl/dev/dtrace/mips/dtrace_isa.c#6 edit

Differences ...

==== //depot/projects/dtrace-mips/sys/cddl/dev/dtrace/mips/dtrace_isa.c#6 (text+ko) ====

@@ -327,8 +327,31 @@
 int
 dtrace_getstackdepth(int aframes)
 {
-	printf("IMPLEMENT ME: %s\n", __func__);
-	return (0);
+	register_t sp, ra, pc;
+	int depth = 0;
+
+	sp = (register_t)(intptr_t)__builtin_frame_address(0);
+	ra = (register_t)(intptr_t)__builtin_return_address(0);
+
+       	__asm __volatile(
+		"jal 99f\n"
+		"nop\n"
+		"99:\n"
+		"move %0, $31\n" /* get ra */
+		"move $31, %1\n" /* restore ra */
+		: "=r" (pc)
+		: "r" (ra));
+
+	for (;;) {
+		if (next_frame(&pc, &sp, NULL, NULL) < 0)
+			break;
+		depth++;
+	}
+
+	if (depth < aframes)
+		return 0;
+	else
+		return depth - aframes;
 }
 
 ulong_t


More information about the p4-projects mailing list