@@ -25,8 +25,11 @@ use tracing::{Span, instrument};
2525use windows:: Win32 :: System :: Hypervisor :: {
2626 WHV_MEMORY_ACCESS_TYPE , WHV_PARTITION_HANDLE , WHV_REGISTER_VALUE , WHV_RUN_VP_EXIT_CONTEXT ,
2727 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 ,
3033} ;
3134#[ cfg( crashdump) ]
3235use { super :: crashdump, std:: path:: Path } ;
@@ -399,16 +402,22 @@ impl HypervWindowsDriver {
399402 ] ) ?;
400403
401404 #[ 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+ } ,
409418 } ,
410- } ,
411- ) ] ) ? ;
419+ ) ] ) ? ;
420+ }
412421
413422 Ok ( ( ) )
414423 }
0 commit comments