1/*
2 * Copyright 2017, General Dynamics C4 Systems
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 */
6
7#pragma once
8
9static inline word_t CONST sanitiseRegister(register_t reg, word_t v, bool_t archInfo)
10{
11    if (reg == SPSR_EL1) {
12        if (archInfo) {
13            switch (v & 0x1f) {
14            case PMODE_EL0t:
15            case PMODE_EL1t:
16            case PMODE_EL1h:
17                return v;
18            default:
19                break;
20            }
21        }
22        return (v & 0xf0000000) | PSTATE_USER;
23    } else {
24        return v;
25    }
26}
27
28static inline bool_t CONST Arch_getSanitiseRegisterInfo(tcb_t *thread)
29{
30#ifdef CONFIG_ARM_HYPERVISOR_SUPPORT
31    return (thread->tcbArch.tcbVCPU != NULL);
32#else
33    return 0;
34#endif /* CONFIG_ARM_HYPERVISOR_SUPPORT */
35}
36
37