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