From 75c46037e742f07001fafc5a093b27556d2490c9 Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Thu, 4 Sep 2014 15:51:43 +0200 Subject: reenabled symmetric multiprocessing entry --- kernel/smp.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'kernel/smp.c') diff --git a/kernel/smp.c b/kernel/smp.c index b1a4e3a..0543943 100644 --- a/kernel/smp.c +++ b/kernel/smp.c @@ -19,8 +19,17 @@ void smp_log_procdata(smp_processors *procdata) } // this will start all our application processors! -void smp_start_aps(smp_processors *pros) +void smp_start_aps(smp_processors *pros,uint8_t *start_sel) { + + //lets copy the code to the bootsector ! + + uint8_t *dest=0x7000; + for(int i=0;i<0x100;i++) + { + dest[i]=start_sel[i]; + + } //bsp (boot processor) enables its local apic uint32_t *reg=pros->local_apic_address+FOOLOS_APIC_SPUR_INT; @@ -42,10 +51,10 @@ void smp_start_aps(smp_processors *pros) // do we really neet this? // todo: use some real sleep (not implemented yet :( ) - sleep(3); + sleep(30); - // start proc at 0x7000; - *reg=(6<<8)|(1<<14)|0x9; // 110 SIPI + // start proc 0x7 = 0x7000; etc.. + *reg=(6<<8)|(1<<14)|0x7; // 110 SIPI } } -- cgit v1.2.3