arch-intr.h (2d795ab1eaa78c6dd5d214285db7f94ff870bd45) arch-intr.h (6699c22c1cb0f8a355ecb9d030c6990e48f8d7db)
1/*-
2 * SPDX-License-Identifier: MIT OR GPL-2.0-only
3 *
4 * Copyright © 2015 Julien Grall
5 * Copyright © 2021 Elliott Mitchell
6 *
7 * This file may be distributed separately from the Linux kernel, or
8 * incorporated into other software packages, subject to the following license:

--- 16 unchanged lines hidden (view full) ---

25 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
26 * IN THE SOFTWARE.
27 */
28
29#ifndef _MACHINE__XEN_ARCH_INTR_H_
30#define _MACHINE__XEN_ARCH_INTR_H_
31
32#include <x86/intr_machdep.h>
1/*-
2 * SPDX-License-Identifier: MIT OR GPL-2.0-only
3 *
4 * Copyright © 2015 Julien Grall
5 * Copyright © 2021 Elliott Mitchell
6 *
7 * This file may be distributed separately from the Linux kernel, or
8 * incorporated into other software packages, subject to the following license:

--- 16 unchanged lines hidden (view full) ---

25 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
26 * IN THE SOFTWARE.
27 */
28
29#ifndef _MACHINE__XEN_ARCH_INTR_H_
30#define _MACHINE__XEN_ARCH_INTR_H_
31
32#include <x86/intr_machdep.h>
33#include <x86/apicvar.h>
33
34typedef struct {
35 struct intsrc intsrc; /* @TOP -> *xen_arch_isrc */
36 u_int vector; /* Global isrc vector number */
37} xen_arch_isrc_t;
38
34
35typedef struct {
36 struct intsrc intsrc; /* @TOP -> *xen_arch_isrc */
37 u_int vector; /* Global isrc vector number */
38} xen_arch_isrc_t;
39
39extern struct pic xen_intr_pic;
40
41#include <dev/xen/bus/intr-internal.h>
42
43/******************************* ARCH wrappers *******************************/
44
45extern void xen_arch_intr_init(void);
46
40#include <dev/xen/bus/intr-internal.h>
41
42/******************************* ARCH wrappers *******************************/
43
44extern void xen_arch_intr_init(void);
45
46extern struct xenisrc *xen_arch_intr_alloc(void);
47extern void xen_arch_intr_release(struct xenisrc *isrc);
48
49static inline u_int
50xen_arch_intr_next_cpu(struct xenisrc *isrc)
51{
52
53 return (apic_cpuid(intr_next_cpu(0)));
54}
55
47static inline u_long
48xen_arch_intr_execute_handlers(struct xenisrc *isrc, struct trapframe *frame)
49{
50
51 intr_execute_handlers(&isrc->xi_arch.intsrc, frame);
52 return (0);
53}
54

--- 32 unchanged lines hidden ---
56static inline u_long
57xen_arch_intr_execute_handlers(struct xenisrc *isrc, struct trapframe *frame)
58{
59
60 intr_execute_handlers(&isrc->xi_arch.intsrc, frame);
61 return (0);
62}
63

--- 32 unchanged lines hidden ---