sh: New gcc support
New gcc (4.8 or later) used new shift helper functions. So we need added new helper to private libgcc. Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp> Signed-off-by: Rich Felker <dalias@libc.org>
This commit is contained in:
parent
2af7967a8c
commit
940d4113f3
@ -34,6 +34,9 @@ DECLARE_EXPORT(__sdivsi3);
|
||||
DECLARE_EXPORT(__lshrsi3);
|
||||
DECLARE_EXPORT(__ashrsi3);
|
||||
DECLARE_EXPORT(__ashlsi3);
|
||||
DECLARE_EXPORT(__lshrsi3_r0);
|
||||
DECLARE_EXPORT(__ashrsi3_r0);
|
||||
DECLARE_EXPORT(__ashlsi3_r0);
|
||||
DECLARE_EXPORT(__ashiftrt_r4_6);
|
||||
DECLARE_EXPORT(__ashiftrt_r4_7);
|
||||
DECLARE_EXPORT(__ashiftrt_r4_8);
|
||||
|
@ -54,21 +54,38 @@ Boston, MA 02110-1301, USA. */
|
||||
!
|
||||
! (none)
|
||||
!
|
||||
! __ashlsi3_r0
|
||||
!
|
||||
! Entry:
|
||||
!
|
||||
! r4: Value to shift
|
||||
! r0: Shifts
|
||||
!
|
||||
! Exit:
|
||||
!
|
||||
! r0: Result
|
||||
!
|
||||
! Destroys:
|
||||
!
|
||||
! (none)
|
||||
|
||||
|
||||
.global __ashlsi3
|
||||
.global __ashlsi3_r0
|
||||
|
||||
.align 2
|
||||
__ashlsi3:
|
||||
mov #31,r0
|
||||
and r0,r5
|
||||
mov r5,r0
|
||||
.align 2
|
||||
__ashlsi3_r0:
|
||||
and #31,r0
|
||||
mov.l r4,@-r15
|
||||
mov r0,r4
|
||||
mova ashlsi3_table,r0
|
||||
mov.b @(r0,r5),r5
|
||||
#ifdef __sh1__
|
||||
add r5,r0
|
||||
mov.b @(r0,r4),r4
|
||||
add r4,r0
|
||||
jmp @r0
|
||||
#else
|
||||
braf r5
|
||||
#endif
|
||||
mov r4,r0
|
||||
mov.l @r15+,r0
|
||||
|
||||
.align 2
|
||||
ashlsi3_table:
|
||||
|
@ -54,22 +54,37 @@ Boston, MA 02110-1301, USA. */
|
||||
!
|
||||
! (none)
|
||||
!
|
||||
! __ashrsi3_r0
|
||||
!
|
||||
! Entry:
|
||||
!
|
||||
! r4: Value to shift
|
||||
! r0: Shifts
|
||||
!
|
||||
! Exit:
|
||||
!
|
||||
! r0: Result
|
||||
!
|
||||
! Destroys:
|
||||
!
|
||||
! (none)
|
||||
|
||||
.global __ashrsi3
|
||||
.global __ashrsi3_r0
|
||||
|
||||
.align 2
|
||||
__ashrsi3:
|
||||
mov #31,r0
|
||||
and r0,r5
|
||||
mov r5,r0
|
||||
.align 2
|
||||
__ashrsi3_r0:
|
||||
and #31,r0
|
||||
mov.l r4,@-r15
|
||||
mov r0,r4
|
||||
mova ashrsi3_table,r0
|
||||
mov.b @(r0,r5),r5
|
||||
#ifdef __sh1__
|
||||
add r5,r0
|
||||
mov.b @(r0,r4),r4
|
||||
add r4,r0
|
||||
jmp @r0
|
||||
#else
|
||||
braf r5
|
||||
#endif
|
||||
mov r4,r0
|
||||
mov.l @r15+,r0
|
||||
|
||||
.align 2
|
||||
ashrsi3_table:
|
||||
|
@ -53,22 +53,38 @@ Boston, MA 02110-1301, USA. */
|
||||
! Destroys:
|
||||
!
|
||||
! (none)
|
||||
!
|
||||
! __lshrsi3_r0
|
||||
!
|
||||
! Entry:
|
||||
!
|
||||
! r0: Value to shift
|
||||
! r5: Shifts
|
||||
!
|
||||
! Exit:
|
||||
!
|
||||
! r0: Result
|
||||
!
|
||||
! Destroys:
|
||||
!
|
||||
! (none)
|
||||
!
|
||||
.global __lshrsi3
|
||||
.global __lshrsi3_r0
|
||||
|
||||
.align 2
|
||||
__lshrsi3:
|
||||
mov #31,r0
|
||||
and r0,r5
|
||||
mov r5,r0
|
||||
.align 2
|
||||
__lshrsi3_r0:
|
||||
and #31,r0
|
||||
mov.l r4,@-r15
|
||||
mov r0,r4
|
||||
mova lshrsi3_table,r0
|
||||
mov.b @(r0,r5),r5
|
||||
#ifdef __sh1__
|
||||
add r5,r0
|
||||
mov.b @(r0,r4),r4
|
||||
add r4,r0
|
||||
jmp @r0
|
||||
#else
|
||||
braf r5
|
||||
#endif
|
||||
mov r4,r0
|
||||
mov.l @r15+,r0
|
||||
|
||||
.align 2
|
||||
lshrsi3_table:
|
||||
|
Loading…
Reference in New Issue
Block a user