On 2018-08-24 13:50, David Hildenbrand wrote: > LARL is wrong here, as we specify an explicit address. Let's use LA > (we could also drop it and fixup all loads/stores, but this is easier). > > Signed-off-by: David Hildenbrand <david@xxxxxxxxxx> > --- > s390x/cstart64.S | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/s390x/cstart64.S b/s390x/cstart64.S > index 2f02d4d..02a4f77 100644 > --- a/s390x/cstart64.S > +++ b/s390x/cstart64.S > @@ -58,7 +58,7 @@ init_psw_cont: > /* save grs 0-15 */ > stmg %r0, %r15, GEN_LC_SW_INT_GRS > /* save fprs 0-15 + fpc */ > - larl %r1, GEN_LC_SW_INT_FPRS > + la %r1, GEN_LC_SW_INT_FPRS > std %f0, 0(%r1) > std %f1, 8(%r1) > std %f2, 16(%r1) > @@ -80,7 +80,7 @@ init_psw_cont: > > .macro RESTORE_REGS > /* restore fprs 0-15 + fpc */ > - larl %r1, GEN_LC_SW_INT_FPRS > + la %r1, GEN_LC_SW_INT_FPRS > ld %f0, 0(%r1) > ld %f1, 8(%r1) > ld %f2, 16(%r1) Uh, relative addressing was certainly wrong here, I guess this caused some weird corruption of the code in the memory? Reviewed-by: Thomas Huth <thuth@xxxxxxxxxx>