diff options
| author | Hanjie Wu <hanjiew@andrew.cmu.edu> | 2023-04-24 03:51:54 -0400 |
|---|---|---|
| committer | Hanjie Wu <hanjiew@andrew.cmu.edu> | 2023-04-24 03:55:02 -0400 |
| commit | 6b13d5d9b1ff1cb38bb50e918e51a241a225f8da (patch) | |
| tree | 90e8e5da37402975d769184aeb4b51fa13b610f3 /kern/kernel.c | |
| parent | e021b8f12ad129c0bdbda3111bb93a170e21ae41 (diff) | |
timer
Diffstat (limited to 'kern/kernel.c')
| -rw-r--r-- | kern/kernel.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/kern/kernel.c b/kern/kernel.c index 057b6fe..bd675a5 100644 --- a/kern/kernel.c +++ b/kern/kernel.c @@ -55,6 +55,7 @@ static void kernel_smp_main(); int kernel_main(mbinfo_t* mbinfo, int argc, char** argv, char** envp) { int smp_good = (smp_init(mbinfo) == 0); paging_init(); + setup_pts(); percpu_t percpu; setup_percpu(&percpu); thread_t kthread; @@ -62,12 +63,12 @@ int kernel_main(mbinfo_t* mbinfo, int argc, char** argv, char** envp) { setup_kth(&kthread, &kprocess); set_mapped_phys_page(mapped_phys_pages); set_mapped_phys_page_pte(mapped_phys_page_ptes); - setup_pts(); idt_init(); mm_init(); - timer_init(); pv_init(); + timer_init(); + print_toad(); const char* init_args[] = {INIT_NAME}; @@ -76,11 +77,12 @@ int kernel_main(mbinfo_t* mbinfo, int argc, char** argv, char** envp) { add_thread(init); insert_ready_tail(init); - if (smp_good && smp_num_cpus() > 1 && 0) { - /* SMP not enabled */ + if (smp_good && smp_num_cpus() > 1) { + set_cr3((pa_t)&kernel_pd); smp_boot(kernel_smp_entry); } + setup_lapic_timer(); kernel_smp_main(); return -1; } @@ -94,6 +96,7 @@ static void kernel_smp_entry(int cpuid) { setup_kth(&kthread, &kprocess); set_mapped_phys_page(mapped_phys_pages + cpuid * PAGE_SIZE); set_mapped_phys_page_pte(mapped_phys_page_ptes + cpuid); + setup_lapic_timer(); kernel_smp_main(); } |
