[PATCH v2] ARM: Implement ARCH_HAS_CC_CAN_LINK

From: Thomas Weißschuh

Date: Fri Feb 06 2026 - 08:02:56 EST


The generic CC_CAN_LINK detection does not handle different byte orders.
This may lead to userprogs which are not actually runnable on the target
kernel.

Use architecture-specific logic supporting byte orders instead.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@xxxxxxxxxxxxx>
---
Changes in v2:
- Handle BE8 vs BE32 platforms
- Link to v1: https://lore.kernel.org/r/20260109-cc-can-link-arm-v1-1-b748e2aaa6a6@xxxxxxxxxxxxx
---
arch/arm/Kconfig | 13 +++++++++++++
1 file changed, 13 insertions(+)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index fa83c040ee2d..d5cb85d82dad 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -6,6 +6,7 @@ config ARM
select ARCH_CORRECT_STACKTRACE_ON_KRETPROBE if HAVE_KRETPROBES && FRAME_POINTER && !ARM_UNWIND
select ARCH_HAS_BINFMT_FLAT
select ARCH_HAS_CACHE_LINE_SIZE if OF
+ select ARCH_HAS_CC_CAN_LINK
select ARCH_HAS_CPU_CACHE_ALIASING
select ARCH_HAS_CPU_FINALIZE_INIT if MMU
select ARCH_HAS_CURRENT_STACK_POINTER
@@ -1715,6 +1716,18 @@ config KERNEL_MODE_NEON

endmenu

+config ARCH_CC_CAN_LINK
+ bool
+ default $(cc_can_link_user,-mlittle-endian) if CPU_LITTLE_ENDIAN
+ default $(cc_can_link_user,-mbig-endian -mbe8) if CPU_ENDIAN_BE8
+ default $(cc_can_link_user,-mbig-endian -mbe32) if CPU_ENDIAN_BE32
+
+config ARCH_USERFLAGS
+ string
+ default "-mlittle-endian" if CPU_LITTLE_ENDIAN
+ default "-mbig-endian -mbe8" if CPU_ENDIAN_BE8
+ default "-mbig-endian -mbe32" if CPU_ENDIAN_BE32
+
menu "Power management options"

source "kernel/power/Kconfig"

---
base-commit: 8f0b4cce4481fb22653697cced8d0d04027cb1e8
change-id: 20260102-cc-can-link-arm-4eecfad2a0e4

Best regards,
--
Thomas Weißschuh <thomas.weissschuh@xxxxxxxxxxxxx>