1/*
2 * Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 */
6
7#pragma once
8
9#include <config.h>
10#include <smp/ipi.h>
11
12#ifdef ENABLE_SMP_SUPPORT
13static inline void doRemoteStall(word_t cpu)
14{
15    doRemoteOp0Arg(IpiRemoteCall_Stall, cpu);
16}
17
18#ifdef CONFIG_HAVE_FPU
19static inline void doRemoteswitchFpuOwner(user_fpu_state_t *new_owner, word_t cpu)
20{
21    doRemoteOp1Arg(IpiRemoteCall_switchFpuOwner, (word_t)new_owner, cpu);
22}
23#endif /* CONFIG_HAVE_FPU */
24
25static inline void doRemoteInvalidateTranslationSingle(vptr_t vptr, word_t mask)
26{
27    doRemoteMaskOp1Arg(IpiRemoteCall_InvalidateTranslationSingle, vptr, mask);
28}
29
30static inline void doRemoteInvalidateTranslationASID(asid_t asid, word_t mask)
31{
32    doRemoteMaskOp1Arg(IpiRemoteCall_InvalidateTranslationASID, asid, mask);
33}
34
35static inline void doRemoteInvalidateTranslationAll(word_t mask)
36{
37    doRemoteMaskOp0Arg(IpiRemoteCall_InvalidateTranslationAll, mask);
38}
39
40static inline void doRemoteMaskPrivateInterrupt(word_t cpu, word_t disable, word_t irq)
41{
42    doRemoteOp2Arg(IpiRemoteCall_MaskPrivateInterrupt, disable, irq, cpu);
43}
44#endif /* ENABLE_SMP_SUPPORT */
45
46