Get the APs into rust code, set stack and page table in trampoline

This commit is contained in:
Jeremy Soller 2016-08-16 21:25:48 -06:00
parent a8948fb246
commit 27d5996abf
5 changed files with 82 additions and 42 deletions

View file

@ -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

View file

@ -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