1/*
2 * Copyright 2016, General Dynamics C4 Systems
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 */
6
7#pragma once
8
9#include <types.h>
10#include <api/failures.h>
11#include <object/structures.h>
12
13#ifdef CONFIG_TK1_SMMU
14
15seL4_SlotRegion create_iospace_caps(cap_t root_cnode_cap);
16exception_t decodeARMIOPTInvocation(word_t invLabel, uint32_t length, cte_t *slot, cap_t cap, extra_caps_t excaps,
17                                    word_t *buffer);
18exception_t decodeARMIOMapInvocation(word_t invLabel, uint32_t length, cte_t *slot, cap_t cap, extra_caps_t excaps,
19                                     word_t *buffer);
20exception_t performPageInvocationUnmapIO(cap_t cap, cte_t *slot);
21exception_t decodeARMIOSpaceInvocation(word_t invLabel, cap_t cap);
22void unmapIOPage(cap_t cap);
23void deleteIOPageTable(cap_t cap);
24void clearIOPageDirectory(cap_t cap);
25
26#else
27
28/* define dummy functions */
29static inline seL4_SlotRegion create_iospace_caps(cap_t root_cnode_cap)
30{
31    return S_REG_EMPTY;
32}
33
34static inline exception_t decodeARMIOPTInvocation(word_t invLabel, uint32_t length, cte_t *slot, cap_t cap,
35                                                  extra_caps_t excaps, word_t *buffer)
36{
37    return EXCEPTION_NONE;
38}
39
40static inline exception_t decodeARMIOMapInvocation(word_t invLabel, uint32_t length, cte_t *slot, cap_t cap,
41                                                   extra_caps_t excaps, word_t *buffer)
42{
43    return EXCEPTION_NONE;
44}
45
46static inline exception_t performPageInvocationUnmapIO(cap_t cap, cte_t *slot)
47{
48    return EXCEPTION_NONE;
49}
50
51static inline exception_t decodeARMIOSpaceInvocation(word_t invLabel, cap_t cap)
52{
53    return EXCEPTION_NONE;
54}
55
56static inline void unmapIOPage(cap_t cap)
57{
58}
59
60static inline void deleteIOPageTable(cap_t cap)
61{
62}
63
64static inline void clearIOPageDirectory(cap_t cap)
65{
66}
67
68#endif /* end of !CONFIG_TK1_SMMU */
69
70
71