On Wed, 23 Nov 2022 08:46:55 +0000 Janosch Frank <frankja@xxxxxxxxxxxxx> wrote: > When setting the first stack frame to 0, we can check for a 0 > backchain pointer when doing backtraces to know when to stop. > > Signed-off-by: Janosch Frank <frankja@xxxxxxxxxxxxx> Reviewed-by: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx> > --- > lib/s390x/stack.c | 2 ++ > s390x/cstart64.S | 2 ++ > 2 files changed, 4 insertions(+) > > diff --git a/lib/s390x/stack.c b/lib/s390x/stack.c > index e714e07c..9f234a12 100644 > --- a/lib/s390x/stack.c > +++ b/lib/s390x/stack.c > @@ -22,6 +22,8 @@ int backtrace_frame(const void *frame, const void **return_addrs, int max_depth) > for (depth = 0; stack && depth < max_depth; depth++) { > return_addrs[depth] = (void *)stack->grs[8]; > stack = stack->back_chain; > + if (!stack) > + break; > } > > return depth; > diff --git a/s390x/cstart64.S b/s390x/cstart64.S > index 666a9567..6f83da2a 100644 > --- a/s390x/cstart64.S > +++ b/s390x/cstart64.S > @@ -37,6 +37,8 @@ start: > sam64 # Set addressing mode to 64 bit > /* setup stack */ > larl %r15, stackptr > + /* Clear first stack frame */ > + xc 0(160,%r15), 0(%r15) > /* setup initial PSW mask + control registers*/ > larl %r1, initial_psw > lpswe 0(%r1)