2008-12-08 12:07:47 +03:00
# ifndef __SPARC_KERNEL_H
# define __SPARC_KERNEL_H
2008-12-08 12:08:24 +03:00
# include <linux/interrupt.h>
2011-02-26 09:59:20 +03:00
# include <asm/traps.h>
2011-08-02 10:27:17 +04:00
# include <asm/head.h>
# include <asm/io.h>
2011-02-26 09:59:20 +03:00
2008-12-07 11:02:08 +03:00
/* cpu.c */
2009-01-22 10:16:40 +03:00
extern const char * sparc_pmu_type ;
2008-12-07 11:02:08 +03:00
extern unsigned int fsr_storage ;
2011-04-22 02:45:45 +04:00
extern int ncpus_probed ;
2008-12-07 11:02:08 +03:00
2011-07-29 10:31:26 +04:00
# ifdef CONFIG_SPARC64
/* setup_64.c */
struct seq_file ;
extern void cpucap_info ( struct seq_file * ) ;
2011-08-02 10:27:17 +04:00
static inline unsigned long kimage_addr_to_ra ( const char * p )
{
unsigned long val = ( unsigned long ) p ;
return kern_base + ( val - KERNBASE ) ;
}
2011-07-29 10:31:26 +04:00
# endif
2008-12-08 12:04:59 +03:00
# ifdef CONFIG_SPARC32
2012-05-26 01:20:08 +04:00
/* setup_32.c */
void sparc32_start_kernel ( struct linux_romvec * rp ) ;
2008-12-08 12:04:59 +03:00
/* cpu.c */
2008-12-07 11:02:08 +03:00
extern void cpu_probe ( void ) ;
2008-12-08 12:04:59 +03:00
/* traps_32.c */
extern void handle_hw_divzero ( struct pt_regs * regs , unsigned long pc ,
unsigned long npc , unsigned long psr ) ;
2008-12-08 12:08:24 +03:00
/* irq_32.c */
extern struct irqaction static_irqaction [ ] ;
extern int static_irq_count ;
extern spinlock_t irq_action_lock ;
extern void unexpected_irq ( int irq , void * dev_id , struct pt_regs * regs ) ;
2011-01-29 01:08:18 +03:00
extern void init_IRQ ( void ) ;
/* sun4m_irq.c */
extern void sun4m_init_IRQ ( void ) ;
2011-04-18 15:25:44 +04:00
extern void sun4m_unmask_profile_irq ( void ) ;
2011-01-29 01:08:18 +03:00
extern void sun4m_clear_profile_irq ( int cpu ) ;
2013-02-15 18:52:06 +04:00
/* sun4m_smp.c */
void sun4m_cpu_pre_starting ( void * arg ) ;
void sun4m_cpu_pre_online ( void * arg ) ;
2011-01-29 01:08:18 +03:00
/* sun4d_irq.c */
extern spinlock_t sun4d_imsk_lock ;
extern void sun4d_init_IRQ ( void ) ;
extern int sun4d_request_irq ( unsigned int irq ,
irq_handler_t handler ,
unsigned long irqflags ,
const char * devname , void * dev_id ) ;
extern int show_sun4d_interrupts ( struct seq_file * , void * ) ;
extern void sun4d_distribute_irqs ( void ) ;
extern void sun4d_free_irq ( unsigned int irq , void * dev_id ) ;
2013-02-15 18:52:06 +04:00
/* sun4d_smp.c */
void sun4d_cpu_pre_starting ( void * arg ) ;
void sun4d_cpu_pre_online ( void * arg ) ;
/* leon_smp.c */
void leon_cpu_pre_starting ( void * arg ) ;
void leon_cpu_pre_online ( void * arg ) ;
2011-01-29 01:08:18 +03:00
/* head_32.S */
extern unsigned int t_nmi [ ] ;
extern unsigned int linux_trap_ipi15_sun4d [ ] ;
extern unsigned int linux_trap_ipi15_sun4m [ ] ;
2011-02-26 09:59:20 +03:00
extern struct tt_entry trapbase_cpu1 ;
extern struct tt_entry trapbase_cpu2 ;
extern struct tt_entry trapbase_cpu3 ;
2011-01-29 01:08:18 +03:00
extern char cputypval [ ] ;
/* entry.S */
extern unsigned long lvl14_save [ 4 ] ;
extern unsigned int real_irq_entry [ ] ;
extern unsigned int smp4d_ticker [ ] ;
extern unsigned int patchme_maybe_smp_msg [ ] ;
extern void floppy_hardint ( void ) ;
/* trampoline_32.S */
extern unsigned long sun4m_cpu_startup ;
extern unsigned long sun4d_cpu_startup ;
2008-12-08 12:08:24 +03:00
2008-12-08 12:04:59 +03:00
# else /* CONFIG_SPARC32 */
2008-12-08 12:07:47 +03:00
# endif /* CONFIG_SPARC32 */
# endif /* !(__SPARC_KERNEL_H) */