On 27.08.2018 10:42, Thomas Huth wrote: > 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? Guess we were lucky, at least I never saw any such thing. But yes, we were writing/reading to some wrong memory area. > > Reviewed-by: Thomas Huth <thuth@xxxxxxxxxx> > Thanks! -- Thanks, David / dhildenb