Skip to content

Commit 6e8472f

Browse files
committed
Enable SMAP (always)
1 parent 31309d8 commit 6e8472f

File tree

3 files changed

+35
-32
lines changed

3 files changed

+35
-32
lines changed

lib/tinykvm/amd64/builtin/interrupts.asm

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,13 @@ ALIGN 0x10
4040
o64 sysret
4141

4242
.vm64_prctl:
43+
stac
4344
push rsi
4445
push rcx
4546
push rdx
4647
cmp rdi, 0x1002 ;; PRCTL: SET_FS
4748
jne .vm64_prctl_get
48-
;; SET_FS [rsi]
49+
;; SET_FS := rsi
4950
mov ecx, 0xC0000100 ;; FSBASE
5051
mov eax, esi ;; low-32 FS base
5152
shr rsi, 32
@@ -56,11 +57,12 @@ ALIGN 0x10
5657
pop rdx
5758
pop rcx
5859
pop rsi
60+
clac
5961
o64 sysret
6062
.vm64_prctl_get:
6163
cmp rdi, 0x1003 ;; PRCTL: GET_FS
6264
jne .vm64_prctl_trap
63-
;; GET_FS [rsi]
65+
;; GET_FS [rsi] := FSBASE
6466
mov ecx, 0xC0000100 ;; FSBASE
6567
rdmsr
6668
shl rdx, 32 ;; lift high-32 FS base
Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,33 @@
11
unsigned char interrupts[] = {
2-
0x10, 0x00, 0x72, 0x00, 0xa8, 0x00, 0x08, 0x00, 0x7b, 0x00, 0x90, 0x90,
2+
0x10, 0x00, 0x78, 0x00, 0xb0, 0x00, 0x08, 0x00, 0x81, 0x00, 0x90, 0x90,
33
0x90, 0x90, 0x90, 0x90, 0x3d, 0x9e, 0x00, 0x00, 0x00, 0x74, 0x13, 0x3d,
4-
0x77, 0xf7, 0x01, 0x00, 0x74, 0x63, 0x3d, 0x07, 0xf7, 0x01, 0x00, 0x74,
5-
0x65, 0xe7, 0x00, 0x48, 0x0f, 0x07, 0x56, 0x51, 0x52, 0x48, 0x81, 0xff,
6-
0x02, 0x10, 0x00, 0x00, 0x75, 0x18, 0xb9, 0x00, 0x01, 0x00, 0xc0, 0x89,
7-
0xf0, 0x48, 0xc1, 0xee, 0x20, 0x89, 0xf2, 0x0f, 0x30, 0x48, 0x31, 0xc0,
8-
0x5a, 0x59, 0x5e, 0x48, 0x0f, 0x07, 0x48, 0x81, 0xff, 0x03, 0x10, 0x00,
9-
0x00, 0x75, 0x16, 0xb9, 0x00, 0x01, 0x00, 0xc0, 0x0f, 0x32, 0x48, 0xc1,
10-
0xe2, 0x20, 0x48, 0x09, 0xc2, 0x48, 0x89, 0x06, 0x48, 0x31, 0xc0, 0xeb,
11-
0xdb, 0x66, 0xe7, 0x00, 0xeb, 0xd6, 0xb8, 0x60, 0x00, 0x00, 0x00, 0x66,
12-
0xe7, 0x00, 0xc3, 0xb8, 0x72, 0x00, 0x00, 0x00, 0xc3, 0x0f, 0x20, 0xd8,
13-
0x0f, 0x22, 0xd8, 0x48, 0x0f, 0x07, 0x48, 0x0f, 0x07, 0x57, 0x0f, 0x20,
14-
0xd7, 0x66, 0xe7, 0x8e, 0x0f, 0x01, 0x3f, 0x5f, 0x48, 0x83, 0xc4, 0x08,
15-
0x48, 0xcf, 0x66, 0xe7, 0xa1, 0x48, 0xcf, 0x90, 0x90, 0x90, 0x90, 0x90,
16-
0x66, 0xe7, 0x80, 0x48, 0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x81, 0x48,
17-
0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x82, 0x48, 0xcf, 0x90, 0x90, 0x90,
18-
0x66, 0xe7, 0x83, 0x48, 0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x84, 0x48,
19-
0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x85, 0x48, 0xcf, 0x90, 0x90, 0x90,
20-
0x66, 0xe7, 0x86, 0x48, 0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x87, 0x48,
21-
0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x88, 0xeb, 0xab, 0x90, 0x90, 0x90,
22-
0x66, 0xe7, 0x89, 0x48, 0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x8a, 0xeb,
23-
0x9b, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x8b, 0xeb, 0x93, 0x90, 0x90, 0x90,
24-
0x66, 0xe7, 0x8c, 0xeb, 0x8b, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x8d, 0xeb,
25-
0x83, 0x90, 0x90, 0x90, 0xe9, 0x70, 0xff, 0xff, 0xff, 0x90, 0x90, 0x90,
26-
0x66, 0xe7, 0x8f, 0x48, 0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x90, 0x48,
27-
0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x91, 0xe9, 0x60, 0xff, 0xff, 0xff,
28-
0x66, 0xe7, 0x92, 0x48, 0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x93, 0x48,
29-
0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x94, 0x48, 0xcf, 0x90, 0x90, 0x90,
30-
0xe9, 0x49, 0xff, 0xff, 0xff
4+
0x77, 0xf7, 0x01, 0x00, 0x74, 0x69, 0x3d, 0x07, 0xf7, 0x01, 0x00, 0x74,
5+
0x6b, 0xe7, 0x00, 0x48, 0x0f, 0x07, 0x0f, 0x01, 0xcb, 0x56, 0x51, 0x52,
6+
0x48, 0x81, 0xff, 0x02, 0x10, 0x00, 0x00, 0x75, 0x1b, 0xb9, 0x00, 0x01,
7+
0x00, 0xc0, 0x89, 0xf0, 0x48, 0xc1, 0xee, 0x20, 0x89, 0xf2, 0x0f, 0x30,
8+
0x48, 0x31, 0xc0, 0x5a, 0x59, 0x5e, 0x0f, 0x01, 0xca, 0x48, 0x0f, 0x07,
9+
0x48, 0x81, 0xff, 0x03, 0x10, 0x00, 0x00, 0x75, 0x16, 0xb9, 0x00, 0x01,
10+
0x00, 0xc0, 0x0f, 0x32, 0x48, 0xc1, 0xe2, 0x20, 0x48, 0x09, 0xc2, 0x48,
11+
0x89, 0x06, 0x48, 0x31, 0xc0, 0xeb, 0xd8, 0x66, 0xe7, 0x00, 0xeb, 0xd3,
12+
0xb8, 0x60, 0x00, 0x00, 0x00, 0x66, 0xe7, 0x00, 0xc3, 0xb8, 0x78, 0x00,
13+
0x00, 0x00, 0xc3, 0x0f, 0x20, 0xd8, 0x0f, 0x22, 0xd8, 0x48, 0x0f, 0x07,
14+
0x48, 0x0f, 0x07, 0x57, 0x0f, 0x20, 0xd7, 0x66, 0xe7, 0x8e, 0x0f, 0x01,
15+
0x3f, 0x5f, 0x48, 0x83, 0xc4, 0x08, 0x48, 0xcf, 0x66, 0xe7, 0xa1, 0x48,
16+
0xcf, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x80, 0x48,
17+
0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x81, 0x48, 0xcf, 0x90, 0x90, 0x90,
18+
0x66, 0xe7, 0x82, 0x48, 0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x83, 0x48,
19+
0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x84, 0x48, 0xcf, 0x90, 0x90, 0x90,
20+
0x66, 0xe7, 0x85, 0x48, 0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x86, 0x48,
21+
0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x87, 0x48, 0xcf, 0x90, 0x90, 0x90,
22+
0x66, 0xe7, 0x88, 0xeb, 0xa9, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x89, 0x48,
23+
0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x8a, 0xeb, 0x99, 0x90, 0x90, 0x90,
24+
0x66, 0xe7, 0x8b, 0xeb, 0x91, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x8c, 0xeb,
25+
0x89, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x8d, 0xeb, 0x81, 0x90, 0x90, 0x90,
26+
0xe9, 0x6e, 0xff, 0xff, 0xff, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x8f, 0x48,
27+
0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x90, 0x48, 0xcf, 0x90, 0x90, 0x90,
28+
0x66, 0xe7, 0x91, 0xe9, 0x5e, 0xff, 0xff, 0xff, 0x66, 0xe7, 0x92, 0x48,
29+
0xcf, 0x90, 0x90, 0x90, 0x66, 0xe7, 0x93, 0x48, 0xcf, 0x90, 0x90, 0x90,
30+
0x66, 0xe7, 0x94, 0x48, 0xcf, 0x90, 0x90, 0x90, 0xe9, 0x47, 0xff, 0xff,
31+
0xff
3132
};
32-
unsigned int interrupts_len = 341;
33+
unsigned int interrupts_len = 349;

lib/tinykvm/vcpu.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ void vCPU::init(int id, Machine& machine)
106106
master_sregs.cr3 = physbase + PT_ADDR;
107107
master_sregs.cr4 =
108108
CR4_PAE | CR4_OSFXSR | CR4_OSXMMEXCPT | CR4_OSXSAVE |
109-
CR4_FSGSBASE | CR4_SMEP;
109+
CR4_FSGSBASE | CR4_SMEP | CR4_SMAP;
110110
master_sregs.cr0 =
111111
CR0_PE | CR0_MP | CR0_ET | CR0_NE | CR0_AM | CR0_PG | CR0_WP;
112112
master_sregs.efer =

0 commit comments

Comments
 (0)