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

Commit 04c7d957 authored by Paul Mundt's avatar Paul Mundt
Browse files

sh: Correct __xdiv64_32/div64_32 return value size.



These should be returning a uint32_t, whereas they were erroneously
returning a u64 before. As the register sizes are 32-bits, this doesn't
really make a lot of sense.

Reported-by: default avatarKatsuya MATSUBARA <matsu@igel.co.jp>
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 75f016a7
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -4,16 +4,15 @@

#include <linux/types.h>

extern u64 __xdiv64_32(u64 n, u32 d);
extern uint32_t __xdiv64_32(u64 n, u32 d);

u64 __div64_32(u64 *xp, u32 y)
uint32_t __div64_32(u64 *xp, u32 y)
{
	u64 rem;
	u64 q = __xdiv64_32(*xp, y);
	uint32_t rem;
	uint32_t q = __xdiv64_32(*xp, y);

	rem = *xp - q * y;
	*xp = q;

	return rem;
}
+3 −3
Original line number Diff line number Diff line
/*	
 * unsigned long long __xdiv64_32(unsigned long long n, unsigned long d); 
 * unsigned long __xdiv64_32(unsigned long long n, unsigned long d); 
 */

#include <linux/linkage.h>

.text
ENTRY(__xdiv64_32)
#ifdef  __LITTLE_ENDIAN__
#ifdef CONFIG_CPU_LITTLE_ENDIAN
	mov	r4, r0
	mov	r5, r1
#else
@@ -34,7 +34,7 @@ ENTRY(__xdiv64_32)
	rotcl	r0
	div1	r6, r1
	.endr
#ifdef  __LITTLE_ENDIAN__
#ifdef CONFIG_CPU_LITTLE_ENDIAN
	mov	r2, r1
	rts
	 rotcl	r0