arm64: Fix loading from constant address

This commit is contained in:
herman ten brugge 2021-01-12 08:46:05 +01:00
parent 00d467d44c
commit ecdee4a697

View File

@ -497,8 +497,11 @@ ST_FUNC void load(int r, SValue *sv)
}
if (svr == (VT_CONST | VT_LVAL)) {
arm64_sym(30, sv->sym, // use x30 for address
arm64_check_offset(0, arm64_type_size(svtt), sv->c.i));
if (sv->sym)
arm64_sym(30, sv->sym, // use x30 for address
arm64_check_offset(0, arm64_type_size(svtt), sv->c.i));
else
arm64_movimm (30, sv->c.i);
if (IS_FREG(r))
arm64_ldrv(arm64_type_size(svtt), fltr(r), 30,
arm64_check_offset(1, arm64_type_size(svtt), sv->c.i));
@ -612,8 +615,11 @@ ST_FUNC void store(int r, SValue *sv)
}
if (svr == (VT_CONST | VT_LVAL)) {
arm64_sym(30, sv->sym, // use x30 for address
arm64_check_offset(0, arm64_type_size(svtt), sv->c.i));
if (sv->sym)
arm64_sym(30, sv->sym, // use x30 for address
arm64_check_offset(0, arm64_type_size(svtt), sv->c.i));
else
arm64_movimm (30, sv->c.i);
if (IS_FREG(r))
arm64_strv(arm64_type_size(svtt), fltr(r), 30,
arm64_check_offset(1, arm64_type_size(svtt), sv->c.i));