File tree 1 file changed +4
-4
lines changed
1 file changed +4
-4
lines changed Original file line number Diff line number Diff line change 1
1
use lazy_static:: lazy_static;
2
2
use x86_64:: structures:: gdt:: { Descriptor , GlobalDescriptorTable , SegmentSelector } ;
3
3
use x86_64:: structures:: tss:: TaskStateSegment ;
4
- use x86_64:: VirtAddr ;
4
+ use x86_64:: { Singleton , VirtAddr } ;
5
5
6
6
pub const DOUBLE_FAULT_IST_INDEX : u16 = 0 ;
7
7
@@ -18,12 +18,12 @@ lazy_static! {
18
18
} ;
19
19
tss
20
20
} ;
21
- static ref GDT : ( GlobalDescriptorTable , Selectors ) = {
21
+ static ref GDT : ( Singleton < GlobalDescriptorTable > , Selectors ) = {
22
22
let mut gdt = GlobalDescriptorTable :: new( ) ;
23
23
let code_selector = gdt. add_entry( Descriptor :: kernel_code_segment( ) ) ;
24
24
let tss_selector = gdt. add_entry( Descriptor :: tss_segment( & TSS ) ) ;
25
25
(
26
- gdt,
26
+ Singleton :: new ( gdt) ,
27
27
Selectors {
28
28
code_selector,
29
29
tss_selector,
@@ -41,7 +41,7 @@ pub fn init() {
41
41
use x86_64:: instructions:: segmentation:: { CS , Segment } ;
42
42
use x86_64:: instructions:: tables:: load_tss;
43
43
44
- GDT . 0 . load ( ) ;
44
+ GDT . 0 . try_get_mut ( ) . unwrap ( ) . load ( ) ;
45
45
unsafe {
46
46
CS :: set_reg ( GDT . 1 . code_selector ) ;
47
47
load_tss ( GDT . 1 . tss_selector ) ;
You can’t perform that action at this time.
0 commit comments