RISC-V: Change CALL macro to use ra as the temporary address register
authorMichael Clark <michaeljclark@mac.com>
Thu, 27 Apr 2017 04:08:46 +0000 (16:08 +1200)
committerPalmer Dabbelt <palmer@dabbelt.com>
Tue, 2 May 2017 22:19:07 +0000 (15:19 -0700)
commit43e379d74c994fe431368b5f25f778bf601a2981
treec35649586f7b5caa472a2c5a6e55079cae3e8372
parent763a5fa4f330d6d3859c94a69ba1fcab09330cf9
RISC-V: Change CALL macro to use ra as the temporary address register

e.g.

    1:  auipc ra, %pcrel_hi(symbol)
        jalr  ra, %pcrel_lo(1b)(ra)

The use of ra instead of t1 for address construction provides an
opportunity for a microarchitecture to elide the write of the
destination address, and instead read the target address as an
immediate spread across the fused auipc+jalr pair. The link
register ra in the jalr overwrites the target address temporary.

2017-05-01  Michael Clark  <michaeljclark@mac.com>

* riscv-opc.c (riscv_opcodes) <call>: Use RA not T1 as a temporary
register.
opcodes/ChangeLog
opcodes/riscv-opc.c