mirror of
https://github.com/mirror/tinycc.git
synced 2025-02-26 08:00:09 +08:00
arm64: Fix loading from constant address
This commit is contained in:
parent
00d467d44c
commit
ecdee4a697
14
arm64-gen.c
14
arm64-gen.c
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user