This repository has been archived by the owner on Sep 5, 2023. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Massive ARM changes from Enrico Scholz
- Loading branch information
leitner
committed
Apr 19, 2014
1 parent
57543ee
commit 039e7d1
Showing
52 changed files
with
590 additions
and
352 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
#include "arm-features.h" | ||
|
||
FUNC_START __aeabi_read_tp | ||
|
||
#if __ARM_ARCH__ < 6 | ||
mvn r0, #0xf000 | ||
sub pc, r0, #31 | ||
#else | ||
mrc 15, 0, r0, cr13, cr0, 3 | ||
bx lr | ||
#endif | ||
|
||
FUNC_END __aeabi_read_tp |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,14 @@ | ||
.text | ||
.global __aeabi_unwind_cpp_pr0 | ||
.hidden __aeabi_unwind_cpp_pr0 | ||
.type __aeabi_unwind_cpp_pr0, %function | ||
#include "arm-features.h" | ||
|
||
.global __aeabi_unwind_cpp_pr1 | ||
FUNC_START __aeabi_unwind_cpp_pr0 | ||
FUNC_START __aeabi_unwind_cpp_pr1 | ||
FUNC_START __aeabi_unwind_cpp_pr2 | ||
.hidden __aeabi_unwind_cpp_pr0 | ||
.hidden __aeabi_unwind_cpp_pr1 | ||
.type __aeabi_unwind_cpp_pr1, %function | ||
|
||
.global __aeabi_unwind_cpp_pr2 | ||
.hidden __aeabi_unwind_cpp_pr2 | ||
.type __aeabi_unwind_cpp_pr2, %function | ||
|
||
__aeabi_unwind_cpp_pr0: | ||
__aeabi_unwind_cpp_pr1: | ||
__aeabi_unwind_cpp_pr2: | ||
mov pc, lr @ return from subroutine | ||
RET | ||
|
||
.size __aeabi_unwind_cpp_pr0,.-__aeabi_unwind_cpp_pr0 | ||
.size __aeabi_unwind_cpp_pr1,.-__aeabi_unwind_cpp_pr1 | ||
.size __aeabi_unwind_cpp_pr2,.-__aeabi_unwind_cpp_pr2 | ||
FUNC_END __aeabi_unwind_cpp_pr2 | ||
FUNC_END __aeabi_unwind_cpp_pr1 | ||
FUNC_END __aeabi_unwind_cpp_pr0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,23 @@ | ||
.text | ||
.global __longjmp | ||
.type __longjmp,function | ||
__longjmp: | ||
#include "arm-features.h" | ||
|
||
FUNC_START __longjmp | ||
mov ip, r0 | ||
movs r0, r1 | ||
moveq r0, #1 | ||
#ifndef __SOFTFP__ | ||
lfm f4, 4, [ip], #48 | ||
#ifndef __SOFTFP__ | ||
# if __ARM_ARCH__ == 7 | ||
vldm ip!, {d0-d15} | ||
# ifdef __ARM_NEON__ | ||
vldm ip!, {d16-d31} | ||
# endif | ||
# else | ||
lfm f4, 4, [ip]! | ||
# endif | ||
#endif | ||
ldmia ip, {r4-r11, sp, pc} | ||
|
||
#ifdef __IWMMXT__ | ||
# warning "sigjmp will not restore iwmmxt coprocessor registers" | ||
#endif | ||
|
||
ldmia ip!, {r4-r11, sp, pc} | ||
FUNC_END __longjmp |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,15 @@ | ||
.text | ||
.global __testandset | ||
__testandset: | ||
#include "arm-features.h" | ||
|
||
FUNC_START __testandset | ||
mov r2, r0 | ||
mov r1, #1 | ||
# if __ARM_ARCH__ < 6 | ||
swp r0, r1, [r2] | ||
mov pc, lr | ||
# else | ||
1: ldrex r0, [r2] | ||
strex r3, r1, [r2] | ||
cmp r3, #0 | ||
bne 1b | ||
# endif | ||
RET | ||
FUNC_END __testandset |
Oops, something went wrong.