The branch main has been updated by brooks:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=844009378da9723180923bb5fc2008d137190b62

commit 844009378da9723180923bb5fc2008d137190b62
Author:     Brooks Davis <[email protected]>
AuthorDate: 2026-07-15 08:44:03 +0000
Commit:     Brooks Davis <[email protected]>
CommitDate: 2026-07-15 09:32:16 +0000

    exterr: allow exterr to fit pointers on CHERI targets
    
    Switch to uint64ptr_t which is a uint64_t on traditional architectures
    and a uintptr_t on CHERI architectures.  This has no ABI impact on
    non-CHERI kernels.
    
    Fix truncation of 64-bit values on 32-bit kernels.
    
    Reviewed by:    kib
    Effort:         CHERI upstreaming
    Sponsored by:   Innovate UK
    Differential Revision:  https://reviews.freebsd.org/D58056
---
 sys/sys/_exterr.h    | 4 ++--
 sys/sys/_uexterror.h | 6 +++---
 sys/sys/exterrvar.h  | 6 +++---
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/sys/sys/_exterr.h b/sys/sys/_exterr.h
index 4423d6a34bdb..8f5e66ae4601 100644
--- a/sys/sys/_exterr.h
+++ b/sys/sys/_exterr.h
@@ -16,8 +16,8 @@
 struct kexterr {
        int error;
        const char *msg;
-       __uint64_t p1;
-       __uint64_t p2;
+       __uint64ptr_t p1;
+       __uint64ptr_t p2;
        unsigned cat;
        unsigned src_line;
 };
diff --git a/sys/sys/_uexterror.h b/sys/sys/_uexterror.h
index 7951b2c5b26d..a0a1ed24f1fc 100644
--- a/sys/sys/_uexterror.h
+++ b/sys/sys/_uexterror.h
@@ -20,9 +20,9 @@ struct uexterror {
        __uint32_t src_line;
        __uint32_t flags;
        __uint32_t rsrv0;
-       __uint64_t p1;
-       __uint64_t p2;
-       __uint64_t rsrv1[4];
+       __uint64ptr_t p1;
+       __uint64ptr_t p2;
+       __uint64ptr_t rsrv1[4];
        char msg[128];
 };
 
diff --git a/sys/sys/exterrvar.h b/sys/sys/exterrvar.h
index 6c75a2d01174..0a34280ff711 100644
--- a/sys/sys/exterrvar.h
+++ b/sys/sys/exterrvar.h
@@ -59,7 +59,7 @@
 
 #define        _SET_ERROR2(eerror, mmsg, pp1, pp2)                             
\
        exterr_set(eerror, EXTERR_CATEGORY, SET_ERROR_MSG(mmsg),        \
-           (uintptr_t)(pp1), (uintptr_t)(pp2), __LINE__)
+           (uint64ptr_t)(pp1), (uint64ptr_t)(pp2), __LINE__)
 #define        _SET_ERROR0(eerror, mmsg)       _SET_ERROR2(eerror, mmsg, 0, 0)
 #define        _SET_ERROR1(eerror, mmsg, pp1)  _SET_ERROR2(eerror, mmsg, pp1, 
0)
 
@@ -72,8 +72,8 @@
 void exterr_clear(struct kexterr *ke);
 void exterr_db_print(struct kexterr *ke);
 int exterr_set_from(const struct kexterr *ke);
-int exterr_set(int eerror, int category, const char *mmsg, uintptr_t pp1,
-    uintptr_t pp2, int line);
+int exterr_set(int eerror, int category, const char *mmsg, uint64ptr_t pp1,
+    uint64ptr_t pp2, int line);
 int exterr_to_ue(struct thread *td, struct uexterror *ue);
 void ktrexterr(struct thread *td);
 

Reply via email to