@----------------------------------------------------------------------------
@
@\Source: /usr/local/cvsroot/gccsdk/unixlib/source/sys/_smod.s,v $
@\Date: 2002/09/24 2102:38 $
@\Revision: 1.4 $
@\State: Exp $
@\Author: admin $
@
@----------------------------------------------------------------------------

	.include	"clib/unixlib/asm_dec.s"



	.global	x$remainder
	.global	_kernel_srem
	.global	__rt_srem
	NAME	__rt_srem
_kernel_srem:
x$remainder:
__rt_srem:
	ANDS	ip,r1,#0x80000000
	RSBMI	r1,r1,#0
	MOVS	r0,r0
	@ just return for divide by zero
	return	EQ, pc, lr
	RSBMI	r0,r0,#0
	MOV	a3,r0

	CMP	a3,r1,LSR #16
	MOVLS	a3,a3,LSL #16
	CMP	a3,r1,LSR #8
	MOVLS	a3,a3,LSL #8
	CMP	a3,r1,LSR #4
	MOVLS	a3,a3,LSL #4
	CMP	a3,r1,LSR #2
	MOVLS	a3,a3,LSL #2
	CMP	a3,r1,LSR #1
	MOVLS	a3,a3,LSL #1

divloop:
	CMP	r1,a3
	SUBCS	r1,r1,a3
	MOV	a3,a3,LSR #1
	CMP	a3,r0
	BCS	divloop
	MOV	a1, r1
	TST	ip,#0x80000000
	RSBNE	a1,a1,#0
	return	AL, pc, lr

