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