Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -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);
+26 −9
Original line number Original line Diff line number Diff line
@@ -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:
+24 −9
Original line number Original line Diff line number Diff line
@@ -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:
+25 −9
Original line number Original line Diff line number Diff line
@@ -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: