summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac3
-rw-r--r--coroutine/arm32/Context.S7
-rw-r--r--coroutine/arm32/Context.h2
3 files changed, 4 insertions, 8 deletions
diff --git a/configure.ac b/configure.ac
index 3c87f78d44..69fa93a1c9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2272,9 +2272,6 @@ AS_CASE(["$rb_cv_fiber_coroutine"], [yes|''], [
[x64-mingw32], [
rb_cv_fiber_coroutine=win64
],
- [armv7*-linux-*], [
- rb_cv_fiber_coroutine=arm32
- ],
[aarch64-linux], [
rb_cv_fiber_coroutine=arm64
],
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
{