File tree Expand file tree Collapse file tree 1 file changed +10
-16
lines changed
Expand file tree Collapse file tree 1 file changed +10
-16
lines changed Original file line number Diff line number Diff line change 11/// Enables Streaming SIMD Extensions (SSE) support for loaded kernels.
22pub fn enable_sse ( ) {
3- use bit_field:: BitField ;
4- use x86_64:: registers:: control:: Cr0 ;
5- let mut flags = Cr0 :: read_raw ( ) ;
6- flags. set_bit ( 2 , false ) ;
7- flags. set_bit ( 1 , true ) ;
8- flags. set_bit ( 9 , true ) ;
9- flags. set_bit ( 10 , true ) ;
3+ use x86_64:: registers:: control:: { Cr0 , Cr0Flags , Cr4 , Cr4Flags } ;
4+ let mut flags = Cr0 :: read ( ) ;
5+ flags. remove ( Cr0Flags :: EMULATE_COPROCESSOR ) ;
6+ flags. insert ( Cr0Flags :: MONITOR_COPROCESSOR ) ;
107 unsafe {
11- Cr0 :: write_raw ( flags) ;
8+ Cr0 :: write ( flags) ;
129 }
13- // For now, we must use inline ASM here
14- let mut cr4: u64 ;
10+
11+ let mut flags = Cr4 :: read ( ) ;
12+ flags. insert ( Cr4Flags :: OSFXSR ) ;
13+ flags. insert ( Cr4Flags :: OSXMMEXCPT_ENABLE ) ;
1514 unsafe {
16- asm ! ( "mov %cr4, $0" : "=r" ( cr4) ) ;
17- }
18- cr4. set_bit ( 9 , true ) ;
19- cr4. set_bit ( 10 , true ) ;
20- unsafe {
21- asm ! ( "mov $0, %cr4" :: "r" ( cr4) : "memory" ) ;
15+ Cr4 :: write ( flags) ;
2216 }
2317}
You can’t perform that action at this time.
0 commit comments