@@ -25,8 +25,11 @@ use tracing::{Span, instrument};
25
25
use windows:: Win32 :: System :: Hypervisor :: {
26
26
WHV_MEMORY_ACCESS_TYPE , WHV_PARTITION_HANDLE , WHV_REGISTER_VALUE , WHV_RUN_VP_EXIT_CONTEXT ,
27
27
WHV_RUN_VP_EXIT_REASON , WHV_X64_SEGMENT_REGISTER , WHV_X64_SEGMENT_REGISTER_0 ,
28
- WHvCancelRunVirtualProcessor , WHvX64RegisterCr0 , WHvX64RegisterCr3 , WHvX64RegisterCr4 ,
29
- WHvX64RegisterCs , WHvX64RegisterEfer ,
28
+ WHvCancelRunVirtualProcessor , WHvX64RegisterCs ,
29
+ } ;
30
+ #[ cfg( feature = "init-paging" ) ]
31
+ use windows:: Win32 :: System :: Hypervisor :: {
32
+ WHvX64RegisterCr0 , WHvX64RegisterCr3 , WHvX64RegisterCr4 , WHvX64RegisterEfer ,
30
33
} ;
31
34
#[ cfg( crashdump) ]
32
35
use { super :: crashdump, std:: path:: Path } ;
@@ -399,16 +402,22 @@ impl HypervWindowsDriver {
399
402
] ) ?;
400
403
401
404
#[ cfg( not( feature = "init-paging" ) ) ]
402
- proc. set_registers ( & [ (
403
- WHvX64RegisterCs ,
404
- WHV_REGISTER_VALUE {
405
- Segment : WHV_X64_SEGMENT_REGISTER {
406
- Base : 0 ,
407
- Selector : 0 ,
408
- ..Default :: default ( )
405
+ {
406
+ proc. set_registers ( & [ (
407
+ WHvX64RegisterCs ,
408
+ WHV_REGISTER_VALUE {
409
+ Segment : WHV_X64_SEGMENT_REGISTER {
410
+ Base : 0 ,
411
+ Selector : 0 ,
412
+ Limit : 0xFFFF ,
413
+ Anonymous : WHV_X64_SEGMENT_REGISTER_0 {
414
+ Attributes : 0b1011 | ( 1 << 4 ) | ( 1 << 7 ) , // Type (11: Execute/Read, accessed) | S (code segment) | P (present)
415
+ } ,
416
+ ..Default :: default ( )
417
+ } ,
409
418
} ,
410
- } ,
411
- ) ] ) ? ;
419
+ ) ] ) ? ;
420
+ }
412
421
413
422
Ok ( ( ) )
414
423
}
0 commit comments