File tree Expand file tree Collapse file tree 2 files changed +7
-11
lines changed Expand file tree Collapse file tree 2 files changed +7
-11
lines changed Original file line number Diff line number Diff line change @@ -133,12 +133,6 @@ fn bootloader_main(
133
133
page_tables,
134
134
system_info,
135
135
) ;
136
-
137
- /*
138
- // Make sure that the kernel respects the write-protection bits, even when in ring 0.
139
- enable_write_protect_bit();
140
-
141
- */
142
136
}
143
137
144
138
fn init_logger ( framebuffer_start : PhysAddr , framebuffer_size : usize ) -> FrameBufferInfo {
@@ -197,11 +191,6 @@ fn create_page_tables(
197
191
}
198
192
}
199
193
200
- fn enable_write_protect_bit ( ) {
201
- use x86_64:: registers:: control:: { Cr0 , Cr0Flags } ;
202
- unsafe { Cr0 :: update ( |cr0| * cr0 |= Cr0Flags :: WRITE_PROTECT ) } ;
203
- }
204
-
205
194
fn detect_rsdp ( ) -> Option < PhysAddr > {
206
195
use core:: ptr:: NonNull ;
207
196
use rsdp:: {
Original file line number Diff line number Diff line change 97
97
98
98
// Enable support for the no-execute bit in page tables.
99
99
enable_nxe_bit ( ) ;
100
+ // Make the kernel respect the write-protection bits even when in ring 0 by default
101
+ enable_write_protect_bit ( ) ;
100
102
101
103
let ( entry_point, mut used_entries) =
102
104
load_kernel:: load_kernel ( kernel_bytes, kernel_page_table, frame_allocator)
@@ -412,3 +414,8 @@ fn enable_nxe_bit() {
412
414
use x86_64:: registers:: control:: { Efer , EferFlags } ;
413
415
unsafe { Efer :: update ( |efer| * efer |= EferFlags :: NO_EXECUTE_ENABLE ) }
414
416
}
417
+
418
+ fn enable_write_protect_bit ( ) {
419
+ use x86_64:: registers:: control:: { Cr0 , Cr0Flags } ;
420
+ unsafe { Cr0 :: update ( |cr0| * cr0 |= Cr0Flags :: WRITE_PROTECT ) } ;
421
+ }
You can’t perform that action at this time.
0 commit comments