summaryrefslogtreecommitdiff
path: root/kernel/smp.h
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-09-09 17:28:59 +0200
committerMiguel <m.i@gmx.at>2018-09-09 17:28:59 +0200
commit4cda542d863839c5b0e026ccee297ca5ff3dd9cd (patch)
tree7b8f7734f8f982df82b5c784386232e35a7ced44 /kernel/smp.h
parent9a4b35fd5a32490f8f15b48f978e7b1fbfdceb2a (diff)
switched to apic/ioapic finally
Diffstat (limited to 'kernel/smp.h')
-rw-r--r--kernel/smp.h28
1 files changed, 10 insertions, 18 deletions
diff --git a/kernel/smp.h b/kernel/smp.h
index e99c77b..7e4c66a 100644
--- a/kernel/smp.h
+++ b/kernel/smp.h
@@ -1,29 +1,21 @@
+// http://www.intel.com/content/dam/doc/specification-update/64-architecture-x2apic-specification.pdf
+// http://download.intel.com/design/chipsets/datashts/29056601.pdf
+// http://www.scs.stanford.edu/05au-cs240c/lab/ia32/IA32-3.pdf
+// https://wiki.osdev.org/Symmetric_Multiprocessing
+// https://wiki.osdev.org/APIC_timer
+//
#ifndef SMP_H
#define SMP_H
#include "kernel.h"
+#include "acpi.h"
#include <stdbool.h>
-typedef struct
-{
-
- uint8_t boot; //which processor in array is bsp
- // (boot strap processor)
-
- uint8_t processors; // total number of usable processors
-
- uint32_t local_apic_address;// same for every processor
- uint32_t io_apic_address;
-
- uint32_t local_apic_id[SMP_MAX_PROC]; // unique for every processor
-
- uint32_t flags;
-
-}smp_processors;
+#include <stdint.h>
void apicEOI();
uint32_t apicID();
-bool acpi_find(smp_processors *procdata);
-void smp_start_aps(smp_processors *pros);
+void apicIPI(uint8_t dest, uint8_t number);
+void smp_start_aps(acpi_information *pros);
#endif