tss_x64.h
Go to the documentation of this file.
1 //
2 // Bareflank Hypervisor
3 //
4 // Copyright (C) 2015 Assured Information Security, Inc.
5 // Author: Rian Quinn <quinnr@ainfosec.com>
6 // Author: Brendan Kerrigan <kerriganb@ainfosec.com>
7 //
8 // This library is free software; you can redistribute it and/or
9 // modify it under the terms of the GNU Lesser General Public
10 // License as published by the Free Software Foundation; either
11 // version 2.1 of the License, or (at your option) any later version.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Lesser General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 
22 #ifndef TSS_X64_H
23 #define TSS_X64_H
24 
25 #include <stdint.h>
26 
27 #pragma pack(push, 1)
28 
29 struct tss_x64
30 {
31  using integer_pointer = uintptr_t;
32 
33  uint32_t reserved1;
34  uint32_t rsp0_lower;
35  uint32_t rsp0_upper;
36  uint32_t rsp1_lower;
37  uint32_t rsp1_upper;
38  uint32_t rsp2_lower;
39  uint32_t rsp2_upper;
40  uint32_t reserved2;
41  uint32_t reserved3;
42  uint32_t ist1_lower;
43  uint32_t ist1_upper;
44  uint32_t ist2_lower;
45  uint32_t ist2_upper;
46  uint32_t ist3_lower;
47  uint32_t ist3_upper;
48  uint32_t ist4_lower;
49  uint32_t ist4_upper;
50  uint32_t ist5_lower;
51  uint32_t ist5_upper;
52  uint32_t ist6_lower;
53  uint32_t ist6_upper;
54  uint32_t ist7_lower;
55  uint32_t ist7_upper;
56  uint32_t reserved4;
57  uint32_t reserved5;
58  uint16_t reserved6;
59  uint16_t iomap;
60 
62  reserved1(0),
63  rsp0_lower(0),
64  rsp0_upper(0),
65  rsp1_lower(0),
66  rsp1_upper(0),
67  rsp2_lower(0),
68  rsp2_upper(0),
69  reserved2(0),
70  reserved3(0),
71  ist1_lower(0),
72  ist1_upper(0),
73  ist2_lower(0),
74  ist2_upper(0),
75  ist3_lower(0),
76  ist3_upper(0),
77  ist4_lower(0),
78  ist4_upper(0),
79  ist5_lower(0),
80  ist5_upper(0),
81  ist6_lower(0),
82  ist6_upper(0),
83  ist7_lower(0),
84  ist7_upper(0),
85  reserved4(0),
86  reserved5(0),
87  reserved6(0),
88  iomap(0)
89  {}
90 };
91 
92 #pragma pack(pop)
93 
94 #endif
uint32_t ist1_lower
Definition: tss_x64.h:42
uint32_t rsp1_upper
Definition: tss_x64.h:37
uint32_t reserved2
Definition: tss_x64.h:40
uint32_t ist6_lower
Definition: tss_x64.h:52
uint32_t rsp2_lower
Definition: tss_x64.h:38
uint16_t iomap
Definition: tss_x64.h:59
uint32_t ist6_upper
Definition: tss_x64.h:53
uint16_t reserved6
Definition: tss_x64.h:58
uint32_t rsp1_lower
Definition: tss_x64.h:36
uint32_t ist4_lower
Definition: tss_x64.h:48
uint32_t ist3_lower
Definition: tss_x64.h:46
uint32_t rsp0_upper
Definition: tss_x64.h:35
uint32_t ist5_lower
Definition: tss_x64.h:50
void uint64_t uint64_t uint64_t *rdx noexcept
uint32_t ist1_upper
Definition: tss_x64.h:43
uint32_t ist2_upper
Definition: tss_x64.h:45
uint32_t ist5_upper
Definition: tss_x64.h:51
uint32_t reserved3
Definition: tss_x64.h:41
uint32_t reserved4
Definition: tss_x64.h:56
uint32_t rsp0_lower
Definition: tss_x64.h:34
uint32_t ist3_upper
Definition: tss_x64.h:47
uint32_t ist7_upper
Definition: tss_x64.h:55
uint32_t reserved5
Definition: tss_x64.h:57
uint32_t reserved1
Definition: tss_x64.h:33
uint32_t rsp2_upper
Definition: tss_x64.h:39
uint32_t ist4_upper
Definition: tss_x64.h:49
uintptr_t integer_pointer
Definition: tss_x64.h:31
uint32_t ist7_lower
Definition: tss_x64.h:54
uint32_t ist2_lower
Definition: tss_x64.h:44
tss_x64() noexcept
Definition: tss_x64.h:61