diff options
Diffstat (limited to 'coroutine/ppc64le')
| -rw-r--r-- | coroutine/ppc64le/Context.S | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/coroutine/ppc64le/Context.S b/coroutine/ppc64le/Context.S index f7bcae2c3a..819264c245 100644 --- a/coroutine/ppc64le/Context.S +++ b/coroutine/ppc64le/Context.S @@ -1,11 +1,18 @@ #define TOKEN_PASTE(x,y) x##y +.abiversion 2 .text .align 2 .globl PREFIXED_SYMBOL(coroutine_transfer) .type PREFIXED_SYMBOL(coroutine_transfer), @function PREFIXED_SYMBOL(coroutine_transfer): + # Global entry: set up TOC pointer (r2) from r12. + # Required by ELFv2 ABI when this function is reached via the PLT. + addis 2, 12, .TOC. - PREFIXED_SYMBOL(coroutine_transfer)@ha + addi 2, 2, .TOC. - PREFIXED_SYMBOL(coroutine_transfer)@l + .localentry PREFIXED_SYMBOL(coroutine_transfer), .-PREFIXED_SYMBOL(coroutine_transfer) + # Make space on the stack for caller registers addi 1,1,-160 |
