1/*
2 * Copyright 2014, General Dynamics C4 Systems
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 */
6
7#pragma once
8
9#include <arch/object/structures.h>
10#include <arch/api/types.h>
11#include <mode/model/statedata.h>
12
13static inline void setHardwareASID(hw_asid_t hw_asid)
14{
15    dsb();
16    flushBTAC();
17    writeContextID(hw_asid);
18}
19
20static inline void armv_contextSwitch_HWASID(pde_t *cap_pd, hw_asid_t hw_asid)
21{
22    setCurrentPD(addrFromPPtr(cap_pd));
23    setHardwareASID(hw_asid);
24}
25
26static inline void armv_contextSwitch(pde_t *cap_pd, asid_t asid)
27{
28    armv_contextSwitch_HWASID(cap_pd, getHWASID(asid));
29}
30
31