Skip to content

Commit

Permalink
sh: New gcc support
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Rich Felker <[email protected]>
  • Loading branch information
ysat0 authored and Rich Felker committed Mar 17, 2016
1 parent 2af7967 commit 940d411
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 27 deletions.
3 changes: 3 additions & 0 deletions arch/sh/kernel/sh_ksyms_32.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
35 changes: 26 additions & 9 deletions arch/sh/lib/ashlsi3.S
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
33 changes: 24 additions & 9 deletions arch/sh/lib/ashrsi3.S
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
34 changes: 25 additions & 9 deletions arch/sh/lib/lshrsi3.S
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down

0 comments on commit 940d411

Please sign in to comment.