|
From: | Richard Henderson |
Subject: | Re: [PATCH 21/30] tcg/loongarch: Implement tcg_out_call |
Date: | Mon, 20 Sep 2021 09:31:12 -0700 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 |
On 9/20/21 1:04 AM, WANG Xuerui wrote:
+ } else if (TCG_TARGET_REG_BITS == 32 || offset == (int32_t)offset) { + /* long jump: +/- 2GiB */ + tcg_out_opc_pcaddu12i(s, TCG_REG_TMP0, 0); + tcg_out_opc_jirl(s, link, TCG_REG_TMP0, 0); + ret = reloc_call(s->code_ptr - 2, arg); + tcg_debug_assert(ret == true);
Just inline reloc_call here, so that you can provide the correct offsets to the pcadd and jirl instructions directly. The assert will vanish, because you've already done the range check with "offset == (int32_t)offset".
r~
[Prev in Thread] | Current Thread | [Next in Thread] |