mirror of
https://gitee.com/openharmony/kernel_linux
synced 2025-05-20 21:56:37 +00:00

On ARM we want these to be the same size on 32- and 64-bit. This is an ABI change on ARM. X86 does not change. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Cc: Jan Beulich <JBeulich@suse.com> Cc: Keir (Xen.org) <keir@xen.org> Cc: Tim Deegan <tim@xen.org> Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Cc: linux-arm-kernel@lists.infradead.org Cc: xen-devel@lists.xen.org Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
41 lines
899 B
C
41 lines
899 B
C
#ifndef _ASM_ARM_XEN_EVENTS_H
|
|
#define _ASM_ARM_XEN_EVENTS_H
|
|
|
|
#include <asm/ptrace.h>
|
|
|
|
enum ipi_vector {
|
|
XEN_PLACEHOLDER_VECTOR,
|
|
|
|
/* Xen IPIs go here */
|
|
XEN_NR_IPIS,
|
|
};
|
|
|
|
static inline int xen_irqs_disabled(struct pt_regs *regs)
|
|
{
|
|
return raw_irqs_disabled_flags(regs->ARM_cpsr);
|
|
}
|
|
|
|
/*
|
|
* We cannot use xchg because it does not support 8-byte
|
|
* values. However it is safe to use {ldr,dtd}exd directly because all
|
|
* platforms which Xen can run on support those instructions.
|
|
*/
|
|
static inline xen_ulong_t xchg_xen_ulong(xen_ulong_t *ptr, xen_ulong_t val)
|
|
{
|
|
xen_ulong_t oldval;
|
|
unsigned int tmp;
|
|
|
|
wmb();
|
|
asm volatile("@ xchg_xen_ulong\n"
|
|
"1: ldrexd %0, %H0, [%3]\n"
|
|
" strexd %1, %2, %H2, [%3]\n"
|
|
" teq %1, #0\n"
|
|
" bne 1b"
|
|
: "=&r" (oldval), "=&r" (tmp)
|
|
: "r" (val), "r" (ptr)
|
|
: "memory", "cc");
|
|
return oldval;
|
|
}
|
|
|
|
#endif /* _ASM_ARM_XEN_EVENTS_H */
|