Commit 940d4113 authored by Yoshinori Sato's avatar Yoshinori Sato Committed by Rich Felker

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: default avatarYoshinori Sato <ysato@users.sourceforge.jp>
Signed-off-by: default avatarRich Felker <dalias@libc.org>
parent 2af7967a
...@@ -34,6 +34,9 @@ DECLARE_EXPORT(__sdivsi3); ...@@ -34,6 +34,9 @@ DECLARE_EXPORT(__sdivsi3);
DECLARE_EXPORT(__lshrsi3); DECLARE_EXPORT(__lshrsi3);
DECLARE_EXPORT(__ashrsi3); DECLARE_EXPORT(__ashrsi3);
DECLARE_EXPORT(__ashlsi3); DECLARE_EXPORT(__ashlsi3);
DECLARE_EXPORT(__lshrsi3_r0);
DECLARE_EXPORT(__ashrsi3_r0);
DECLARE_EXPORT(__ashlsi3_r0);
DECLARE_EXPORT(__ashiftrt_r4_6); DECLARE_EXPORT(__ashiftrt_r4_6);
DECLARE_EXPORT(__ashiftrt_r4_7); DECLARE_EXPORT(__ashiftrt_r4_7);
DECLARE_EXPORT(__ashiftrt_r4_8); DECLARE_EXPORT(__ashiftrt_r4_8);
......
...@@ -54,21 +54,38 @@ Boston, MA 02110-1301, USA. */ ...@@ -54,21 +54,38 @@ Boston, MA 02110-1301, USA. */
! !
! (none) ! (none)
! !
! __ashlsi3_r0
!
! Entry:
!
! r4: Value to shift
! r0: Shifts
!
! Exit:
!
! r0: Result
!
! Destroys:
!
! (none)
.global __ashlsi3 .global __ashlsi3
.global __ashlsi3_r0
.align 2 .align 2
__ashlsi3: __ashlsi3:
mov #31,r0 mov r5,r0
and r0,r5 .align 2
__ashlsi3_r0:
and #31,r0
mov.l r4,@-r15
mov r0,r4
mova ashlsi3_table,r0 mova ashlsi3_table,r0
mov.b @(r0,r5),r5 mov.b @(r0,r4),r4
#ifdef __sh1__ add r4,r0
add r5,r0
jmp @r0 jmp @r0
#else mov.l @r15+,r0
braf r5
#endif
mov r4,r0
.align 2 .align 2
ashlsi3_table: ashlsi3_table:
......
...@@ -54,22 +54,37 @@ Boston, MA 02110-1301, USA. */ ...@@ -54,22 +54,37 @@ Boston, MA 02110-1301, USA. */
! !
! (none) ! (none)
! !
! __ashrsi3_r0
!
! Entry:
!
! r4: Value to shift
! r0: Shifts
!
! Exit:
!
! r0: Result
!
! Destroys:
!
! (none)
.global __ashrsi3 .global __ashrsi3
.global __ashrsi3_r0
.align 2 .align 2
__ashrsi3: __ashrsi3:
mov #31,r0 mov r5,r0
and r0,r5 .align 2
__ashrsi3_r0:
and #31,r0
mov.l r4,@-r15
mov r0,r4
mova ashrsi3_table,r0 mova ashrsi3_table,r0
mov.b @(r0,r5),r5 mov.b @(r0,r4),r4
#ifdef __sh1__ add r4,r0
add r5,r0
jmp @r0 jmp @r0
#else mov.l @r15+,r0
braf r5
#endif
mov r4,r0
.align 2 .align 2
ashrsi3_table: ashrsi3_table:
......
...@@ -53,22 +53,38 @@ Boston, MA 02110-1301, USA. */ ...@@ -53,22 +53,38 @@ Boston, MA 02110-1301, USA. */
! Destroys: ! Destroys:
! !
! (none) ! (none)
!
! __lshrsi3_r0
!
! Entry:
!
! r0: Value to shift
! r5: Shifts
!
! Exit:
!
! r0: Result
!
! Destroys:
!
! (none)
! !
.global __lshrsi3 .global __lshrsi3
.global __lshrsi3_r0
.align 2 .align 2
__lshrsi3: __lshrsi3:
mov #31,r0 mov r5,r0
and r0,r5 .align 2
__lshrsi3_r0:
and #31,r0
mov.l r4,@-r15
mov r0,r4
mova lshrsi3_table,r0 mova lshrsi3_table,r0
mov.b @(r0,r5),r5 mov.b @(r0,r4),r4
#ifdef __sh1__ add r4,r0
add r5,r0
jmp @r0 jmp @r0
#else mov.l @r15+,r0
braf r5
#endif
mov r4,r0
.align 2 .align 2
lshrsi3_table: lshrsi3_table:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment