summaryrefslogtreecommitdiff
path: root/coroutine
diff options
context:
space:
mode:
authorYusuke Endoh <mame@ruby-lang.org>2019-06-26 17:22:46 +0900
committerYusuke Endoh <mame@ruby-lang.org>2019-06-26 17:23:00 +0900
commit28eeaed8a9ec2557e8f8d42d8ab3e7cad310a8a9 (patch)
tree428266e7013e822ea15f47fd822e01625dc464fd /coroutine
parent6c6bf9ffcbfeb8be9d9c342e7604b74ec819e88a (diff)
Revert "coroutine/arm32/Context.S: save/restore the registers via stack"
This reverts commit 6df1814c08df93bbc0b3e7a73649bcf82e126064. It caused a SEGV again: https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20190626T051707Z.fail.html.gz
Diffstat (limited to 'coroutine')
-rw-r--r--coroutine/arm32/Context.S7
-rw-r--r--coroutine/arm32/Context.h2
2 files changed, 4 insertions, 5 deletions
diff --git a/coroutine/arm32/Context.S b/coroutine/arm32/Context.S
index a44ba48778..c2b93d0a34 100644
--- a/coroutine/arm32/Context.S
+++ b/coroutine/arm32/Context.S
@@ -9,7 +9,6 @@
.globl coroutine_transfer
coroutine_transfer:
- push {r4-r11,lr}
- str sp, [r0]
- ldr sp, [r1]
- pop {r4-r11,pc}
+ stmia r1!, {r4-r11,sp,lr}
+ ldmia r0!, {r4-r11,sp,pc}
+ bx lr
diff --git a/coroutine/arm32/Context.h b/coroutine/arm32/Context.h
index 27f97908bc..d6d3c7f313 100644
--- a/coroutine/arm32/Context.h
+++ b/coroutine/arm32/Context.h
@@ -12,7 +12,7 @@
#define COROUTINE __attribute__((noreturn)) void
-enum {COROUTINE_REGISTERS = 8};
+enum {COROUTINE_REGISTERS = 9};
struct coroutine_context
{