1 #ifndef __SPARC_KERNEL_H 2 #define __SPARC_KERNEL_H 3 4 #include <linux/interrupt.h> 5 6 #include <asm/traps.h> 7 #include <asm/head.h> 8 #include <asm/io.h> 9 10 /* cpu.c */ 11 extern const char *sparc_pmu_type; 12 extern unsigned int fsr_storage; 13 extern int ncpus_probed; 14 15 #ifdef CONFIG_SPARC64 16 /* setup_64.c */ 17 struct seq_file; 18 void cpucap_info(struct seq_file *); 19 20 static inline unsigned long kimage_addr_to_ra(const char *p) 21 { 22 unsigned long val = (unsigned long) p; 23 24 return kern_base + (val - KERNBASE); 25 } 26 #endif 27 28 #ifdef CONFIG_SPARC32 29 /* setup_32.c */ 30 struct linux_romvec; 31 void sparc32_start_kernel(struct linux_romvec *rp); 32 33 /* cpu.c */ 34 void cpu_probe(void); 35 36 /* traps_32.c */ 37 void handle_hw_divzero(struct pt_regs *regs, unsigned long pc, 38 unsigned long npc, unsigned long psr); 39 /* irq_32.c */ 40 extern struct irqaction static_irqaction[]; 41 extern int static_irq_count; 42 extern spinlock_t irq_action_lock; 43 44 void unexpected_irq(int irq, void *dev_id, struct pt_regs * regs); 45 void init_IRQ(void); 46 47 /* sun4m_irq.c */ 48 void sun4m_init_IRQ(void); 49 void sun4m_unmask_profile_irq(void); 50 void sun4m_clear_profile_irq(int cpu); 51 52 /* sun4m_smp.c */ 53 void sun4m_cpu_pre_starting(void *arg); 54 void sun4m_cpu_pre_online(void *arg); 55 void __init smp4m_boot_cpus(void); 56 int smp4m_boot_one_cpu(int i, struct task_struct *idle); 57 void __init smp4m_smp_done(void); 58 void smp4m_cross_call_irq(void); 59 void smp4m_percpu_timer_interrupt(struct pt_regs *regs); 60 61 /* sun4d_irq.c */ 62 extern spinlock_t sun4d_imsk_lock; 63 64 void sun4d_init_IRQ(void); 65 int sun4d_request_irq(unsigned int irq, 66 irq_handler_t handler, 67 unsigned long irqflags, 68 const char *devname, void *dev_id); 69 int show_sun4d_interrupts(struct seq_file *, void *); 70 void sun4d_distribute_irqs(void); 71 void sun4d_free_irq(unsigned int irq, void *dev_id); 72 73 /* sun4d_smp.c */ 74 void sun4d_cpu_pre_starting(void *arg); 75 void sun4d_cpu_pre_online(void *arg); 76 void __init smp4d_boot_cpus(void); 77 int smp4d_boot_one_cpu(int i, struct task_struct *idle); 78 void __init smp4d_smp_done(void); 79 void smp4d_cross_call_irq(void); 80 void smp4d_percpu_timer_interrupt(struct pt_regs *regs); 81 82 /* leon_smp.c */ 83 void leon_cpu_pre_starting(void *arg); 84 void leon_cpu_pre_online(void *arg); 85 void leonsmp_ipi_interrupt(void); 86 void leon_cross_call_irq(void); 87 88 /* head_32.S */ 89 extern unsigned int t_nmi[]; 90 extern unsigned int linux_trap_ipi15_sun4d[]; 91 extern unsigned int linux_trap_ipi15_sun4m[]; 92 93 extern struct tt_entry trapbase_cpu1; 94 extern struct tt_entry trapbase_cpu2; 95 extern struct tt_entry trapbase_cpu3; 96 97 extern char cputypval[]; 98 99 /* entry.S */ 100 extern unsigned long lvl14_save[4]; 101 extern unsigned int real_irq_entry[]; 102 extern unsigned int smp4d_ticker[]; 103 extern unsigned int patchme_maybe_smp_msg[]; 104 105 void floppy_hardint(void); 106 107 /* trampoline_32.S */ 108 extern unsigned long sun4m_cpu_startup; 109 extern unsigned long sun4d_cpu_startup; 110 111 /* process_32.c */ 112 asmlinkage int sparc_do_fork(unsigned long clone_flags, 113 unsigned long stack_start, 114 struct pt_regs *regs, 115 unsigned long stack_size); 116 117 /* signal_32.c */ 118 asmlinkage void do_sigreturn(struct pt_regs *regs); 119 asmlinkage void do_rt_sigreturn(struct pt_regs *regs); 120 void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, 121 unsigned long thread_info_flags); 122 asmlinkage int do_sys_sigstack(struct sigstack __user *ssptr, 123 struct sigstack __user *ossptr, 124 unsigned long sp); 125 126 /* ptrace_32.c */ 127 asmlinkage int syscall_trace(struct pt_regs *regs, int syscall_exit_p); 128 129 /* unaligned_32.c */ 130 asmlinkage void kernel_unaligned_trap(struct pt_regs *regs, unsigned int insn); 131 asmlinkage void user_unaligned_trap(struct pt_regs *regs, unsigned int insn); 132 133 /* windows.c */ 134 void try_to_clear_window_buffer(struct pt_regs *regs, int who); 135 136 /* auxio_32.c */ 137 void __init auxio_probe(void); 138 void __init auxio_power_probe(void); 139 140 /* pcic.c */ 141 extern void __iomem *pcic_regs; 142 void pcic_nmi(unsigned int pend, struct pt_regs *regs); 143 144 /* time_32.c */ 145 void __init time_init(void); 146 147 #else /* CONFIG_SPARC32 */ 148 #endif /* CONFIG_SPARC32 */ 149 #endif /* !(__SPARC_KERNEL_H) */ 150