rust: Make __udivdi3() and __umoddi3() panic

The core crate currently depends on these two functions for i64/u64/
i128/u128/core::time::Duration formatting, but we shouldn’t use that in
the kernel so let’s panic if they are ever called.

This doesn’t yet fix drm_panic_qr.rs, which also uses __udivdi3 when
CONFIG_CC_OPTIMIZE_FOR_SIZE=y, but at least makes the rest of the kernel
build on PPC32.

Signed-off-by: Link Mauve <linkmauve@linkmauve.fr>
Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com>
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/20260708082454.1254320-6-mkchauras@gmail.com
This commit is contained in:
Link Mauve
2026-07-08 13:54:52 +05:30
committed by Madhavan Srinivasan
parent e299147cdc
commit c93c194e4e
2 changed files with 10 additions and 0 deletions

View File

@@ -687,6 +687,10 @@ ifneq ($(or $(CONFIG_ARM64),$(and $(CONFIG_RISCV),$(CONFIG_64BIT))),)
__ashrti3 \
__ashlti3 __lshrti3
endif
ifdef CONFIG_PPC32
redirect-intrinsics += \
__udivdi3 __umoddi3
endif
ifdef CONFIG_MODVERSIONS
cmd_gendwarfksyms = $(if $(skip_gendwarfksyms),, \

View File

@@ -97,5 +97,11 @@ pub extern "C" fn $ident() {
__aeabi_uldivmod,
});
#[cfg(target_arch = "powerpc")]
define_panicking_intrinsics!("`u64` division/modulo should not be used", {
__udivdi3,
__umoddi3,
});
// NOTE: if you are adding a new intrinsic here, you should also add it to
// `redirect-intrinsics` in `rust/Makefile`.