2005-04-16 15:20:36 -07:00
# ifndef _ASM_GENAPIC_H
# define _ASM_GENAPIC_H 1
/*
* Copyright 2004 James Cleverdon , IBM .
* Subject to the GNU Public License , v .2
*
* Generic APIC sub - arch data struct .
*
* Hacked for x86 - 64 by James Cleverdon from i386 architecture code by
* Martin Bligh , Andi Kleen , James Bottomley , John Stultz , and
* James Cleverdon .
*/
struct genapic {
char * name ;
u32 int_delivery_mode ;
u32 int_dest_mode ;
int ( * apic_id_registered ) ( void ) ;
cpumask_t ( * target_cpus ) ( void ) ;
2006-10-08 07:47:55 -06:00
cpumask_t ( * vector_allocation_domain ) ( int cpu ) ;
2005-04-16 15:20:36 -07:00
void ( * init_apic_ldr ) ( void ) ;
/* ipi */
void ( * send_IPI_mask ) ( cpumask_t mask , int vector ) ;
void ( * send_IPI_allbutself ) ( int vector ) ;
void ( * send_IPI_all ) ( int vector ) ;
/* */
unsigned int ( * cpu_mask_to_apicid ) ( cpumask_t cpumask ) ;
unsigned int ( * phys_pkg_id ) ( int index_msb ) ;
} ;
2007-05-02 19:27:04 +02:00
extern struct genapic * genapic ;
2005-04-16 15:20:36 -07:00
2007-05-02 19:27:04 +02:00
extern struct genapic apic_flat ;
extern struct genapic apic_physflat ;
2008-03-28 14:12:06 -05:00
extern int acpi_madt_oem_check ( char * , char * ) ;
enum uv_system_type { UV_NONE , UV_LEGACY_APIC , UV_X2APIC , UV_NON_UNIQUE_APIC } ;
extern enum uv_system_type get_uv_system_type ( void ) ;
extern int is_uv_system ( void ) ;
2007-05-02 19:27:04 +02:00
2008-03-28 14:12:16 -05:00
extern struct genapic apic_x2apic_uv_x ;
DECLARE_PER_CPU ( int , x2apic_extra_bits ) ;
extern void uv_cpu_init ( void ) ;
extern int uv_wakeup_secondary ( int phys_apicid , unsigned int start_rip ) ;
2005-04-16 15:20:36 -07:00
# endif