summaryrefslogtreecommitdiff
path: root/patches/gcc/linaro-5.4-2017.05/871-xtensa-reimplement-register-spilling.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/gcc/linaro-5.4-2017.05/871-xtensa-reimplement-register-spilling.patch')
-rw-r--r--patches/gcc/linaro-5.4-2017.05/871-xtensa-reimplement-register-spilling.patch76
1 files changed, 0 insertions, 76 deletions
diff --git a/patches/gcc/linaro-5.4-2017.05/871-xtensa-reimplement-register-spilling.patch b/patches/gcc/linaro-5.4-2017.05/871-xtensa-reimplement-register-spilling.patch
deleted file mode 100644
index 4056f8b..0000000
--- a/patches/gcc/linaro-5.4-2017.05/871-xtensa-reimplement-register-spilling.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 40507bf199440082ed69b777986d50c31efe2520 Mon Sep 17 00:00:00 2001
-From: Max Filippov <jcmvbkbc@gmail.com>
-Date: Mon, 10 Aug 2015 21:35:20 +0300
-Subject: [PATCH 1/3] xtensa: reimplement register spilling
-
-Spilling windowed registers in userspace is much easier, more portable,
-less error-prone and equally effective as in kernel. Now that register
-spilling syscall is considered obsolete in the xtensa linux kernel
-replace it with CALL12 followed by series of ENTRY in libgcc.
-
-2015-08-18 Max Filippov <jcmvbkbc@gmail.com>
-libgcc/
- * config/xtensa/lib2funcs.S (__xtensa_libgcc_window_spill): Use
- CALL12 followed by series of ENTRY to spill windowed registers.
- (__xtensa_nonlocal_goto): Call __xtensa_libgcc_window_spill
- instead of making linux spill syscall.
-
-Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
----
-Backported from: r226962
-
- libgcc/config/xtensa/lib2funcs.S | 30 +++++++++++++++++++++++-------
- 1 file changed, 23 insertions(+), 7 deletions(-)
-
-diff --git a/libgcc/config/xtensa/lib2funcs.S b/libgcc/config/xtensa/lib2funcs.S
-index 4d451c8..ef0703f 100644
---- a/libgcc/config/xtensa/lib2funcs.S
-+++ b/libgcc/config/xtensa/lib2funcs.S
-@@ -34,10 +34,29 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- .global __xtensa_libgcc_window_spill
- .type __xtensa_libgcc_window_spill,@function
- __xtensa_libgcc_window_spill:
-- entry sp, 32
-- movi a2, 0
-- syscall
-+ entry sp, 48
-+#if XCHAL_NUM_AREGS > 16
-+ call12 1f
-+ retw
-+ .align 4
-+1:
-+ .rept (XCHAL_NUM_AREGS - 24) / 12
-+ _entry sp, 48
-+ mov a12, a0
-+ .endr
-+ _entry sp, 16
-+#if XCHAL_NUM_AREGS % 12 == 0
-+ mov a4, a4
-+#elif XCHAL_NUM_AREGS % 12 == 4
-+ mov a8, a8
-+#elif XCHAL_NUM_AREGS % 12 == 8
-+ mov a12, a12
-+#endif
- retw
-+#else
-+ mov a8, a8
-+ retw
-+#endif
- .size __xtensa_libgcc_window_spill, .-__xtensa_libgcc_window_spill
- #endif
-
-@@ -61,10 +80,7 @@ __xtensa_nonlocal_goto:
- entry sp, 32
-
- /* Flush registers. */
-- mov a5, a2
-- movi a2, 0
-- syscall
-- mov a2, a5
-+ call8 __xtensa_libgcc_window_spill
-
- /* Because the save area for a0-a3 is stored one frame below
- the one identified by a2, the only way to restore those
---
-1.8.1.4
-