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