17105de84f1cb5ef640bfe4b8b137837c346caab5Sam Ravnborg#ifndef __SPARC_KERNEL_H
27105de84f1cb5ef640bfe4b8b137837c346caab5Sam Ravnborg#define __SPARC_KERNEL_H
381265fd93bc40c7c43fd36796571786ae3df00e0Sam Ravnborg
481265fd93bc40c7c43fd36796571786ae3df00e0Sam Ravnborg#include <linux/interrupt.h>
581265fd93bc40c7c43fd36796571786ae3df00e0Sam Ravnborg
6a2a211cb55f0f3d13d791f3d2adccc96032e6846Sam Ravnborg#include <asm/traps.h>
7ea5e7447ea9d555558e0f13798f5143dd51a915aDavid S. Miller#include <asm/head.h>
8ea5e7447ea9d555558e0f13798f5143dd51a915aDavid S. Miller#include <asm/io.h>
9a2a211cb55f0f3d13d791f3d2adccc96032e6846Sam Ravnborg
1053ae341926b1238af3170f2f306f52a22430776cSam Ravnborg/* cpu.c */
11c3cf5e8cc56d272f828a66610bb78bbb727b2ce1David S. Millerextern const char *sparc_pmu_type;
1253ae341926b1238af3170f2f306f52a22430776cSam Ravnborgextern unsigned int fsr_storage;
13cb1b8209815594613650772eeb889c170107dad4Sam Ravnborgextern int ncpus_probed;
1453ae341926b1238af3170f2f306f52a22430776cSam Ravnborg
15ac85fe8b21248054851e05bfaa352562e5b06dd3David S. Miller#ifdef CONFIG_SPARC64
16ac85fe8b21248054851e05bfaa352562e5b06dd3David S. Miller/* setup_64.c */
17ac85fe8b21248054851e05bfaa352562e5b06dd3David S. Millerstruct seq_file;
18ac85fe8b21248054851e05bfaa352562e5b06dd3David S. Millerextern void cpucap_info(struct seq_file *);
19ea5e7447ea9d555558e0f13798f5143dd51a915aDavid S. Miller
20ea5e7447ea9d555558e0f13798f5143dd51a915aDavid S. Millerstatic inline unsigned long kimage_addr_to_ra(const char *p)
21ea5e7447ea9d555558e0f13798f5143dd51a915aDavid S. Miller{
22ea5e7447ea9d555558e0f13798f5143dd51a915aDavid S. Miller	unsigned long val = (unsigned long) p;
23ea5e7447ea9d555558e0f13798f5143dd51a915aDavid S. Miller
24ea5e7447ea9d555558e0f13798f5143dd51a915aDavid S. Miller	return kern_base + (val - KERNBASE);
25ea5e7447ea9d555558e0f13798f5143dd51a915aDavid S. Miller}
26ac85fe8b21248054851e05bfaa352562e5b06dd3David S. Miller#endif
27ac85fe8b21248054851e05bfaa352562e5b06dd3David S. Miller
288d74e32a537e8dbb22a1d5e9005d11111dab979aSam Ravnborg#ifdef CONFIG_SPARC32
298d74e32a537e8dbb22a1d5e9005d11111dab979aSam Ravnborg/* cpu.c */
3053ae341926b1238af3170f2f306f52a22430776cSam Ravnborgextern void cpu_probe(void);
3153ae341926b1238af3170f2f306f52a22430776cSam Ravnborg
328d74e32a537e8dbb22a1d5e9005d11111dab979aSam Ravnborg/* traps_32.c */
338d74e32a537e8dbb22a1d5e9005d11111dab979aSam Ravnborgextern void handle_hw_divzero(struct pt_regs *regs, unsigned long pc,
348d74e32a537e8dbb22a1d5e9005d11111dab979aSam Ravnborg                              unsigned long npc, unsigned long psr);
358d74e32a537e8dbb22a1d5e9005d11111dab979aSam Ravnborg/* muldiv.c */
368d74e32a537e8dbb22a1d5e9005d11111dab979aSam Ravnborgextern int do_user_muldiv (struct pt_regs *, unsigned long);
3781265fd93bc40c7c43fd36796571786ae3df00e0Sam Ravnborg
3881265fd93bc40c7c43fd36796571786ae3df00e0Sam Ravnborg/* irq_32.c */
3981265fd93bc40c7c43fd36796571786ae3df00e0Sam Ravnborgextern struct irqaction static_irqaction[];
4081265fd93bc40c7c43fd36796571786ae3df00e0Sam Ravnborgextern int static_irq_count;
4181265fd93bc40c7c43fd36796571786ae3df00e0Sam Ravnborgextern spinlock_t irq_action_lock;
4281265fd93bc40c7c43fd36796571786ae3df00e0Sam Ravnborg
4381265fd93bc40c7c43fd36796571786ae3df00e0Sam Ravnborgextern void unexpected_irq(int irq, void *dev_id, struct pt_regs * regs);
44b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern void init_IRQ(void);
45b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg
46b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg/* sun4c_irq.c */
47b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern void sun4c_init_IRQ(void);
48b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg
49b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg/* sun4m_irq.c */
50b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern unsigned int lvl14_resolution;
51b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg
52b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern void sun4m_init_IRQ(void);
536baa9b20a68a88c2fd751cbe8d7652009379351bSam Ravnborgextern void sun4m_unmask_profile_irq(void);
54b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern void sun4m_clear_profile_irq(int cpu);
55b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg
56b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg/* sun4d_irq.c */
57b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern spinlock_t sun4d_imsk_lock;
58b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg
59b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern void sun4d_init_IRQ(void);
60b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern int sun4d_request_irq(unsigned int irq,
61b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg                             irq_handler_t handler,
62b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg                             unsigned long irqflags,
63b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg                             const char *devname, void *dev_id);
64b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern int show_sun4d_interrupts(struct seq_file *, void *);
65b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern void sun4d_distribute_irqs(void);
66b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern void sun4d_free_irq(unsigned int irq, void *dev_id);
67b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg
68b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg/* head_32.S */
69b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern unsigned int t_nmi[];
70b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern unsigned int linux_trap_ipi15_sun4d[];
71b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern unsigned int linux_trap_ipi15_sun4m[];
72b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg
73a2a211cb55f0f3d13d791f3d2adccc96032e6846Sam Ravnborgextern struct tt_entry trapbase_cpu1;
74a2a211cb55f0f3d13d791f3d2adccc96032e6846Sam Ravnborgextern struct tt_entry trapbase_cpu2;
75a2a211cb55f0f3d13d791f3d2adccc96032e6846Sam Ravnborgextern struct tt_entry trapbase_cpu3;
76b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg
77b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern char cputypval[];
78b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg
79b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg/* entry.S */
80b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern unsigned long lvl14_save[4];
81b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern unsigned int real_irq_entry[];
82b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern unsigned int smp4d_ticker[];
83b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern unsigned int patchme_maybe_smp_msg[];
84b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg
85b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern void floppy_hardint(void);
86b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg
87b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborg/* trampoline_32.S */
88b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern int __smp4m_processor_id(void);
89b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern int __smp4d_processor_id(void);
90b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern unsigned long sun4m_cpu_startup;
91b7afdb7e85d97294efa24fbfef7b1fa196ca808cSam Ravnborgextern unsigned long sun4d_cpu_startup;
9281265fd93bc40c7c43fd36796571786ae3df00e0Sam Ravnborg
938d74e32a537e8dbb22a1d5e9005d11111dab979aSam Ravnborg#else /* CONFIG_SPARC32 */
947105de84f1cb5ef640bfe4b8b137837c346caab5Sam Ravnborg#endif /* CONFIG_SPARC32 */
957105de84f1cb5ef640bfe4b8b137837c346caab5Sam Ravnborg#endif /* !(__SPARC_KERNEL_H) */
96