diff options
author | Alexey Borzenkov <snaury@gmail.com> | 2014-10-14 22:32:09 +0400 |
---|---|---|
committer | Alexey Borzenkov <snaury@gmail.com> | 2014-10-14 22:32:09 +0400 |
commit | f90dbe4c24a9aed261a5fa9f66fb95ebdb8f21cc (patch) | |
tree | b2345a2cda2d2c71157c96eaa1ddb4dc89c1c56f | |
parent | 1565ffbbe07b6d630b5f86a013a795dac4086c5c (diff) | |
parent | 505c91a68aaf5ab56325affd4d8581b32b649cf4 (diff) | |
download | greenlet-f90dbe4c24a9aed261a5fa9f66fb95ebdb8f21cc.tar.gz |
Merge pull request #65 from basak/unoptimize-return-value
arm32: force return value from asm
-rw-r--r-- | platform/switch_arm32_gcc.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/platform/switch_arm32_gcc.h b/platform/switch_arm32_gcc.h index f74b2bb..842a72c 100644 --- a/platform/switch_arm32_gcc.h +++ b/platform/switch_arm32_gcc.h @@ -57,6 +57,7 @@ slp_switch(void) { void *fp; register int *stackref, stsizediff; + int result; __asm__ volatile ("" : : : REGS_TO_SAVE); __asm__ volatile ("mov r0," REG_FP "\n\tstr r0,%0" : "=m" (fp) : : "r0"); __asm__ ("mov %0," REG_SP : "=r" (stackref)); @@ -70,9 +71,9 @@ slp_switch(void) ); SLP_RESTORE_STATE(); } - __asm__ volatile ("ldr r0,%0\n\tmov " REG_FP ",r0" : : "m" (fp) : "r0"); + __asm__ volatile ("ldr r0,%1\n\tmov " REG_FP ",r0\n\tmov %0, #0" : "=r" (result) : "m" (fp) : "r0"); __asm__ volatile ("" : : : REGS_TO_SAVE); - return 0; + return result; } #endif
\ No newline at end of file |