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