diff --git a/freebsd/sys/sys/kernel.h b/freebsd/sys/sys/kernel.h index c739cd55..687ee531 100644 --- a/freebsd/sys/sys/kernel.h +++ b/freebsd/sys/sys/kernel.h @@ -68,8 +68,12 @@ extern int profprocs; /* number of process's profiling */ #ifndef __rtems__ extern volatile int ticks; #else /* __rtems__ */ -#include -#define ticks _Watchdog_Ticks_since_boot +/* + * This must be a singed integer type, otherwise expressions like + * (x - ticks) > 0 would yield unexpected results. + */ +extern volatile int32_t _bsd_ticks; +#define ticks _bsd_ticks #endif /* __rtems__ */ #endif /* _KERNEL */ diff --git a/rtemsbsd/rtems/rtems-bsd-init.c b/rtemsbsd/rtems/rtems-bsd-init.c index f7fcd270..fefcee33 100644 --- a/rtemsbsd/rtems/rtems-bsd-init.c +++ b/rtemsbsd/rtems/rtems-bsd-init.c @@ -85,6 +85,13 @@ SYSCTL_INT(_kern_smp, OID_AUTO, maxid, CTLFLAG_RD|CTLFLAG_CAPRD, SYSCTL_INT(_kern_smp, OID_AUTO, maxcpus, CTLFLAG_RD|CTLFLAG_CAPRD, &maxid_maxcpus, 0, "Max number of CPUs that the system was compiled for."); +RTEMS_STATIC_ASSERT(sizeof(int) == sizeof(int32_t), ticks); + +volatile uint32_t _Watchdog_Ticks_since_boot; + +extern volatile int32_t _bsd_ticks + __attribute__ ((__alias__("_Watchdog_Ticks_since_boot"))); + rtems_status_code rtems_bsd_initialize(void) {