diff options
Diffstat (limited to 'coroutine/arm32/Context.S')
-rw-r--r-- | coroutine/arm32/Context.S | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/coroutine/arm32/Context.S b/coroutine/arm32/Context.S index 4308e1d1d2..c5338f0b67 100644 --- a/coroutine/arm32/Context.S +++ b/coroutine/arm32/Context.S @@ -2,21 +2,28 @@ ## This file is part of the "Coroutine" project and released under the MIT License. ## ## Created by Samuel Williams on 10/5/2018. -## Copyright, 2018, by Samuel Williams. All rights reserved. +## Copyright, 2018, by Samuel Williams. ## +#define TOKEN_PASTE(x,y) x##y +#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name) + +.file "Context.S" .text +.globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer) +.align 2 +.type PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer),%function +.syntax unified -.globl coroutine_transfer -coroutine_transfer: +PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer): # Save caller state (8 registers + return address) push {r4-r11,lr} - + # Save caller stack pointer str sp, [r0] - + # Restore callee stack pointer ldr sp, [r1] - + # Restore callee state (8 registers program counter) pop {r4-r11,pc} |