Get the APs into rust code, set stack and page table in trampoline
This commit is contained in:
+23
-23
@@ -65,31 +65,31 @@ load:
|
||||
mov [DAPACK.count], cx
|
||||
mov [DAPACK.seg], dx
|
||||
|
||||
mov si, loading
|
||||
call print
|
||||
; mov si, loading
|
||||
; call print
|
||||
|
||||
mov bx, [DAPACK.addr]
|
||||
call print_num
|
||||
; mov bx, [DAPACK.addr]
|
||||
; call print_num
|
||||
|
||||
mov al, '#'
|
||||
call print_char
|
||||
|
||||
mov bx, [DAPACK.count]
|
||||
call print_num
|
||||
|
||||
mov al, ' '
|
||||
call print_char
|
||||
|
||||
mov bx, [DAPACK.seg]
|
||||
call print_num
|
||||
|
||||
mov al, ':'
|
||||
call print_char
|
||||
|
||||
mov bx, [DAPACK.buf]
|
||||
call print_num
|
||||
|
||||
call print_line
|
||||
; mov al, '#'
|
||||
; call print_char
|
||||
;
|
||||
; mov bx, [DAPACK.count]
|
||||
; call print_num
|
||||
;
|
||||
; mov al, ' '
|
||||
; call print_char
|
||||
;
|
||||
; mov bx, [DAPACK.seg]
|
||||
; call print_num
|
||||
;
|
||||
; mov al, ':'
|
||||
; call print_char
|
||||
;
|
||||
; mov bx, [DAPACK.buf]
|
||||
; call print_num
|
||||
;
|
||||
; call print_line
|
||||
|
||||
mov dl, [disk]
|
||||
mov si, DAPACK
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
trampoline:
|
||||
.ready: dq 0
|
||||
.page_table: dq 0
|
||||
.stack: dq 0
|
||||
.code: dq 0
|
||||
|
||||
times 512 - ($ - trampoline) db 0
|
||||
|
||||
@@ -126,10 +128,14 @@ long_mode_ap:
|
||||
mov gs, rax
|
||||
mov ss, rax
|
||||
|
||||
mov rax, [trampoline.page_table]
|
||||
mov cr3, rax
|
||||
|
||||
mov rsp, [trampoline.stack]
|
||||
|
||||
mov qword [trampoline.ready], 1
|
||||
.lp:
|
||||
hlt
|
||||
jmp .lp
|
||||
mov rax, [trampoline.code]
|
||||
jmp rax
|
||||
|
||||
gdtr:
|
||||
dw gdt.end + 1 ; size
|
||||
|
||||
Reference in New Issue
Block a user