summaryrefslogtreecommitdiff
path: root/kernel/smp.c
diff options
context:
space:
mode:
authorMichal Idziorek <m.i@gmx.at>2014-09-04 15:51:43 +0200
committerMichal Idziorek <m.i@gmx.at>2014-09-04 15:51:43 +0200
commit75c46037e742f07001fafc5a093b27556d2490c9 (patch)
tree463089fd3c37f6ac397958d113c73b9b1ebfd426 /kernel/smp.c
parent06e382afcbf199e5e4ec92574a3872ab04fb6e9e (diff)
reenabled symmetric multiprocessing entry
Diffstat (limited to 'kernel/smp.c')
-rw-r--r--kernel/smp.c17
1 files changed, 13 insertions, 4 deletions
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
}
}