[Bug 225321] dtrace/powerpc64: System crash
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Wed Feb 21 15:56:32 UTC 2018
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225321
--- Comment #4 from Breno Leitao <breno.leitao at gmail.com> ---
Hi,
I created a patch that I think it makes sense.
I think that the problem we are not using the temporary stack properly, since
it is defined on the bottom of the stack, as showed:
#define TMPSTKSZ 16384 /* 16K temporary stack */
GLOBAL(tmpstk)
.space TMPSTKSZ
TOC_ENTRY(tmpstk)
So, the tmpstk is pointing to the bottom of the stack (higher address) in the
TOC.
Later, in the dbtrap: section, we get tmpstk and increase TMPSTKSZ, which is
going to get in a different area.
If the above is correct, we have two solutions:
1) Move the TOC_ENTRY to the TOP of the stack, something as (not validated):
#define TMPSTKSZ 16384 /* 16K temporary stack */
GLOBAL(tmpstk)
TOC_ENTRY(tmpstk)
.space TMPSTKSZ
2) Does not increment the tmpstk pointer, since we are on the bottom of the
stack already:
index 7ef41d90ffe..2307ec4307c 100644
--- a/sys/powerpc/aim/trap_subr64.S
+++ b/sys/powerpc/aim/trap_subr64.S
@@ -805,9 +805,9 @@ dbtrap:
andi. %r1,%r1,0xff00
mtsprg3 %r1
ld %r1,TRAP_TOCBASE(0) /* get new SP */
ld %r1,TOC_REF(tmpstk)(%r1)
- addi %r1,%r1,(TMPSTKSZ-48)
+ addi %r1,%r1,-48
Does it make any sense?
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-ppc
mailing list