Unified · Split
| @@ -497,8 +497,11 @@ ST_FUNC void load(int r, SValue *sv) · 496 unmodified lines | ||
| 497 | 497 | } |
| 498 | 498 | |
| 499 | 499 | if (svr == (VT_CONST | VT_LVAL)) { |
| 500 | − arm64_sym(30, sv->sym, // use x30 for address | |
| 501 | − arm64_check_offset(0, arm64_type_size(svtt), sv->c.i)); | |
| 500 | + if (sv->sym) | |
| 501 | + arm64_sym(30, sv->sym, // use x30 for address | |
| 502 | + arm64_check_offset(0, arm64_type_size(svtt), sv->c.i)); | |
| 503 | + else | |
| 504 | + arm64_movimm (30, sv->c.i); | |
| 502 | 505 | if (IS_FREG(r)) |
| 503 | 506 | arm64_ldrv(arm64_type_size(svtt), fltr(r), 30, |
| 504 | 507 | arm64_check_offset(1, arm64_type_size(svtt), sv->c.i)); |
| @@ -612,8 +615,11 @@ ST_FUNC void store(int r, SValue *sv) · 107 unmodified lines | ||
| 612 | 615 | } |
| 613 | 616 | |
| 614 | 617 | if (svr == (VT_CONST | VT_LVAL)) { |
| 615 | − arm64_sym(30, sv->sym, // use x30 for address | |
| 616 | − arm64_check_offset(0, arm64_type_size(svtt), sv->c.i)); | |
| 618 | + if (sv->sym) | |
| 619 | + arm64_sym(30, sv->sym, // use x30 for address | |
| 620 | + arm64_check_offset(0, arm64_type_size(svtt), sv->c.i)); | |
| 621 | + else | |
| 622 | + arm64_movimm (30, sv->c.i); | |
| 617 | 623 | if (IS_FREG(r)) |
| 618 | 624 | arm64_strv(arm64_type_size(svtt), fltr(r), 30, |
| 619 | 625 | arm64_check_offset(1, arm64_type_size(svtt), sv->c.i)); |