diff options
author | Martin Storsjö <martin@martin.st> | 2019-10-10 23:16:42 +0300 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2019-10-11 08:56:16 +0300 |
commit | 5d014b41b8a2e09a5c786e26eaa8c61e676e24ea (patch) | |
tree | 90a5f4175d94cfd536d24940d566fd41e27eaa14 /src/arm/32/util.S | |
parent | b7d7c8ce18693d64c52956944c39777d047cfd4d (diff) |
arm: util: Split movrel into movrel and movrel_local
Diffstat (limited to 'src/arm/32/util.S')
-rw-r--r-- | src/arm/32/util.S | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/arm/32/util.S b/src/arm/32/util.S index ddf157f..861923d 100644 --- a/src/arm/32/util.S +++ b/src/arm/32/util.S @@ -32,9 +32,22 @@ #include "config.h" #include "src/arm/asm.S" -.macro movrel rd, val, offset=0, global=1 +.macro movrel_local rd, val, offset=0 +#if defined(PIC) + ldr \rd, 1f + b 2f +1: + .word \val + \offset - (2f + 8 - 4 * CONFIG_THUMB) +2: + add \rd, \rd, pc +#else + movw \rd, #:lower16:\val+\offset + movt \rd, #:upper16:\val+\offset +#endif +.endm + +.macro movrel rd, val, offset=0 #if defined(PIC) && defined(__APPLE__) -.if \global ldr \rd, 1f b 2f 1: @@ -51,21 +64,8 @@ .indirect_symbol \val .word 0 .text -.else -#endif -#if defined(PIC) - ldr \rd, 1f - b 2f -1: - .word \val + \offset - (2f + 8 - 4 * CONFIG_THUMB) -2: - add \rd, \rd, pc -#if defined(__APPLE__) -.endif -#endif #else - movw \rd, #:lower16:\val+\offset - movt \rd, #:upper16:\val+\offset + movrel_local \rd, \val, \offset #endif .endm |