From 13d10929397a56a39552c0ed094db25028fc8943 Mon Sep 17 00:00:00 2001 From: hujun5 Date: Mon, 24 Mar 2025 13:49:25 +0800 Subject: [PATCH] arm64: add missing REG_SCTLR_EL1 initialization in signal processing Add REG_SCTLR_EL1 system register initialization in arm64_init_signal_process when setting up register context for signal handlers. Initialize with current sctlr_el1 value and apply CONFIG_ARM64_MTE settings if enabled. Fixes regression where signal handler context was missing critical system control register setup. Signed-off-by: hujun5 --- arch/arm64/src/common/arm64_schedulesigaction.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/arm64/src/common/arm64_schedulesigaction.c b/arch/arm64/src/common/arm64_schedulesigaction.c index 26b0217406f..36eba973814 100644 --- a/arch/arm64/src/common/arm64_schedulesigaction.c +++ b/arch/arm64/src/common/arm64_schedulesigaction.c @@ -66,6 +66,11 @@ static void arm64_init_signal_process(struct tcb_s *tcb, uint64_t *regs) tcb->xcp.regs[REG_SPSR] = SPSR_MODE_EL1H | DAIF_FIQ_BIT | DAIF_IRQ_BIT; #endif + tcb->xcp.regs[REG_SCTLR_EL1] = read_sysreg(sctlr_el1); +#ifdef CONFIG_ARM64_MTE + tcb->xcp.regs[REG_SCTLR_EL1] |= SCTLR_TCF1_BIT; +#endif + #ifdef CONFIG_ARCH_KERNEL_STACK tcb->xcp.regs[REG_SP_EL0] = regs[REG_SP_EL0]; #else