7df304f3e0
use the PBVM. This eliminates the implied hardcoding of the physical address at which the kernel needs to be loaded. Using the PBVM makes it possible to load the kernel irrespective of the physical memory organization and allows us to replicate kernel text on NUMA machines. While here, reduce the direct-mapped page size to the kernel's page size so that we can support memory attributes better.
53 lines
1.1 KiB
C
53 lines
1.1 KiB
C
/*
|
|
* $FreeBSD$
|
|
*/
|
|
#ifndef _MACHINE_SMP_H_
|
|
#define _MACHINE_SMP_H_
|
|
|
|
#ifdef _KERNEL
|
|
|
|
#define IPI_AST ia64_ipi_ast
|
|
#define IPI_PREEMPT ia64_ipi_preempt
|
|
#define IPI_RENDEZVOUS ia64_ipi_rndzvs
|
|
#define IPI_STOP ia64_ipi_stop
|
|
#define IPI_STOP_HARD ia64_ipi_nmi
|
|
|
|
#ifndef LOCORE
|
|
|
|
struct pcpu;
|
|
|
|
struct ia64_ap_state {
|
|
uint64_t as_trace;
|
|
uint64_t as_pgtbl_pte;
|
|
uint64_t as_pgtbl_itir;
|
|
uint64_t as_text_va;
|
|
uint64_t as_text_pte;
|
|
uint64_t as_text_itir;
|
|
uint64_t as_data_va;
|
|
uint64_t as_data_pte;
|
|
uint64_t as_data_itir;
|
|
void *as_kstack;
|
|
void *as_kstack_top;
|
|
struct pcpu *as_pcpu;
|
|
volatile int as_delay;
|
|
volatile u_int as_awake;
|
|
volatile u_int as_spin;
|
|
};
|
|
|
|
extern int ia64_ipi_ast;
|
|
extern int ia64_ipi_highfp;
|
|
extern int ia64_ipi_nmi;
|
|
extern int ia64_ipi_preempt;
|
|
extern int ia64_ipi_rndzvs;
|
|
extern int ia64_ipi_stop;
|
|
extern int ia64_ipi_wakeup;
|
|
|
|
void ipi_all_but_self(int ipi);
|
|
void ipi_cpu(int cpu, u_int ipi);
|
|
void ipi_selected(cpumask_t cpus, int ipi);
|
|
void ipi_send(struct pcpu *, int ipi);
|
|
|
|
#endif /* !LOCORE */
|
|
#endif /* _KERNEL */
|
|
#endif /* !_MACHINE_SMP_H */
|