diff options
author | Vincent Chen <vincent.chen@sifive.com> | 2021-03-17 09:16:37 +0800 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2021-03-19 14:57:45 +0530 |
commit | 22d8ee9758128070aa838f7c8c46f9e50d6aaf5a (patch) | |
tree | 88720d8e0c1dd680d61cfe515dc0d5076c4f96c7 /firmware/fw_jump.S | |
parent | ff5bd949d55b14e1d308288ace71366b090f822d (diff) |
firmware: Use lla to access all global symbols
When OpenSBI is compiled as fPIE mode, the assembler will translate "la"
to GOT reference pattern. It will cause to cost an additional load
instruction when obtaining the symbol address. However, if the symbol
locates within the positive or negative 2GB region, we can use "lla"
instead of "la" to avoid unneeded GOT references. This patch assumes that
the OpenSBI image excluding the payload does not exceed 2GB. Based on
this assumption, all "la" instructions are replaced by "lla" to avoid
performance degradation when compiling as fPIE mode.
Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
Diffstat (limited to 'firmware/fw_jump.S')
-rw-r--r-- | firmware/fw_jump.S | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/firmware/fw_jump.S b/firmware/fw_jump.S index 8553f8c..5b24f8b 100644 --- a/firmware/fw_jump.S +++ b/firmware/fw_jump.S @@ -59,7 +59,7 @@ fw_next_arg1: * The next address should be returned in 'a0'. */ fw_next_addr: - la a0, _jump_addr + lla a0, _jump_addr REG_L a0, (a0) ret |