We seem to cast adb_cuda_tickle() to a void pointer to bypass timeout_set(9)'s type checking
The actual function takes no parameters, but the timeout layer doesn't know that. Eek. This is no good. The fix is trivial. Add an unused void pointer parameter to adb_cuda_tickle(). ok? Index: adb.c =================================================================== RCS file: /cvs/src/sys/arch/macppc/dev/adb.c,v retrieving revision 1.43 diff -u -p -r1.43 adb.c --- adb.c 11 Mar 2021 11:16:58 -0000 1.43 +++ adb.c 22 Jun 2021 19:26:07 -0000 @@ -228,7 +228,7 @@ void print_single(u_char *); void adb_intr_cuda(void); void adb_soft_intr(void); int send_adb_cuda(u_char *, u_char *, void *, void *, int); -void adb_cuda_tickle(void); +void adb_cuda_tickle(void *); void adb_pass_up(struct adbCommand *); void adb_op_comprout(caddr_t, caddr_t, int); void adb_reinit(struct adb_softc *); @@ -276,7 +276,7 @@ print_single(u_char *str) #endif void -adb_cuda_tickle(void) +adb_cuda_tickle(void *unused) { volatile int s; @@ -1160,7 +1160,7 @@ adb_reinit(struct adb_softc *sc) #endif if (adbHardware == ADB_HW_CUDA) { - timeout_set(&adb_cuda_timeout, (void *)adb_cuda_tickle, NULL); + timeout_set(&adb_cuda_timeout, adb_cuda_tickle, NULL); timeout_add(&adb_cuda_timeout, ADB_TICKLE_TICKS); }