From fb6cd07c9371c17fcbaf5ba86def17c2fc52abb5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 16 Aug 2016 21:25:48 -0600 Subject: [PATCH] Get the APs into rust code, set stack and page table in trampoline --- x86/bootsector.asm | 46 +++++++++++++++++++++--------------------- x86/startup-x86_64.asm | 12 ++++++++--- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/x86/bootsector.asm b/x86/bootsector.asm index cbf466f810..bc50c22eac 100644 --- a/x86/bootsector.asm +++ b/x86/bootsector.asm @@ -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 diff --git a/x86/startup-x86_64.asm b/x86/startup-x86_64.asm index 8ac8d89896..8d27857193 100644 --- a/x86/startup-x86_64.asm +++ b/x86/startup-x86_64.asm @@ -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