1/*
2 * Copyright 2017, Data61
3 * Commonwealth Scientific and Industrial Research Organisation (CSIRO)
4 * ABN 41 687 119 230.
5 *
6 * This software may be distributed and modified according to the terms of
7 * the GNU General Public License version 2. Note that NO WARRANTY is provided.
8 * See "LICENSE_GPLv2.txt" for details.
9 *
10 * @TAG(DATA61_GPL)
11 */
12
13#ifndef __ARCH_KERNEL_IPI_INLINE_H
14#define __ARCH_KERNEL_IPI_INLINE_H
15
16#include <config.h>
17#include <smp/ipi.h>
18
19#ifdef ENABLE_SMP_SUPPORT
20static inline void doRemoteStall(word_t cpu)
21{
22    doRemoteOp0Arg(IpiRemoteCall_Stall, cpu);
23}
24
25static inline void doRemoteswitchFpuOwner(user_fpu_state_t *new_owner, word_t cpu)
26{
27    doRemoteOp1Arg(IpiRemoteCall_switchFpuOwner, (word_t)new_owner, cpu);
28}
29
30static inline void doRemoteInvalidatePageStructureCacheASID(paddr_t root, asid_t asid, word_t mask)
31{
32    doRemoteMaskOp2Arg(IpiRemoteCall_InvalidatePageStructureCacheASID, root, asid, mask);
33}
34
35static inline void doRemoteInvalidateTranslationSingle(vptr_t vptr, word_t mask)
36{
37    doRemoteMaskOp1Arg(IpiRemoteCall_InvalidateTranslationSingle, vptr, mask);
38}
39
40static inline void doRemoteInvalidateTranslationSingleASID(vptr_t vptr, asid_t asid, word_t mask)
41{
42    doRemoteMaskOp2Arg(IpiRemoteCall_InvalidateTranslationSingleASID, vptr, asid, mask);
43}
44
45static inline void doRemoteInvalidateTranslationAll(word_t mask)
46{
47    doRemoteMaskOp0Arg(IpiRemoteCall_InvalidateTranslationAll, mask);
48}
49
50#ifdef CONFIG_VTX
51static inline void
52doRemoteClearCurrentVCPU(word_t cpu)
53{
54    doRemoteOp0Arg(IpiRemoteCall_ClearCurrentVCPU, cpu);
55}
56
57static inline void
58doRemoteVMCheckBoundNotification(word_t cpu, tcb_t *tcb)
59{
60    doRemoteOp1Arg(IpiRemoteCall_VMCheckBoundNotification, cpu, (word_t)tcb);
61}
62#endif
63
64#endif /* ENABLE_SMP_SUPPORT */
65#endif /* __ARCH_KERNEL_IPI_INLINE_H */
66