mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-29 16:21:07 +00:00
ARM: Allow building __longjmp as Thumb.
Convert __longjmp code to allow building as Thumb. ports/ChangeLog.arm: 2013-10-04 Will Newton <will.newton@linaro.org> * sysdeps/arm/__longjmp.S (NO_THUMB): Remove define. (__longjmp): Use Thumb supported instructions. * sysdeps/unix/sysv/linux/arm/____longjmp_chk.S (NO_THUMB): Remove define.
This commit is contained in:
parent
66a9be9d58
commit
6d9b9a67af
@ -1,3 +1,10 @@
|
|||||||
|
2013-10-04 Will Newton <will.newton@linaro.org>
|
||||||
|
|
||||||
|
* sysdeps/arm/__longjmp.S (NO_THUMB): Remove define.
|
||||||
|
(__longjmp): Use Thumb supported instructions.
|
||||||
|
* sysdeps/unix/sysv/linux/arm/____longjmp_chk.S (NO_THUMB):
|
||||||
|
Remove define.
|
||||||
|
|
||||||
2013-10-03 Will Newton <will.newton@linaro.org>
|
2013-10-03 Will Newton <will.newton@linaro.org>
|
||||||
|
|
||||||
* sysdeps/arm/__longjmp.S (__longjmp): Demangle fp, sp
|
* sysdeps/arm/__longjmp.S (__longjmp): Demangle fp, sp
|
||||||
|
@ -16,8 +16,6 @@
|
|||||||
License along with the GNU C Library. If not, see
|
License along with the GNU C Library. If not, see
|
||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
/* ??? Needs more rearrangement for the LDM to handle thumb mode. */
|
|
||||||
#define NO_THUMB
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <bits/setjmp.h>
|
#include <bits/setjmp.h>
|
||||||
#include <rtld-global-offsets.h>
|
#include <rtld-global-offsets.h>
|
||||||
@ -28,6 +26,7 @@
|
|||||||
ENTRY (__longjmp)
|
ENTRY (__longjmp)
|
||||||
mov ip, r0
|
mov ip, r0
|
||||||
movs r0, r1 /* get the return value in place */
|
movs r0, r1 /* get the return value in place */
|
||||||
|
it eq
|
||||||
moveq r0, #1 /* can't let setjmp() return zero! */
|
moveq r0, #1 /* can't let setjmp() return zero! */
|
||||||
|
|
||||||
#ifdef CHECK_SP
|
#ifdef CHECK_SP
|
||||||
@ -44,7 +43,8 @@ ENTRY (__longjmp)
|
|||||||
#ifdef PTR_DEMANGLE
|
#ifdef PTR_DEMANGLE
|
||||||
PTR_DEMANGLE (fp, a4, a3, a2)
|
PTR_DEMANGLE (fp, a4, a3, a2)
|
||||||
ldr a4, [ip], #4
|
ldr a4, [ip], #4
|
||||||
PTR_DEMANGLE2 (sp, a4, a3)
|
PTR_DEMANGLE2 (a4, a4, a3)
|
||||||
|
mov sp, a4
|
||||||
ldr a4, [ip], #4
|
ldr a4, [ip], #4
|
||||||
PTR_DEMANGLE2 (lr, a4, a3)
|
PTR_DEMANGLE2 (lr, a4, a3)
|
||||||
#else
|
#else
|
||||||
|
@ -15,8 +15,6 @@
|
|||||||
License along with the GNU C Library. If not, see
|
License along with the GNU C Library. If not, see
|
||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
/* ??? Needs more rearrangement for the LDM to handle thumb mode. */
|
|
||||||
#define NO_THUMB
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
|
|
||||||
.section .rodata.str1.1,"aMS",%progbits,1
|
.section .rodata.str1.1,"aMS",%progbits,1
|
||||||
|
Loading…
Reference in New Issue
Block a user