| /* 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) \ |
| 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) |
| #endif /* !CONFIG_CPU_HAS_NO_MULDIV64 */ |
| |
| #endif /* __ASM_M68K_LIBGCC_H */ |