@----------------------------------------------------------------------------
@
@\Source: /usr/local/cvsroot/gccsdk/unixlib/source/sys/_sdiv10.s,v $
@\Date: 2003/04/05 2356:08 $
@\Revision: 1.5 $
@\State: Exp $
@\Author: joty $
@
@----------------------------------------------------------------------------

	.include	"clib/unixlib/asm_dec.s"


	.global	_kernel_sdiv10
	.global	__rt_sdiv10
	NAME	__rt_sdiv10
_kernel_sdiv10:
__rt_sdiv10:
	MOVS	a4, a1
	RSBMI	a1, a1, #0
	SUB	a2, a1, #10		@ Keep a1 - 10 for later
	SUB	a1, a1, a1, LSR #2
	ADD	a1, a1, a1, LSR #4
	ADD	a1, a1, a1, LSR #8
	ADD	a1, a1, a1, LSR #16
	MOV	a1, a1, LSR #3		@ a1 = a1 (on entry) / 10
	ADD	a3, a1, a1, LSL #2
	SUBS	a2, a2, a3, LSL #1	@ Calculate a1/10 - (a1/10)*10
	ADDPL	a1, a1, #1		@ Fix quotient
	ADDMI	a2, a2, #10		@ Fix remainder
	CMP	a4, #0			@ Negative sign ?
	RSBMI	a1, a1, #0
	RSBMI	a2, a2, #0
	return	AL, pc, lr

