Date: Thu, 11 Sep 2003 12:38:34 -0700 (PDT) From: Peter Wemm <peter@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 37931 for review Message-ID: <200309111938.h8BJcYc2027758@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=37931 Change 37931 by peter@peter_overcee on 2003/09/11 12:37:57 initial sweep of merge/sync of i386 smp support Affected files ... .. //depot/projects/hammer/sys/amd64/amd64/mp_clock.c#1 branch .. //depot/projects/hammer/sys/amd64/amd64/mp_machdep.c#1 branch .. //depot/projects/hammer/sys/amd64/include/smp.h#6 integrate .. //depot/projects/hammer/sys/amd64/include/smptests.h#1 branch .. //depot/projects/hammer/sys/i386/i386/mpapic.c#7 delete .. //depot/projects/hammer/sys/i386/isa/apic_ipl.s#2 delete .. //depot/projects/hammer/sys/i386/isa/apic_vector.s#7 delete .. //depot/projects/hammer/sys/i386/isa/icu_ipl.s#2 delete .. //depot/projects/hammer/sys/i386/isa/icu_vector.s#2 delete .. //depot/projects/hammer/sys/i386/isa/intr_machdep.c#6 delete .. //depot/projects/hammer/sys/i386/isa/intr_machdep.h#3 delete .. //depot/projects/hammer/sys/i386/isa/ithread.c#3 delete .. //depot/projects/hammer/sys/i386/isa/vector.s#2 delete Differences ... ==== //depot/projects/hammer/sys/amd64/include/smp.h#6 (text+ko) ==== @@ -6,11 +6,85 @@ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * - * $FreeBSD: src/sys/amd64/include/smp.h,v 1.77 2003/05/01 01:05:23 peter Exp $ + * $FreeBSD: src/sys/i386/include/smp.h,v 1.76 2003/04/02 23:53:29 peter Exp $ * */ #ifndef _MACHINE_SMP_H_ #define _MACHINE_SMP_H_ +#ifdef _KERNEL + +#ifdef SMP + +#ifndef LOCORE + +/* + * For sending values to POST displays. + * XXX FIXME: where does this really belong, isa.h/isa.c perhaps? + */ +extern int current_postcode; /** XXX currently in mp_machdep.c */ +#define POSTCODE(X) current_postcode = (X), \ + outb(0x80, current_postcode) +#define POSTCODE_LO(X) current_postcode &= 0xf0, \ + current_postcode |= ((X) & 0x0f), \ + outb(0x80, current_postcode) +#define POSTCODE_HI(X) current_postcode &= 0x0f, \ + current_postcode |= (((X) << 4) & 0xf0), \ + outb(0x80, current_postcode) + +#include <sys/bus.h> +#include <machine/frame.h> +#include <machine/intr_machdep.h> +#include <machine/apicvar.h> + +/* global data in mpboot.s */ +extern int bootMP_size; + +/* functions in mpboot.s */ +void bootMP(void); + +/* global data in mp_machdep.c */ +extern int mp_naps; +extern int boot_cpu_id; +extern struct pcb stoppcbs[]; +extern struct mtx smp_tlb_mtx; + +/* IPI handlers */ +inthand_t + IDTVEC(invltlb), /* TLB shootdowns - global */ + IDTVEC(invlpg), /* TLB shootdowns - 1 page */ + IDTVEC(invlrng), /* TLB shootdowns - page range */ + IDTVEC(hardclock), /* Forward hardclock() */ + IDTVEC(statclock), /* Forward statclock() */ + IDTVEC(cpuast), /* Additional software trap on other cpu */ + IDTVEC(cpustop), /* CPU stops & waits to be restarted */ + IDTVEC(rendezvous), /* handle CPU rendezvous */ + IDTVEC(lazypmap); /* handle lazy pmap release */ + +/* functions in mp_machdep.c */ +void cpu_add(u_int apic_id, char boot_cpu); +void init_secondary(void); +void ipi_selected(u_int cpus, u_int ipi); +void ipi_all(u_int ipi); +void ipi_all_but_self(u_int ipi); +void ipi_self(u_int ipi); +void forward_statclock(void); +void forwarded_statclock(struct clockframe frame); +void forward_hardclock(void); +void forwarded_hardclock(struct clockframe frame); +u_int mp_bootaddress(u_int); +int mp_grab_cpu_hlt(void); +void smp_invlpg(vm_offset_t addr); +void smp_masked_invlpg(u_int mask, vm_offset_t addr); +void smp_invlpg_range(vm_offset_t startva, vm_offset_t endva); +void smp_masked_invlpg_range(u_int mask, vm_offset_t startva, + vm_offset_t endva); +void smp_invltlb(void); +void smp_masked_invltlb(u_int mask); + +#endif /* !LOCORE */ +#endif /* SMP */ + +#endif /* _KERNEL */ #endif /* _MACHINE_SMP_H_ */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200309111938.h8BJcYc2027758>