aboutsummaryrefslogtreecommitdiff
path: root/i386/i386at/model_dep.h
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2020-09-19 21:51:22 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2020-09-19 21:55:57 +0200
commita76bc939142f61e615fcc39fc940961e39a26207 (patch)
tree5224c805761fd68311de079f32b7c4ef0c613bf6 /i386/i386at/model_dep.h
parentb26973c8018b99bcf8fb071eb2aedc634039eea1 (diff)
downloadgnumach-a76bc939142f61e615fcc39fc940961e39a26207.tar.gz
gnumach-a76bc939142f61e615fcc39fc940961e39a26207.tar.bz2
gnumach-a76bc939142f61e615fcc39fc940961e39a26207.zip
smp: Add --enable-ncpus option and fix build
* configfrag.ac (--enable-ncpus): Add option to set $mach_ncpus. * i386/i386/cpu_number.h (CPU_NUMBER, cpu_number): New macros, set to 0 for now. * i386/i386/db_interface.c (cpu_interrupt_to_db): New function. * i386/i386/db_interface.h (cpu_interrupt_to_db): New declaration. * i386/i386/mp_desc.c (int_stack_base): New array. (intel_startCPU): New function. * i386/i386at/model_dep.c: Include <i386/smp.h> (int_stack_top, int_stack_base): Turn into arrays (i386at_init): Update accesses accordingly. * i386/i386at/model_dep.h (int_stack_top, int_stack_base, ON_INT_STACK): Likewise. * i386/intel/pmap.c (cpus_active, cpus_idle, cpu_update_needed): Add variables. * i386/intel/pmap.h (cpus_active, cpus_idle, cpu_update_needed): Mark extern. * kern/cpu_number.h: Include <machine/cpu_number.h> * linux/dev/arch/i386/kernel/irq.c (local_bh_count, local_irq_count): Hardcode to the address of intr_count. We will not use the Linux code in SMP mode anyway.
Diffstat (limited to 'i386/i386at/model_dep.h')
-rw-r--r--i386/i386at/model_dep.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/i386/i386at/model_dep.h b/i386/i386at/model_dep.h
index d47378a1..a972695f 100644
--- a/i386/i386at/model_dep.h
+++ b/i386/i386at/model_dep.h
@@ -25,10 +25,10 @@
/*
* Interrupt stack.
*/
-extern vm_offset_t int_stack_top, int_stack_base;
+extern vm_offset_t int_stack_top[NCPUS], int_stack_base[NCPUS];
/* Check whether P points to the interrupt stack. */
-#define ON_INT_STACK(P) (((P) & ~(KERNEL_STACK_SIZE-1)) == int_stack_base)
+#define ON_INT_STACK(P) (((P) & ~(KERNEL_STACK_SIZE-1)) == int_stack_base[0])
extern vm_offset_t timemmap(dev_t dev, vm_offset_t off, vm_prot_t prot);