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 
10 #define SMMU_SID_CNODE_SLOT_BITS    8
11 #define SMMU_CB_CNODE_SLOT_BITS     6
12 #define SID_INVALID      SMMU_MAX_SID
13 #define CB_INVALID       SMMU_MAX_CB
14 #define ASID_INVALID     nASIDs
15 
16 
17 exception_t decodeARMSIDControlInvocation(word_t label, unsigned int length, cptr_t cptr,
18                                           cte_t *srcSlot, cap_t cap,
19                                           bool_t call, word_t *buffer);
20 
21 exception_t decodeARMSIDInvocation(word_t label, unsigned int length, cptr_t cptr,
22                                    cte_t *srcSlot, cap_t cap, bool_t call, word_t *buffer);
23 
24 exception_t decodeARMCBControlInvocation(word_t label, unsigned int length, cptr_t cptr,
25                                          cte_t *srcSlot, cap_t cap,
26                                          bool_t call, word_t *buffer);
27 
28 exception_t decodeARMCBInvocation(word_t label, unsigned int length, cptr_t cptr,
29                                   cte_t *srcSlot, cap_t cap, bool_t call, word_t *buffer);
30 exception_t smmu_delete_cb(cap_t cap);
31 exception_t smmu_delete_sid(cap_t cap);
32 void smmu_cb_delete_vspace(word_t cb, asid_t asid);
33 void invalidateSMMUTLBByASID(asid_t asid, word_t bind_cb);
34 void invalidateSMMUTLBByASIDVA(asid_t asid, vptr_t vaddr, word_t bind_cb);
35 
36