17105de84SSam Ravnborg #ifndef __SPARC_KERNEL_H 27105de84SSam Ravnborg #define __SPARC_KERNEL_H 381265fd9SSam Ravnborg 481265fd9SSam Ravnborg #include <linux/interrupt.h> 581265fd9SSam Ravnborg 6a2a211cbSSam Ravnborg #include <asm/traps.h> 7ea5e7447SDavid S. Miller #include <asm/head.h> 8ea5e7447SDavid S. Miller #include <asm/io.h> 9a2a211cbSSam Ravnborg 1053ae3419SSam Ravnborg /* cpu.c */ 11c3cf5e8cSDavid S. Miller extern const char *sparc_pmu_type; 1253ae3419SSam Ravnborg extern unsigned int fsr_storage; 13cb1b8209SSam Ravnborg extern int ncpus_probed; 1453ae3419SSam Ravnborg 15ac85fe8bSDavid S. Miller #ifdef CONFIG_SPARC64 16ac85fe8bSDavid S. Miller /* setup_64.c */ 17ac85fe8bSDavid S. Miller struct seq_file; 18ac85fe8bSDavid S. Miller extern void cpucap_info(struct seq_file *); 19ea5e7447SDavid S. Miller 20ea5e7447SDavid S. Miller static inline unsigned long kimage_addr_to_ra(const char *p) 21ea5e7447SDavid S. Miller { 22ea5e7447SDavid S. Miller unsigned long val = (unsigned long) p; 23ea5e7447SDavid S. Miller 24ea5e7447SDavid S. Miller return kern_base + (val - KERNBASE); 25ea5e7447SDavid S. Miller } 26ac85fe8bSDavid S. Miller #endif 27ac85fe8bSDavid S. Miller 288d74e32aSSam Ravnborg #ifdef CONFIG_SPARC32 294efb55e6SSam Ravnborg /* setup_32.c */ 304efb55e6SSam Ravnborg void sparc32_start_kernel(struct linux_romvec *rp); 314efb55e6SSam Ravnborg 328d74e32aSSam Ravnborg /* cpu.c */ 3353ae3419SSam Ravnborg extern void cpu_probe(void); 3453ae3419SSam Ravnborg 358d74e32aSSam Ravnborg /* traps_32.c */ 368d74e32aSSam Ravnborg extern void handle_hw_divzero(struct pt_regs *regs, unsigned long pc, 378d74e32aSSam Ravnborg unsigned long npc, unsigned long psr); 3881265fd9SSam Ravnborg /* irq_32.c */ 3981265fd9SSam Ravnborg extern struct irqaction static_irqaction[]; 4081265fd9SSam Ravnborg extern int static_irq_count; 4181265fd9SSam Ravnborg extern spinlock_t irq_action_lock; 4281265fd9SSam Ravnborg 4381265fd9SSam Ravnborg extern void unexpected_irq(int irq, void *dev_id, struct pt_regs * regs); 44b7afdb7eSSam Ravnborg extern void init_IRQ(void); 45b7afdb7eSSam Ravnborg 46b7afdb7eSSam Ravnborg /* sun4m_irq.c */ 47b7afdb7eSSam Ravnborg extern void sun4m_init_IRQ(void); 486baa9b20SSam Ravnborg extern void sun4m_unmask_profile_irq(void); 49b7afdb7eSSam Ravnborg extern void sun4m_clear_profile_irq(int cpu); 50b7afdb7eSSam Ravnborg 51f9fd3488SSam Ravnborg /* sun4m_smp.c */ 52f9fd3488SSam Ravnborg void sun4m_cpu_pre_starting(void *arg); 53f9fd3488SSam Ravnborg void sun4m_cpu_pre_online(void *arg); 54b8417de3SSam Ravnborg void __init smp4m_boot_cpus(void); 55b8417de3SSam Ravnborg int smp4m_boot_one_cpu(int i, struct task_struct *idle); 56b8417de3SSam Ravnborg void __init smp4m_smp_done(void); 57b8417de3SSam Ravnborg void smp4m_cross_call_irq(void); 58b8417de3SSam Ravnborg void smp4m_percpu_timer_interrupt(struct pt_regs *regs); 59f9fd3488SSam Ravnborg 60b7afdb7eSSam Ravnborg /* sun4d_irq.c */ 61b7afdb7eSSam Ravnborg extern spinlock_t sun4d_imsk_lock; 62b7afdb7eSSam Ravnborg 63b7afdb7eSSam Ravnborg extern void sun4d_init_IRQ(void); 64b7afdb7eSSam Ravnborg extern int sun4d_request_irq(unsigned int irq, 65b7afdb7eSSam Ravnborg irq_handler_t handler, 66b7afdb7eSSam Ravnborg unsigned long irqflags, 67b7afdb7eSSam Ravnborg const char *devname, void *dev_id); 68b7afdb7eSSam Ravnborg extern int show_sun4d_interrupts(struct seq_file *, void *); 69b7afdb7eSSam Ravnborg extern void sun4d_distribute_irqs(void); 70b7afdb7eSSam Ravnborg extern void sun4d_free_irq(unsigned int irq, void *dev_id); 71b7afdb7eSSam Ravnborg 72f9fd3488SSam Ravnborg /* sun4d_smp.c */ 73f9fd3488SSam Ravnborg void sun4d_cpu_pre_starting(void *arg); 74f9fd3488SSam Ravnborg void sun4d_cpu_pre_online(void *arg); 75f9fd3488SSam Ravnborg 76f9fd3488SSam Ravnborg /* leon_smp.c */ 77f9fd3488SSam Ravnborg void leon_cpu_pre_starting(void *arg); 78f9fd3488SSam Ravnborg void leon_cpu_pre_online(void *arg); 79f9fd3488SSam Ravnborg 80b7afdb7eSSam Ravnborg /* head_32.S */ 81b7afdb7eSSam Ravnborg extern unsigned int t_nmi[]; 82b7afdb7eSSam Ravnborg extern unsigned int linux_trap_ipi15_sun4d[]; 83b7afdb7eSSam Ravnborg extern unsigned int linux_trap_ipi15_sun4m[]; 84b7afdb7eSSam Ravnborg 85a2a211cbSSam Ravnborg extern struct tt_entry trapbase_cpu1; 86a2a211cbSSam Ravnborg extern struct tt_entry trapbase_cpu2; 87a2a211cbSSam Ravnborg extern struct tt_entry trapbase_cpu3; 88b7afdb7eSSam Ravnborg 89b7afdb7eSSam Ravnborg extern char cputypval[]; 90b7afdb7eSSam Ravnborg 91b7afdb7eSSam Ravnborg /* entry.S */ 92b7afdb7eSSam Ravnborg extern unsigned long lvl14_save[4]; 93b7afdb7eSSam Ravnborg extern unsigned int real_irq_entry[]; 94b7afdb7eSSam Ravnborg extern unsigned int smp4d_ticker[]; 95b7afdb7eSSam Ravnborg extern unsigned int patchme_maybe_smp_msg[]; 96b7afdb7eSSam Ravnborg 97b7afdb7eSSam Ravnborg extern void floppy_hardint(void); 98b7afdb7eSSam Ravnborg 99b7afdb7eSSam Ravnborg /* trampoline_32.S */ 100b7afdb7eSSam Ravnborg extern unsigned long sun4m_cpu_startup; 101b7afdb7eSSam Ravnborg extern unsigned long sun4d_cpu_startup; 10281265fd9SSam Ravnborg 1038bdd5a1bSSam Ravnborg /* process_32.c */ 1048bdd5a1bSSam Ravnborg asmlinkage int sparc_do_fork(unsigned long clone_flags, 1058bdd5a1bSSam Ravnborg unsigned long stack_start, 1068bdd5a1bSSam Ravnborg struct pt_regs *regs, 1078bdd5a1bSSam Ravnborg unsigned long stack_size); 1088bdd5a1bSSam Ravnborg 109529b17a9SSam Ravnborg /* signal_32.c */ 110529b17a9SSam Ravnborg asmlinkage void do_sigreturn(struct pt_regs *regs); 111529b17a9SSam Ravnborg asmlinkage void do_rt_sigreturn(struct pt_regs *regs); 112529b17a9SSam Ravnborg void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, 113529b17a9SSam Ravnborg unsigned long thread_info_flags); 114529b17a9SSam Ravnborg asmlinkage int do_sys_sigstack(struct sigstack __user *ssptr, 115529b17a9SSam Ravnborg struct sigstack __user *ossptr, 116529b17a9SSam Ravnborg unsigned long sp); 1177c8ee361SSam Ravnborg 118c8c8782dSSam Ravnborg /* ptrace_32.c */ 119c8c8782dSSam Ravnborg asmlinkage int syscall_trace(struct pt_regs *regs, int syscall_exit_p); 120c8c8782dSSam Ravnborg 1219edfae3fSSam Ravnborg /* unaligned_32.c */ 1229edfae3fSSam Ravnborg asmlinkage void kernel_unaligned_trap(struct pt_regs *regs, unsigned int insn); 1239edfae3fSSam Ravnborg asmlinkage void user_unaligned_trap(struct pt_regs *regs, unsigned int insn); 1249edfae3fSSam Ravnborg 1257c8ee361SSam Ravnborg /* windows.c */ 1267c8ee361SSam Ravnborg void try_to_clear_window_buffer(struct pt_regs *regs, int who); 1277c8ee361SSam Ravnborg 1286b5f02f3SSam Ravnborg /* tadpole.c */ 1296b5f02f3SSam Ravnborg void __init clock_stop_probe(void); 1306b5f02f3SSam Ravnborg 131a3ee8faaSSam Ravnborg /* auxio_32.c */ 132a3ee8faaSSam Ravnborg void __init auxio_probe(void); 133a3ee8faaSSam Ravnborg void __init auxio_power_probe(void); 134a3ee8faaSSam Ravnborg 1358d74e32aSSam Ravnborg #else /* CONFIG_SPARC32 */ 1367105de84SSam Ravnborg #endif /* CONFIG_SPARC32 */ 1377105de84SSam Ravnborg #endif /* !(__SPARC_KERNEL_H) */ 138