VirtualBox

source: vbox/trunk/src/VBox/VMM/include/VMMSwitcher.mac@ 47786

Last change on this file since 47786 was 45786, checked in by vboxsync, 12 years ago

Move HMRCA.asm into the switcher code so we don't need VMMRC.rc.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 4.3 KB
Line 
1; $Id: VMMSwitcher.mac 45786 2013-04-26 22:35:59Z vboxsync $
2;; @file
3; VMM - World Switchers.
4;
5
6;
7; Copyright (C) 2006-2013 Oracle Corporation
8;
9; This file is part of VirtualBox Open Source Edition (OSE), as
10; available from http://www.virtualbox.org. This file is free software;
11; you can redistribute it and/or modify it under the terms of the GNU
12; General Public License (GPL) as published by the Free Software
13; Foundation, in version 2 as it comes in the "COPYING" file of the
14; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16;
17
18%ifndef ___VMMSwitcher_mac
19%define ___VMMSwitcher_mac
20
21%include "iprt/asmdefs.mac"
22
23; enum VMMSWITCHER {
24%define VMMSWITCHER_INVALID 0
25%define VMMSWITCHER_32_TO_32 1
26%define VMMSWITCHER_32_TO_PAE 2
27%define VMMSWITCHER_32_TO_AMD64 3
28%define VMMSWITCHER_PAE_TO_32BIT 4
29%define VMMSWITCHER_PAE_TO_PAE 5
30%define VMMSWITCHER_PAE_TO_AMD64 6
31%define VMMSWITCHER_AMD64_TO_32 7
32%define VMMSWITCHER_AMD64_TO_PAE 8
33%define VMMSWITCHER_AMD64_TO_AMD64 9
34%define VMMSWITCHER_X86_STUB 10
35%define VMMSWITCHER_AMD64_STUB 11
36%define VMMSWITCHER_MAX 12
37; }
38
39
40struc VMMSWITCHERDEF
41 .pvCode: RTCCPTR_RES 1
42 .pvFixups: RTCCPTR_RES 1
43 .pszDesc: RTCCPTR_RES 1
44 .pfnRelocate: RTCCPTR_RES 1
45 .enmType: resd 1
46 .cbCode: resd 1
47 .offR0ToRawMode: resd 1
48 .offRCToHost: resd 1
49 .offRCCallTrampoline: resd 1
50 .offRCToHostAsm: resd 1
51 .offRCToHostAsmNoReturn: resd 1
52 ; disasm help
53 .offHCCode0: resd 1
54 .cbHCCode0: resd 1
55 .offHCCode1: resd 1
56 .cbHCCode1: resd 1
57 .offIDCode0: resd 1
58 .cbIDCode0: resd 1
59 .offIDCode1: resd 1
60 .cbIDCode1: resd 1
61 .offGCCode: resd 1
62 .cbGCCode: resd 1
63endstruc
64
65
66;/** @name Fixup Types.
67; * @{
68; */
69%define FIX_HC_2_GC_NEAR_REL 1
70%define FIX_HC_2_ID_NEAR_REL 2
71%define FIX_GC_2_HC_NEAR_REL 3
72%define FIX_GC_2_ID_NEAR_REL 4
73%define FIX_ID_2_HC_NEAR_REL 5
74%define FIX_ID_2_GC_NEAR_REL 6
75%define FIX_GC_FAR32 7
76%define FIX_GC_CPUM_OFF 8
77%define FIX_GC_VM_OFF 9
78%define FIX_HC_CPUM_OFF 10
79%define FIX_HC_VM_OFF 11
80%define FIX_INTER_32BIT_CR3 12
81%define FIX_INTER_PAE_CR3 13
82%define FIX_INTER_AMD64_CR3 14
83%define FIX_HYPER_CS 18
84%define FIX_HYPER_DS 19
85%define FIX_HYPER_TSS 20
86%define FIX_GC_TSS_GDTE_DW2 21
87%define FIX_NO_FXSAVE_JMP 24
88%define FIX_NO_SYSENTER_JMP 25
89%define FIX_NO_SYSCALL_JMP 26
90%define FIX_HC_32BIT 27
91%define FIX_HC_64BIT 28
92%define FIX_HC_64BIT_CPUM 29
93%define FIX_HC_64BIT_CS 30
94%define FIX_ID_32BIT 31
95%define FIX_ID_64BIT 32
96%define FIX_ID_FAR32_TO_64BIT_MODE 33
97%define FIX_GC_APIC_BASE_32BIT 34
98%define FIX_HC_64BIT_NOCHECK 35
99%define FIX_GC_64_BIT_CPUM_OFF 36
100%define FIX_GC_CPUMCPU_OFF 37
101%define FIX_EFER_OR_MASK 38
102%define FIX_THE_END 255
103;/** @} */
104
105
106;;
107; Generate a fixup label.
108; @param %1 Type of fixup (use one of those %defines)
109; @param %2 Offset into the instruction.
110; @param %3 Optional fixup data.
111%macro FIXUP 2-*
112BEGINDATA
113 db %1 ; the type
114 dd %%instruction + %2 - NAME(Start)
115 %rotate 2
116 %rep %0 - 2
117 dd %1
118 %rotate 1
119 %endrep
120
121BEGINCODE
122%%instruction:
123%endmacro
124
125
126;; IMPORTANT all COM_ functions trashes esi, some edi and the LOOP_SHORT_WHILE kills ecx.
127;%define DEBUG_STUFF 1
128
129%ifdef DEBUG_STUFF
130 %define DEBUG_CHAR(ch) COM_CHAR ch
131 %define DEBUG32_CHAR(ch) COM_CHAR ch
132 %define DEBUG64_CHAR(ch) COM_CHAR ch
133 %define DEBUG_S_CHAR(ch) COM_S_CHAR ch
134 %define DEBUG32_S_CHAR(ch) COM32_S_CHAR ch
135 %define DEBUG64_S_CHAR(ch) COM64_S_CHAR ch
136%else
137 %define DEBUG_CHAR(ch)
138 %define DEBUG32_CHAR(ch)
139 %define DEBUG64_CHAR(ch)
140 %define DEBUG_S_CHAR(ch)
141 %define DEBUG32_S_CHAR(ch)
142 %define DEBUG64_S_CHAR(ch)
143%endif
144
145%endif ; !___VMMSwitcher_mac
146
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