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 #include <config.h>
9 #include <types.h>
10 #include <plat/machine.h>
11 #include <smp/ipi.h>
12 
13 #ifdef ENABLE_SMP_SUPPORT
14 
15 typedef enum {
16     IpiRemoteCall_InvalidateTLBEntry = IpiNumArchRemoteCall,
17     IpiRemoteCall_InvalidatePageStructureCache,
18     IpiRemoteCall_InvalidateTLB,
19     IpiNumModeRemoteCall
20 } IpiModeRemoteCall_t;
21 
doRemoteInvalidateTLBEntry(vptr_t vptr,word_t mask)22 static void inline doRemoteInvalidateTLBEntry(vptr_t vptr, word_t mask)
23 {
24     doRemoteMaskOp1Arg((IpiRemoteCall_t)IpiRemoteCall_InvalidateTLBEntry, vptr, mask);
25 }
26 
doRemoteInvalidatePageStructureCache(word_t mask)27 static void inline doRemoteInvalidatePageStructureCache(word_t mask)
28 {
29     doRemoteMaskOp0Arg((IpiRemoteCall_t)IpiRemoteCall_InvalidatePageStructureCache, mask);
30 }
31 
doRemoteInvalidateTLB(word_t mask)32 static void inline doRemoteInvalidateTLB(word_t mask)
33 {
34     doRemoteMaskOp0Arg((IpiRemoteCall_t)IpiRemoteCall_InvalidateTLB, mask);
35 }
36 
37 void Mode_handleRemoteCall(IpiModeRemoteCall_t call, word_t arg0, word_t arg1, word_t arg2);
38 #endif /* ENABLE_SMP_SUPPORT */
39 
40