From nobody Fri Feb 6 15:31:12 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4f6yjX6fkWz6RLfn for ; Fri, 06 Feb 2026 15:31:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f6yjX5Jdrz3tC5 for ; Fri, 06 Feb 2026 15:31:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770391872; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/F1Um04jsoZe/bNcClEEVIzzA4iqaJXx7D27PguxTB8=; b=lImzJpdRUrBbUu/6X31uOWuTmYRGdw3B70Qvh6AKcm9fpeWBfYnpMuxKQbyxNNrWsss9Xj oGEZYfQuAPZ5Q0WfeTQDGK/cpbh3c8m3+QLrwO6hCghYYM+TQjjdftpS8o+fvUVQ4ZhMpb WVnhe7EusKE+I8cMEx4I6R6D51GyC0GyOWMH0R/6q/3fb1SXdTEBXM13o3yvbHPWygIUpt rl+cTM7bz05jGlioQ4cBjn9EgGziT5oHFQ4iv/M/5HM5PSuOntwS/5jf/UJJBUvfviTfl3 uLxVfrYsJFuLn7c96Oz59nv66Jnnt74TyljouYRQSQEn7lqeu5jZPyKIogtZgQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1770391872; a=rsa-sha256; cv=none; b=GirbbPt6INR4nCh6pG6aeI6M4GI7YoYGoGFrgZy89Uy3PbN5fwSnnYoAaWG//hVArrSXWK oOeddGUwMR0R/G2vxwBfFsIULn1NsRT2W8qh/LvFjW1Cv8goCRu9IGTFhfobD/YeH/MPBr k4MIIjvK00NHdnklGHgFni8k3Ny1czGUzcTdYmBEOxMmI1v7PfblxgZp4FoHFJgWLaIVqQ dCQcXpfHTtrRhKY/Msi3IVARayOBq/6Q1+xEj1jATDi0+BIl70lAET5rOUcmSkZmZQPnw8 /LoQza36a0H8KbtcrR0LVgyHPauT8gC2t1YcRO81TDKW5OX58MILV3IvwQmtOg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770391872; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/F1Um04jsoZe/bNcClEEVIzzA4iqaJXx7D27PguxTB8=; b=ST/BUjO0AP+P9PIK6aw7Sbq3BmEWtqikaOO0JikfAd1/gAeuyep4Ko7AmrOm9bnen4qafB 1gcK5GlUzeRwk5OCLMikEE4Y4iUw0dJBm3a0vxNodLboQRiiaP8ZvFNsyrwzlDe2KVyqvf L/RTFh2T7T5lXCQ31i5ZVjFACPnnWgxQ605B1XzwKPgxwlC8jGYPyDOdIqzpsnbliiAeIg c7WBDqwdOgUtnkJOPQ2VKBbL8led/qm9a9FBH2cRWnoyIkO1wr2Gf5mchfrPb5Swc+LiT8 FBpaiYwtDbu7kGTaVYN0mc96njOWSlMfFNq/UnbwM6GSanmn8/eai+3lZLXnMg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f6yjX4tS8z62t for ; Fri, 06 Feb 2026 15:31:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1900e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 06 Feb 2026 15:31:12 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: e9a697bf20cc - main - STACKALIGN: Reimplement in terms of __align_down List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e9a697bf20ccbb2a19f6ad01fa3e0c14e0390847 Auto-Submitted: auto-generated Date: Fri, 06 Feb 2026 15:31:12 +0000 Message-Id: <69860940.1900e.5bab1fda@gitrepo.freebsd.org> The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=e9a697bf20ccbb2a19f6ad01fa3e0c14e0390847 commit e9a697bf20ccbb2a19f6ad01fa3e0c14e0390847 Author: John Baldwin AuthorDate: 2026-02-06 15:30:50 +0000 Commit: John Baldwin CommitDate: 2026-02-06 15:30:50 +0000 STACKALIGN: Reimplement in terms of __align_down This changes STACKALIGN to be type-preserving when operating on pointers. Reviewed by: brooks, kib Effort: CHERI upstreaming Sponsored by: AFRL, DARPA Differential Revision: https://reviews.freebsd.org/D54920 --- lib/libc/aarch64/gen/makecontext.c | 3 ++- lib/libc/riscv/gen/makecontext.c | 3 ++- sys/arm/arm/exec_machdep.c | 2 +- sys/arm/arm/machdep.c | 2 +- sys/arm/arm/vm_machdep.c | 4 ++-- sys/arm/include/param.h | 1 - sys/arm64/arm64/exec_machdep.c | 2 +- sys/arm64/arm64/vm_machdep.c | 2 +- sys/arm64/include/param.h | 1 - sys/arm64/linux/linux_sysvec.c | 2 +- sys/riscv/include/param.h | 1 - sys/riscv/riscv/exec_machdep.c | 2 +- sys/sys/param.h | 3 +++ 13 files changed, 15 insertions(+), 13 deletions(-) diff --git a/lib/libc/aarch64/gen/makecontext.c b/lib/libc/aarch64/gen/makecontext.c index 8c9b4edd7a15..2d0ee1043a9b 100644 --- a/lib/libc/aarch64/gen/makecontext.c +++ b/lib/libc/aarch64/gen/makecontext.c @@ -74,7 +74,8 @@ __makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...) va_end(ap); /* Set the stack */ - gp->gp_sp = STACKALIGN(ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size); + gp->gp_sp = STACKALIGN((uintptr_t)ucp->uc_stack.ss_sp + + ucp->uc_stack.ss_size); /* Arrange for return via the trampoline code. */ gp->gp_elr = (__register_t)_ctx_start; gp->gp_x[19] = (__register_t)func; diff --git a/lib/libc/riscv/gen/makecontext.c b/lib/libc/riscv/gen/makecontext.c index e5371d082b2c..8a6498167f13 100644 --- a/lib/libc/riscv/gen/makecontext.c +++ b/lib/libc/riscv/gen/makecontext.c @@ -80,7 +80,8 @@ __makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...) va_end(ap); /* Set the stack */ - gp->gp_sp = STACKALIGN(ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size); + gp->gp_sp = STACKALIGN((uintptr_t)ucp->uc_stack.ss_sp + + ucp->uc_stack.ss_size); /* Arrange for return via the trampoline code. */ gp->gp_sepc = (__register_t)_ctx_start; gp->gp_s[0] = (__register_t)func; diff --git a/sys/arm/arm/exec_machdep.c b/sys/arm/arm/exec_machdep.c index 011085841938..8ce00fc87a08 100644 --- a/sys/arm/arm/exec_machdep.c +++ b/sys/arm/arm/exec_machdep.c @@ -307,7 +307,7 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) fp--; /* make the stack aligned */ - fp = (struct sigframe *)STACKALIGN(fp); + fp = STACKALIGN(fp); /* Populate the siginfo frame. */ bzero(&frame, sizeof(frame)); get_mcontext(td, &frame.sf_uc.uc_mcontext, 0); diff --git a/sys/arm/arm/machdep.c b/sys/arm/arm/machdep.c index dc2205023820..60d63cebca3d 100644 --- a/sys/arm/arm/machdep.c +++ b/sys/arm/arm/machdep.c @@ -655,7 +655,7 @@ initarm(struct arm_boot_params *abp) } #endif - return ((void *)STACKALIGN(thread0.td_pcb)); + return (STACKALIGN(thread0.td_pcb)); } #endif /* FDT */ diff --git a/sys/arm/arm/vm_machdep.c b/sys/arm/arm/vm_machdep.c index 5f478b54cd66..bee1c705fbbd 100644 --- a/sys/arm/arm/vm_machdep.c +++ b/sys/arm/arm/vm_machdep.c @@ -129,7 +129,7 @@ cpu_fork(struct thread *td1, struct proc *p2, struct thread *td2, int flags) pcb2->pcb_regs.sf_r4 = (register_t)fork_return; pcb2->pcb_regs.sf_r5 = (register_t)td2; pcb2->pcb_regs.sf_lr = (register_t)fork_trampoline; - pcb2->pcb_regs.sf_sp = STACKALIGN(td2->td_frame); + pcb2->pcb_regs.sf_sp = (register_t)STACKALIGN(td2->td_frame); pcb2->pcb_regs.sf_tpidrurw = (register_t)get_tls(); #ifdef VFP @@ -194,7 +194,7 @@ cpu_copy_thread(struct thread *td, struct thread *td0) td->td_pcb->pcb_regs.sf_r4 = (register_t)fork_return; td->td_pcb->pcb_regs.sf_r5 = (register_t)td; td->td_pcb->pcb_regs.sf_lr = (register_t)fork_trampoline; - td->td_pcb->pcb_regs.sf_sp = STACKALIGN(td->td_frame); + td->td_pcb->pcb_regs.sf_sp = (register_t)STACKALIGN(td->td_frame); td->td_frame->tf_spsr &= ~PSR_C; td->td_frame->tf_r0 = 0; diff --git a/sys/arm/include/param.h b/sys/arm/include/param.h index fa9737608038..8e6f7b1d9bd6 100644 --- a/sys/arm/include/param.h +++ b/sys/arm/include/param.h @@ -47,7 +47,6 @@ #include #define STACKALIGNBYTES (8 - 1) -#define STACKALIGN(p) ((u_int)(p) & ~STACKALIGNBYTES) #ifndef MACHINE #define MACHINE "arm" diff --git a/sys/arm64/arm64/exec_machdep.c b/sys/arm64/arm64/exec_machdep.c index 207e10ede96c..9f9b74e6a0e5 100644 --- a/sys/arm64/arm64/exec_machdep.c +++ b/sys/arm64/arm64/exec_machdep.c @@ -838,7 +838,7 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) /* Make room, keeping the stack aligned */ fp = (struct sigframe *)addr; fp--; - fp = (struct sigframe *)STACKALIGN(fp); + fp = STACKALIGN(fp); /* Copy the sigframe out to the user's stack. */ if (copyout(&frame, fp, sizeof(*fp)) != 0) { diff --git a/sys/arm64/arm64/vm_machdep.c b/sys/arm64/arm64/vm_machdep.c index 0134feb65b6a..b46cb8793409 100644 --- a/sys/arm64/arm64/vm_machdep.c +++ b/sys/arm64/arm64/vm_machdep.c @@ -100,7 +100,7 @@ cpu_fork(struct thread *td1, struct proc *p2, struct thread *td2, int flags) ptrauth_fork(td2, td1); - tf = (struct trapframe *)STACKALIGN((struct trapframe *)pcb2 - 1); + tf = STACKALIGN((struct trapframe *)pcb2 - 1); bcopy(td1->td_frame, tf, sizeof(*tf)); tf->tf_x[0] = 0; tf->tf_x[1] = 0; diff --git a/sys/arm64/include/param.h b/sys/arm64/include/param.h index f3cdd4e44bc0..919dea4fb3cf 100644 --- a/sys/arm64/include/param.h +++ b/sys/arm64/include/param.h @@ -41,7 +41,6 @@ #include #define STACKALIGNBYTES (16 - 1) -#define STACKALIGN(p) ((uint64_t)(p) & ~STACKALIGNBYTES) #ifndef MACHINE #define MACHINE "arm64" diff --git a/sys/arm64/linux/linux_sysvec.c b/sys/arm64/linux/linux_sysvec.c index ac05820f89bc..9afb6fb143d6 100644 --- a/sys/arm64/linux/linux_sysvec.c +++ b/sys/arm64/linux/linux_sysvec.c @@ -338,7 +338,7 @@ linux_rt_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) /* Make room, keeping the stack aligned */ fp--; - fp = (struct l_sigframe *)STACKALIGN(fp); + fp = STACKALIGN(fp); get_mcontext(td, &uc.uc_mcontext, 0); uc.uc_sigmask = *mask; diff --git a/sys/riscv/include/param.h b/sys/riscv/include/param.h index 471d8b354b82..e1cf50df7d14 100644 --- a/sys/riscv/include/param.h +++ b/sys/riscv/include/param.h @@ -37,7 +37,6 @@ #include #define STACKALIGNBYTES (16 - 1) -#define STACKALIGN(p) ((uint64_t)(p) & ~STACKALIGNBYTES) #ifndef MACHINE #define MACHINE "riscv" diff --git a/sys/riscv/riscv/exec_machdep.c b/sys/riscv/riscv/exec_machdep.c index b1f96b1426a7..4e0d1f2a7e5c 100644 --- a/sys/riscv/riscv/exec_machdep.c +++ b/sys/riscv/riscv/exec_machdep.c @@ -370,7 +370,7 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) /* Make room, keeping the stack aligned */ fp--; - fp = (struct sigframe *)STACKALIGN(fp); + fp = STACKALIGN(fp); /* Fill in the frame to copy out */ bzero(&frame, sizeof(frame)); diff --git a/sys/sys/param.h b/sys/sys/param.h index 65a244311fee..27e8e0f14e77 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -179,6 +179,9 @@ #ifndef MAXDUMPPGS #define MAXDUMPPGS (DFLTPHYS/PAGE_SIZE) #endif +#ifdef STACKALIGNBYTES +#define STACKALIGN(p) (__align_down(p, STACKALIGNBYTES + 1)) +#endif /* * Constants related to network buffer management.