18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#ifndef _ASM_ARM_XEN_EVENTS_H
38c2ecf20Sopenharmony_ci#define _ASM_ARM_XEN_EVENTS_H
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci#include <asm/ptrace.h>
68c2ecf20Sopenharmony_ci#include <asm/atomic.h>
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_cienum ipi_vector {
98c2ecf20Sopenharmony_ci	XEN_PLACEHOLDER_VECTOR,
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci	/* Xen IPIs go here */
128c2ecf20Sopenharmony_ci	XEN_NR_IPIS,
138c2ecf20Sopenharmony_ci};
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_cistatic inline int xen_irqs_disabled(struct pt_regs *regs)
168c2ecf20Sopenharmony_ci{
178c2ecf20Sopenharmony_ci	return raw_irqs_disabled_flags(regs->ARM_cpsr);
188c2ecf20Sopenharmony_ci}
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci#define xchg_xen_ulong(ptr, val) atomic64_xchg(container_of((long long*)(ptr),\
218c2ecf20Sopenharmony_ci							    atomic64_t,	\
228c2ecf20Sopenharmony_ci							    counter), (val))
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci/* Rebind event channel is supported by default */
258c2ecf20Sopenharmony_cistatic inline bool xen_support_evtchn_rebind(void)
268c2ecf20Sopenharmony_ci{
278c2ecf20Sopenharmony_ci	return true;
288c2ecf20Sopenharmony_ci}
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci#endif /* _ASM_ARM_XEN_EVENTS_H */
31