39 #include <sys/x86_archext.h>
40 #include <sys/ddi_impldefs.h>
41 #include <sys/ddi_intr.h>
42 #include <sys/avintr.h>
43 #include <sys/note.h>
44
45 static int cbe_vector;
46 static int cbe_ticks = 0;
47
48 /*
49 * cbe_xcall_lock is used to protect the xcall globals since the cyclic
50 * reprogramming API does not use cpu_lock.
51 */
52 static kmutex_t cbe_xcall_lock;
53 static cyc_func_t volatile cbe_xcall_func;
54 static cpu_t *volatile cbe_xcall_cpu;
55 static void *cbe_xcall_farg;
56 static cpuset_t cbe_enabled;
57
58 static ddi_softint_hdl_impl_t cbe_low_hdl =
59 {0, NULL, NULL, NULL, 0, NULL, NULL, NULL};
60 static ddi_softint_hdl_impl_t cbe_clock_hdl =
61 {0, NULL, NULL, NULL, 0, NULL, NULL, NULL};
62
63 cyclic_id_t cbe_hres_cyclic;
64 int cbe_psm_timer_mode = TIMER_ONESHOT;
65 static hrtime_t cbe_timer_resolution;
66
67 extern int tsc_gethrtime_enable;
68
69 void cbe_hres_tick(void);
70
71 int
72 cbe_softclock(void)
73 {
74 cyclic_softint(CPU, CY_LOCK_LEVEL);
75 return (1);
76 }
77
78 int
79 cbe_low_level(void)
80 {
81 cpu_t *cpu = CPU;
|
39 #include <sys/x86_archext.h>
40 #include <sys/ddi_impldefs.h>
41 #include <sys/ddi_intr.h>
42 #include <sys/avintr.h>
43 #include <sys/note.h>
44
45 static int cbe_vector;
46 static int cbe_ticks = 0;
47
48 /*
49 * cbe_xcall_lock is used to protect the xcall globals since the cyclic
50 * reprogramming API does not use cpu_lock.
51 */
52 static kmutex_t cbe_xcall_lock;
53 static cyc_func_t volatile cbe_xcall_func;
54 static cpu_t *volatile cbe_xcall_cpu;
55 static void *cbe_xcall_farg;
56 static cpuset_t cbe_enabled;
57
58 static ddi_softint_hdl_impl_t cbe_low_hdl =
59 {NULL, 0, {{NULL}}, NULL, NULL, NULL, NULL, NULL};
60 static ddi_softint_hdl_impl_t cbe_clock_hdl =
61 {NULL, 0, {{NULL}}, NULL, NULL, NULL, NULL, NULL};
62
63 cyclic_id_t cbe_hres_cyclic;
64 int cbe_psm_timer_mode = TIMER_ONESHOT;
65 static hrtime_t cbe_timer_resolution;
66
67 extern int tsc_gethrtime_enable;
68
69 void cbe_hres_tick(void);
70
71 int
72 cbe_softclock(void)
73 {
74 cyclic_softint(CPU, CY_LOCK_LEVEL);
75 return (1);
76 }
77
78 int
79 cbe_low_level(void)
80 {
81 cpu_t *cpu = CPU;
|