sh, landisk: switch to clockintr
authorcheloha <cheloha@openbsd.org>
Tue, 6 Dec 2022 01:19:35 +0000 (01:19 +0000)
committercheloha <cheloha@openbsd.org>
Tue, 6 Dec 2022 01:19:35 +0000 (01:19 +0000)
Patch review and testing by miod@.

Link: https://marc.info/?l=openbsd-tech&m=166776412003652&w=2
ok mlarkin@, probably ok miod@

sys/arch/sh/include/_types.h
sys/arch/sh/include/cpu.h
sys/arch/sh/sh/clock.c

index 208b3f4..7a75ef6 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: _types.h,v 1.20 2018/03/05 01:15:25 deraadt Exp $     */
+/*     $OpenBSD: _types.h,v 1.21 2022/12/06 01:19:35 cheloha Exp $     */
 
 /*-
  * Copyright (c) 1990, 1993
@@ -35,6 +35,8 @@
 #ifndef _SH__TYPES_H_
 #define _SH__TYPES_H_
 
+#define        __HAVE_CLOCKINTR
+
 #if defined(_KERNEL)
 typedef struct label_t {
        long val[9];
index 08ee0b7..8bd445f 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: cpu.h,v 1.33 2022/02/21 10:44:58 jsg Exp $    */
+/*     $OpenBSD: cpu.h,v 1.34 2022/12/06 01:19:35 cheloha Exp $        */
 /*     $NetBSD: cpu.h,v 1.41 2006/01/21 04:24:12 uwe Exp $     */
 
 /*-
@@ -55,6 +55,7 @@
  */
 
 #include <machine/intr.h>
+#include <sys/clockintr.h>
 #include <sys/sched.h>
 
 struct cpu_info {
@@ -71,6 +72,8 @@ struct cpu_info {
 
        int     ci_want_resched;
 
+       struct clockintr_queue ci_queue;
+
        char    ci_panicbuf[512];
 };
 
index f403f15..ea9cfa3 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: clock.c,v 1.11 2020/10/20 15:59:17 cheloha Exp $      */
+/*     $OpenBSD: clock.c,v 1.12 2022/12/06 01:19:35 cheloha Exp $      */
 /*     $NetBSD: clock.c,v 1.32 2006/09/05 11:09:36 uwe Exp $   */
 
 /*-
@@ -33,6 +33,7 @@
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
+#include <sys/clockintr.h>
 #include <sys/device.h>
 #include <sys/timetc.h>
 
@@ -205,7 +206,7 @@ sh_clock_get_pclock(void)
 void
 setstatclockrate(int newhz)
 {
-       /* XXX not yet */
+       clockintr_setstatclockrate(newhz);
 }
 
 u_int
@@ -261,6 +262,12 @@ cpu_initclocks(void)
        tick = 1000000 / hz;
        tick_nsec = 1000000000 / hz;
 
+       stathz = hz;
+       profhz = stathz;
+       clockintr_init(0);
+
+       clockintr_cpu_init(NULL);
+
        /*
         * Use TMU channel 0 as hard clock
         */
@@ -332,7 +339,7 @@ sh3_clock_intr(void *arg) /* trap frame */
        /* clear underflow status */
        _reg_bclr_2(SH3_TCR0, TCR_UNF);
 
-       hardclock(arg);
+       clockintr_dispatch(arg);
 
        return (1);
 }
@@ -353,7 +360,7 @@ sh4_clock_intr(void *arg) /* trap frame */
        /* clear underflow status */
        _reg_bclr_2(SH4_TCR0, TCR_UNF);
 
-       hardclock(arg);
+       clockintr_dispatch(arg);
 
        return (1);
 }