target/openrisc: Implement l.adrp

This was added to the 1.3 spec.

Reviewed-by: Stafford Horne <shorne@gmail.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2019-08-25 17:31:30 -07:00
parent a465772eea
commit 3e0e41ef33
3 changed files with 16 additions and 0 deletions

View file

@ -799,6 +799,19 @@ static bool trans_l_nop(DisasContext *dc, arg_l_nop *a)
return true;
}
static bool trans_l_adrp(DisasContext *dc, arg_l_adrp *a)
{
if (!check_v1_3(dc)) {
return false;
}
check_r0_write(dc, a->d);
tcg_gen_movi_i32(cpu_R(dc, a->d),
(dc->base.pc_next & TARGET_PAGE_MASK) +
((target_long)a->i << TARGET_PAGE_BITS));
return true;
}
static bool trans_l_addi(DisasContext *dc, arg_rri *a)
{
TCGv t0;