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);
