version 1.25.2.1, 2019/06/10 22:06:56 |
version 1.25.2.2, 2020/04/08 14:07:59 |
|
|
/* $NetBSD$ */ |
/* $NetBSD$ */ |
|
|
/*- |
/*- |
* Copyright (c) 2011 The NetBSD Foundation, Inc. |
* Copyright (c) 2011, 2019 The NetBSD Foundation, Inc. |
* All rights reserved. |
* All rights reserved. |
* |
* |
* This code is derived from software contributed to The NetBSD Foundation |
* This code is derived from software contributed to The NetBSD Foundation |
Line 71 static void xen_ipi_synch_fpu(struct cpu |
|
Line 71 static void xen_ipi_synch_fpu(struct cpu |
|
static void xen_ipi_xcall(struct cpu_info *, struct intrframe *); |
static void xen_ipi_xcall(struct cpu_info *, struct intrframe *); |
static void xen_ipi_hvcb(struct cpu_info *, struct intrframe *); |
static void xen_ipi_hvcb(struct cpu_info *, struct intrframe *); |
static void xen_ipi_generic(struct cpu_info *, struct intrframe *); |
static void xen_ipi_generic(struct cpu_info *, struct intrframe *); |
|
static void xen_ipi_ast(struct cpu_info *, struct intrframe *); |
|
|
static void (*ipifunc[XEN_NIPIS])(struct cpu_info *, struct intrframe *) = |
static void (*ipifunc[XEN_NIPIS])(struct cpu_info *, struct intrframe *) = |
{ /* In order of priority (see: xen/include/intrdefs.h */ |
{ /* In order of priority (see: xen/include/intrdefs.h */ |
Line 84 static void (*ipifunc[XEN_NIPIS])(struct |
|
Line 85 static void (*ipifunc[XEN_NIPIS])(struct |
|
xen_ipi_xcall, |
xen_ipi_xcall, |
xen_ipi_hvcb, |
xen_ipi_hvcb, |
xen_ipi_generic, |
xen_ipi_generic, |
|
xen_ipi_ast |
}; |
}; |
|
|
static int |
static int |
Line 152 valid_ipimask(uint32_t ipimask) |
|
Line 154 valid_ipimask(uint32_t ipimask) |
|
{ |
{ |
uint32_t masks = XEN_IPI_GENERIC | XEN_IPI_HVCB | XEN_IPI_XCALL | |
uint32_t masks = XEN_IPI_GENERIC | XEN_IPI_HVCB | XEN_IPI_XCALL | |
XEN_IPI_DDB | XEN_IPI_SYNCH_FPU | |
XEN_IPI_DDB | XEN_IPI_SYNCH_FPU | |
XEN_IPI_HALT | XEN_IPI_KICK; |
XEN_IPI_HALT | XEN_IPI_KICK | XEN_IPI_AST; |
|
|
if (ipimask & ~masks) { |
if (ipimask & ~masks) { |
return false; |
return false; |
Line 283 xen_ipi_xcall(struct cpu_info *ci, struc |
|
Line 285 xen_ipi_xcall(struct cpu_info *ci, struc |
|
xc_ipi_handler(); |
xc_ipi_handler(); |
} |
} |
|
|
|
static void |
|
xen_ipi_ast(struct cpu_info *ci, struct intrframe *intrf) |
|
{ |
|
KASSERT(ci != NULL); |
|
KASSERT(intrf != NULL); |
|
|
|
aston(ci->ci_onproc); |
|
} |
|
|
void |
void |
xc_send_ipi(struct cpu_info *ci) |
xc_send_ipi(struct cpu_info *ci) |
{ |
{ |