1
1
#![ no_std]
2
2
#![ feature( llvm_asm) ]
3
3
4
- use shared:: console:: println;
4
+ // FIXME
5
+ #![ allow( dead_code, unused_variables) ]
6
+
7
+ use shared:: println;
5
8
use shared:: linker_symbol;
6
9
use v86:: gdt:: { GlobalDescriptorTable , Descriptor , TaskStateSegment } ;
7
10
8
11
use lazy_static:: lazy_static;
9
12
13
+ mod panic;
14
+
10
15
lazy_static ! {
11
16
static ref TSS : TaskStateSegment = {
12
17
let mut tss = TaskStateSegment :: new( ) ;
@@ -30,21 +35,23 @@ lazy_static! {
30
35
31
36
#[ no_mangle]
32
37
pub fn second_stage ( ) {
33
- println ( b "Stage 2") ;
38
+ println ! ( "Stage 2" ) ;
34
39
35
- println ( b"Loading GDT" ) ;
40
+ loop { }
41
+ }
42
+
43
+ fn enter_protected_mode ( ) {
44
+ println ! ( "Loading GDT" ) ;
36
45
37
46
unsafe { GDT . load ( ) ; }
38
47
39
- println ( b "GDT Loaded!") ;
48
+ println ! ( "GDT Loaded!" ) ;
40
49
41
- loop { } ;
42
-
43
- println ( b"Switching to 32-bit" ) ;
50
+ println ! ( "Switching to 32-bit" ) ;
44
51
45
52
enable_a20 ( ) ;
46
53
47
- println ( b "A20") ;
54
+ println ! ( "A20" ) ;
48
55
49
56
loop { } ;
50
57
@@ -61,18 +68,9 @@ pub fn second_stage() {
61
68
}
62
69
}
63
70
64
- static HELLO : & [ u8 ] = b"Protected Mode!" ;
65
-
66
71
#[ no_mangle]
67
72
extern "C" fn protected_mode ( ) {
68
- let vga_buffer = 0xb8000 as * mut u8 ;
69
-
70
- for ( i, & byte) in HELLO . iter ( ) . enumerate ( ) {
71
- unsafe {
72
- * vga_buffer. offset ( i as isize * 2 ) = byte;
73
- * vga_buffer. offset ( i as isize * 2 + 1 ) = 0xb ;
74
- }
75
- }
73
+ println ! ( "Protected Mode!" ) ;
76
74
77
75
loop { }
78
76
}
0 commit comments