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