2023-11-13 23:32:09 +10:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
#ifndef __ASM_M68K_LIBGCC_H
|
|
|
|
#define __ASM_M68K_LIBGCC_H
|
|
|
|
|
|
|
|
#ifndef CONFIG_CPU_HAS_NO_MULDIV64
|
|
|
|
/*
|
|
|
|
* For those 68K CPUs that support 64bit multiply define umul_ppm()
|
|
|
|
* for the common muldi3 libgcc helper function (in lib/muldi3.c).
|
|
|
|
* CPUs that don't have it (like the original 68000 and ColdFire)
|
|
|
|
* will fallback to using the C-coded version of umul_ppmm().
|
|
|
|
*/
|
|
|
|
#define umul_ppmm(w1, w0, u, v) \
|
2025-01-08 18:22:00 +01:00
|
|
|
do { \
|
|
|
|
unsigned long __u = (u), __v = (v); \
|
|
|
|
unsigned long __w0, __w1; \
|
|
|
|
\
|
|
|
|
__asm__ ("mulu%.l %3,%1:%0" \
|
|
|
|
: "=d" (__w0), \
|
|
|
|
"=d" (__w1) \
|
|
|
|
: "%0" (__u), \
|
|
|
|
"dmi" (__v)); \
|
|
|
|
\
|
|
|
|
(w0) = __w0; (w1) = __w1; \
|
|
|
|
} while (0)
|
2023-11-13 23:32:09 +10:00
|
|
|
#endif /* !CONFIG_CPU_HAS_NO_MULDIV64 */
|
|
|
|
|
|
|
|
#endif /* __ASM_M68K_LIBGCC_H */
|