There may be contents left in the upper 32 bits of executed_addr; hence we should use a 64-bit load to make sure they are overwritten. Reviewed-by: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx> Reviewed-by: Thomas Huth <thuth@xxxxxxxxxx> Link: https://lore.kernel.org/r/20230811112949.888903-1-nrb@xxxxxxxxxxxxx Signed-off-by: Nico Boehr <nrb@xxxxxxxxxxxxx> --- s390x/spec_ex.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/s390x/spec_ex.c b/s390x/spec_ex.c index e3dd85d..72b9425 100644 --- a/s390x/spec_ex.c +++ b/s390x/spec_ex.c @@ -142,7 +142,7 @@ static int psw_odd_address(void) " larl %%r1,0f\n" " stg %%r1,%[fixup_addr]\n" " lpswe %[odd_psw]\n" - "0: lr %[executed_addr],%%r0\n" + "0: lgr %[executed_addr],%%r0\n" : [fixup_addr] "=&T" (fixup_psw.addr), [executed_addr] "=d" (executed_addr) : [odd_psw] "Q" (odd) -- 2.41.0