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