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