xref: /openbmc/linux/arch/sparc/kernel/kernel.h (revision b8417de3)
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