162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2012-2015 - ARM Ltd
462306a36Sopenharmony_ci * Author: Marc Zyngier <marc.zyngier@arm.com>
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#include <hyp/sysreg-sr.h>
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/compiler.h>
1062306a36Sopenharmony_ci#include <linux/kvm_host.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#include <asm/kprobes.h>
1362306a36Sopenharmony_ci#include <asm/kvm_asm.h>
1462306a36Sopenharmony_ci#include <asm/kvm_emulate.h>
1562306a36Sopenharmony_ci#include <asm/kvm_hyp.h>
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci/*
1862306a36Sopenharmony_ci * Non-VHE: Both host and guest must save everything.
1962306a36Sopenharmony_ci */
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_civoid __sysreg_save_state_nvhe(struct kvm_cpu_context *ctxt)
2262306a36Sopenharmony_ci{
2362306a36Sopenharmony_ci	__sysreg_save_el1_state(ctxt);
2462306a36Sopenharmony_ci	__sysreg_save_common_state(ctxt);
2562306a36Sopenharmony_ci	__sysreg_save_user_state(ctxt);
2662306a36Sopenharmony_ci	__sysreg_save_el2_return_state(ctxt);
2762306a36Sopenharmony_ci}
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_civoid __sysreg_restore_state_nvhe(struct kvm_cpu_context *ctxt)
3062306a36Sopenharmony_ci{
3162306a36Sopenharmony_ci	__sysreg_restore_el1_state(ctxt);
3262306a36Sopenharmony_ci	__sysreg_restore_common_state(ctxt);
3362306a36Sopenharmony_ci	__sysreg_restore_user_state(ctxt);
3462306a36Sopenharmony_ci	__sysreg_restore_el2_return_state(ctxt);
3562306a36Sopenharmony_ci}
36