From: Almudena Garcia Date: Mon, 10 Aug 2020 20:02:59 +0200 Subject: [PATCH 6/6] model_dep.c: Add smp_init call if NCPUS > 1, call to smp_init to start the search and enumeration of the cpus *i386/i386/model_dep.c (machine_init): add smp_init() call --- diff --git a/Makefrag.am b/Makefrag.am index ea612275..03821d03 100644 --- a/Makefrag.am +++ b/Makefrag.am @@ -122,6 +122,24 @@ EXTRA_DIST += \ ipc/notify.defs +# +# SMP implementation (APIC, ACPI, etc) +# + +libkernel_a_SOURCES += \ + i386/i386at/acpi_parse_apic.h \ + i386/i386at/acpi_parse_apic.c + +libkernel_a_SOURCES += \ + i386/i386/apic.h \ + i386/i386/apic.c + +libkernel_a_SOURCES += \ + kern/smp.h \ + kern/smp.c \ + i386/i386/smp.h \ + i386/i386/smp.c + # # `kernel' implementation (tasks, threads, trivia, etc.). # diff --git a/i386/i386at/model_dep.c b/i386/i386at/model_dep.c index aaeed807..fc072dc3 100644 --- a/i386/i386at/model_dep.c +++ b/i386/i386at/model_dep.c @@ -42,7 +42,6 @@ #include #include -#include #include #include #include @@ -50,6 +49,7 @@ #include #include #include +#include #include #include #include @@ -62,6 +62,7 @@ #include #include #include +#include #include #include #include @@ -72,6 +73,7 @@ #include #include #include + #ifdef MACH_XEN #include #include @@ -170,6 +172,14 @@ void machine_init(void) linux_init(); #endif +#if NCPUS > 1 + int smp_success = smp_init(); + + if(smp_success != 0) { + printf("Error: no SMP found"); + } +#endif /* NCPUS > 1 */ + /* * Find the devices */