VirtualBox

source: vbox/trunk/include/VBox/vmm/iem-armv8.h@ 98993

Last change on this file since 98993 was 98993, checked in by vboxsync, 21 months ago

VMM: More ARMv8 x86/amd64 separation work, getting to PGM now, bugref:10385

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.6 KB
Line 
1/** @file
2 * IEM - Interpreted Execution Manager.
3 */
4
5/*
6 * Copyright (C) 2011-2023 Oracle and/or its affiliates.
7 *
8 * This file is part of VirtualBox base platform packages, as
9 * available from https://www.virtualbox.org.
10 *
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * as published by the Free Software Foundation, in version 3 of the
14 * License.
15 *
16 * This program is distributed in the hope that it will be useful, but
17 * WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 * General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, see <https://www.gnu.org/licenses>.
23 *
24 * The contents of this file may alternatively be used under the terms
25 * of the Common Development and Distribution License Version 1.0
26 * (CDDL), a copy of it is provided in the "COPYING.CDDL" file included
27 * in the VirtualBox distribution, in which case the provisions of the
28 * CDDL are applicable instead of those of the GPL.
29 *
30 * You may elect to license modified versions of this file under the
31 * terms and conditions of either the GPL or the CDDL or both.
32 *
33 * SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
34 */
35
36#ifndef VBOX_INCLUDED_vmm_iem_armv8_h
37#define VBOX_INCLUDED_vmm_iem_armv8_h
38#ifndef RT_WITHOUT_PRAGMA_ONCE
39# pragma once
40#endif
41
42RT_C_DECLS_BEGIN
43
44/** @addtogroup grp_iem
45 * @{ */
46
47/** @name Instruction mode.
48 * @{ */
49typedef uint8_t IEMMODE;
50/** AARCH64 instruction mode. */
51#define IEMMODE_AARCH64 0
52/** AARCH32 A32 instruction mode. */
53#define IEMMODE_AARCH32_A32 1
54/** AARCH32 T32 (aka Thumb) instruction mode. */
55#define IEMMODE_AARCH32_T32 1
56/** @} */
57
58
59/** The CPUMCTX_EXTRN_XXX mask required to be cleared when interpreting anything.
60 * IEM will ASSUME the caller of IEM APIs has ensured these are already present. */
61#define IEM_CPUMCTX_EXTRN_MUST_MASK ( CPUMCTX_EXTRN_GPRS_MASK \
62 | CPUMCTX_EXTRN_PC \
63 | CPUMCTX_EXTRN_SPSR \
64 | CPUMCTX_EXTRN_ELR \
65 | CPUMCTX_EXTRN_SP \
66 | CPUMCTX_EXTRN_PSTATE )
67/** The CPUMCTX_EXTRN_XXX mask needed when injecting an exception/interrupt.
68 * IEM will import missing bits, callers are encouraged to make these registers
69 * available prior to injection calls if fetching state anyway. */
70#define IEM_CPUMCTX_EXTRN_XCPT_MASK ( IEM_CPUMCTX_EXTRN_MUST_MASK ) /** @todo */
71/** The CPUMCTX_EXTRN_XXX mask required to be cleared when calling any
72 * IEMExecDecoded API not using memory. IEM will ASSUME the caller of IEM
73 * APIs has ensured these are already present.
74 * @note ASSUMES execution engine has checked for instruction breakpoints
75 * during decoding. */
76#define IEM_CPUMCTX_EXTRN_EXEC_DECODED_NO_MEM_MASK ( CPUMCTX_EXTRN_PC \
77 | CPUMCTX_EXTRN_PSTATE )
78/** The CPUMCTX_EXTRN_XXX mask required to be cleared when calling any
79 * IEMExecDecoded API using memory. IEM will ASSUME the caller of IEM
80 * APIs has ensured these are already present.
81 * @note ASSUMES execution engine has checked for instruction breakpoints
82 * during decoding. */
83#define IEM_CPUMCTX_EXTRN_EXEC_DECODED_MEM_MASK ( IEM_CPUMCTX_EXTRN_EXEC_DECODED_NO_MEM_MASK ) /** @todo */
84
85/** @} */
86
87RT_C_DECLS_END
88
89#endif /* !VBOX_INCLUDED_vmm_iem_armv8_h */
90
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette