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 18static inline void doRemoteswitchFpuOwner(user_fpu_state_t *new_owner, word_t cpu) 19{ 20 doRemoteOp1Arg(IpiRemoteCall_switchFpuOwner, (word_t)new_owner, cpu); 21} 22 23static inline void doRemoteInvalidatePageStructureCacheASID(paddr_t root, asid_t asid, word_t mask) 24{ 25 doRemoteMaskOp2Arg(IpiRemoteCall_InvalidatePageStructureCacheASID, root, asid, mask); 26} 27 28static inline void doRemoteInvalidateTranslationSingle(vptr_t vptr, word_t mask) 29{ 30 doRemoteMaskOp1Arg(IpiRemoteCall_InvalidateTranslationSingle, vptr, mask); 31} 32 33static inline void doRemoteInvalidateTranslationSingleASID(vptr_t vptr, asid_t asid, word_t mask) 34{ 35 doRemoteMaskOp2Arg(IpiRemoteCall_InvalidateTranslationSingleASID, vptr, asid, mask); 36} 37 38static inline void doRemoteInvalidateTranslationAll(word_t mask) 39{ 40 doRemoteMaskOp0Arg(IpiRemoteCall_InvalidateTranslationAll, mask); 41} 42 43#ifdef CONFIG_VTX 44static inline void doRemoteClearCurrentVCPU(word_t cpu) 45{ 46 doRemoteOp0Arg(IpiRemoteCall_ClearCurrentVCPU, cpu); 47} 48 49static inline void doRemoteVMCheckBoundNotification(word_t cpu, tcb_t *tcb) 50{ 51 doRemoteOp1Arg(IpiRemoteCall_VMCheckBoundNotification, (word_t)tcb, cpu); 52} 53#endif 54 55#endif /* ENABLE_SMP_SUPPORT */ 56 57