1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
21da177e4SLinus Torvalds #include <linux/interrupt.h>
3801f92adSHaavard Skinnemoen #include <linux/io.h>
41da177e4SLinus Torvalds
51da177e4SLinus Torvalds /* Prototypes of functions used across modules here in this directory. */
61da177e4SLinus Torvalds
71da177e4SLinus Torvalds #define vucp volatile unsigned char *
81da177e4SLinus Torvalds #define vusp volatile unsigned short *
91da177e4SLinus Torvalds #define vip volatile int *
101da177e4SLinus Torvalds #define vuip volatile unsigned int *
111da177e4SLinus Torvalds #define vulp volatile unsigned long *
121da177e4SLinus Torvalds
131da177e4SLinus Torvalds struct pt_regs;
141da177e4SLinus Torvalds struct task_struct;
151da177e4SLinus Torvalds struct pci_dev;
161da177e4SLinus Torvalds struct pci_controller;
171da177e4SLinus Torvalds
181da177e4SLinus Torvalds /* core_apecs.c */
191da177e4SLinus Torvalds extern struct pci_ops apecs_pci_ops;
201da177e4SLinus Torvalds extern void apecs_init_arch(void);
211da177e4SLinus Torvalds extern void apecs_pci_clr_err(void);
225f0e3da6SRandy Dunlap extern void apecs_machine_check(unsigned long vector, unsigned long la_ptr);
231da177e4SLinus Torvalds extern void apecs_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
241da177e4SLinus Torvalds
251da177e4SLinus Torvalds /* core_cia.c */
261da177e4SLinus Torvalds extern struct pci_ops cia_pci_ops;
271da177e4SLinus Torvalds extern void cia_init_pci(void);
281da177e4SLinus Torvalds extern void cia_init_arch(void);
291da177e4SLinus Torvalds extern void pyxis_init_arch(void);
301da177e4SLinus Torvalds extern void cia_kill_arch(int);
315f0e3da6SRandy Dunlap extern void cia_machine_check(unsigned long vector, unsigned long la_ptr);
321da177e4SLinus Torvalds extern void cia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
331da177e4SLinus Torvalds
341da177e4SLinus Torvalds /* core_irongate.c */
351da177e4SLinus Torvalds extern struct pci_ops irongate_pci_ops;
361da177e4SLinus Torvalds extern int irongate_pci_clr_err(void);
371da177e4SLinus Torvalds extern void irongate_init_arch(void);
381da177e4SLinus Torvalds #define irongate_pci_tbi ((void *)0)
391da177e4SLinus Torvalds
401da177e4SLinus Torvalds /* core_lca.c */
411da177e4SLinus Torvalds extern struct pci_ops lca_pci_ops;
421da177e4SLinus Torvalds extern void lca_init_arch(void);
435f0e3da6SRandy Dunlap extern void lca_machine_check(unsigned long vector, unsigned long la_ptr);
441da177e4SLinus Torvalds extern void lca_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
451da177e4SLinus Torvalds
461da177e4SLinus Torvalds /* core_marvel.c */
471da177e4SLinus Torvalds extern struct pci_ops marvel_pci_ops;
481da177e4SLinus Torvalds extern void marvel_init_arch(void);
491da177e4SLinus Torvalds extern void marvel_kill_arch(int);
501ffb1c0cSIvan Kokshaysky extern void marvel_machine_check(unsigned long, unsigned long);
511da177e4SLinus Torvalds extern void marvel_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
521da177e4SLinus Torvalds extern struct _alpha_agp_info *marvel_agp_info(void);
531da177e4SLinus Torvalds struct io7 *marvel_find_io7(int pe);
541da177e4SLinus Torvalds struct io7 *marvel_next_io7(struct io7 *prev);
551da177e4SLinus Torvalds void io7_clear_errors(struct io7 *io7);
561da177e4SLinus Torvalds
571da177e4SLinus Torvalds /* core_mcpcia.c */
581da177e4SLinus Torvalds extern struct pci_ops mcpcia_pci_ops;
591da177e4SLinus Torvalds extern void mcpcia_init_arch(void);
601da177e4SLinus Torvalds extern void mcpcia_init_hoses(void);
615f0e3da6SRandy Dunlap extern void mcpcia_machine_check(unsigned long vector, unsigned long la_ptr);
621da177e4SLinus Torvalds extern void mcpcia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
631da177e4SLinus Torvalds
641da177e4SLinus Torvalds /* core_polaris.c */
651da177e4SLinus Torvalds extern struct pci_ops polaris_pci_ops;
661da177e4SLinus Torvalds extern int polaris_read_config_dword(struct pci_dev *, int, u32 *);
671da177e4SLinus Torvalds extern int polaris_write_config_dword(struct pci_dev *, int, u32);
681da177e4SLinus Torvalds extern void polaris_init_arch(void);
695f0e3da6SRandy Dunlap extern void polaris_machine_check(unsigned long vector, unsigned long la_ptr);
701da177e4SLinus Torvalds #define polaris_pci_tbi ((void *)0)
711da177e4SLinus Torvalds
721da177e4SLinus Torvalds /* core_t2.c */
731da177e4SLinus Torvalds extern struct pci_ops t2_pci_ops;
741da177e4SLinus Torvalds extern void t2_init_arch(void);
751da177e4SLinus Torvalds extern void t2_kill_arch(int);
765f0e3da6SRandy Dunlap extern void t2_machine_check(unsigned long vector, unsigned long la_ptr);
771da177e4SLinus Torvalds extern void t2_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
781da177e4SLinus Torvalds
791da177e4SLinus Torvalds /* core_titan.c */
801da177e4SLinus Torvalds extern struct pci_ops titan_pci_ops;
811da177e4SLinus Torvalds extern void titan_init_arch(void);
821da177e4SLinus Torvalds extern void titan_kill_arch(int);
831ffb1c0cSIvan Kokshaysky extern void titan_machine_check(unsigned long, unsigned long);
841da177e4SLinus Torvalds extern void titan_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
851da177e4SLinus Torvalds extern struct _alpha_agp_info *titan_agp_info(void);
861da177e4SLinus Torvalds
871da177e4SLinus Torvalds /* core_tsunami.c */
881da177e4SLinus Torvalds extern struct pci_ops tsunami_pci_ops;
891da177e4SLinus Torvalds extern void tsunami_init_arch(void);
901da177e4SLinus Torvalds extern void tsunami_kill_arch(int);
915f0e3da6SRandy Dunlap extern void tsunami_machine_check(unsigned long vector, unsigned long la_ptr);
921da177e4SLinus Torvalds extern void tsunami_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
931da177e4SLinus Torvalds
941da177e4SLinus Torvalds /* core_wildfire.c */
951da177e4SLinus Torvalds extern struct pci_ops wildfire_pci_ops;
961da177e4SLinus Torvalds extern void wildfire_init_arch(void);
971da177e4SLinus Torvalds extern void wildfire_kill_arch(int);
985f0e3da6SRandy Dunlap extern void wildfire_machine_check(unsigned long vector, unsigned long la_ptr);
991da177e4SLinus Torvalds extern void wildfire_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
1001da177e4SLinus Torvalds
101025a2215SJay Estabrook /* console.c */
102025a2215SJay Estabrook #ifdef CONFIG_VGA_HOSE
103025a2215SJay Estabrook extern void find_console_vga_hose(void);
104025a2215SJay Estabrook extern void locate_and_init_vga(void *(*)(void *, void *));
105025a2215SJay Estabrook #else
find_console_vga_hose(void)106025a2215SJay Estabrook static inline void find_console_vga_hose(void) { }
locate_and_init_vga(void * (* sel_func)(void *,void *))107025a2215SJay Estabrook static inline void locate_and_init_vga(void *(*sel_func)(void *, void *)) { }
108025a2215SJay Estabrook #endif
109025a2215SJay Estabrook
1101da177e4SLinus Torvalds /* setup.c */
1111da177e4SLinus Torvalds extern unsigned long srm_hae;
1121da177e4SLinus Torvalds extern int boot_cpuid;
1131da177e4SLinus Torvalds #ifdef CONFIG_VERBOSE_MCHECK
1141da177e4SLinus Torvalds extern unsigned long alpha_verbose_mcheck;
1151da177e4SLinus Torvalds #endif
1161da177e4SLinus Torvalds
1171da177e4SLinus Torvalds /* srmcons.c */
1181da177e4SLinus Torvalds #if defined(CONFIG_ALPHA_GENERIC) || defined(CONFIG_ALPHA_SRM)
1191da177e4SLinus Torvalds extern void register_srm_console(void);
1201da177e4SLinus Torvalds extern void unregister_srm_console(void);
1211da177e4SLinus Torvalds #else
1221da177e4SLinus Torvalds #define register_srm_console()
1231da177e4SLinus Torvalds #define unregister_srm_console()
1241da177e4SLinus Torvalds #endif
1251da177e4SLinus Torvalds
1261da177e4SLinus Torvalds /* smp.c */
1271da177e4SLinus Torvalds extern void setup_smp(void);
1281da177e4SLinus Torvalds extern void handle_ipi(struct pt_regs *);
1291da177e4SLinus Torvalds
1301da177e4SLinus Torvalds /* bios32.c */
1311da177e4SLinus Torvalds /* extern void reset_for_srm(void); */
1321da177e4SLinus Torvalds
1331da177e4SLinus Torvalds /* time.c */
1344914d7b4SRichard Henderson extern irqreturn_t rtc_timer_interrupt(int irq, void *dev);
135a1659d6dSRichard Henderson extern void init_clockevent(void);
1361da177e4SLinus Torvalds extern void common_init_rtc(void);
1371da177e4SLinus Torvalds extern unsigned long est_cycle_freq;
1381da177e4SLinus Torvalds
1391da177e4SLinus Torvalds /* smc37c93x.c */
1401da177e4SLinus Torvalds extern void SMC93x_Init(void);
1411da177e4SLinus Torvalds
1421da177e4SLinus Torvalds /* smc37c669.c */
1431da177e4SLinus Torvalds extern void SMC669_Init(int);
1441da177e4SLinus Torvalds
1451da177e4SLinus Torvalds /* es1888.c */
1461da177e4SLinus Torvalds extern void es1888_init(void);
1471da177e4SLinus Torvalds
1481da177e4SLinus Torvalds /* ../lib/fpreg.c */
1491da177e4SLinus Torvalds extern void alpha_write_fp_reg (unsigned long reg, unsigned long val);
1501da177e4SLinus Torvalds extern unsigned long alpha_read_fp_reg (unsigned long reg);
1511da177e4SLinus Torvalds
1521da177e4SLinus Torvalds /* head.S */
1531da177e4SLinus Torvalds extern void wrmces(unsigned long mces);
1541da177e4SLinus Torvalds extern void cserve_ena(unsigned long);
1551da177e4SLinus Torvalds extern void cserve_dis(unsigned long);
1561da177e4SLinus Torvalds extern void __smp_callin(unsigned long);
1571da177e4SLinus Torvalds
1581da177e4SLinus Torvalds /* entry.S */
1591da177e4SLinus Torvalds extern void entArith(void);
1601da177e4SLinus Torvalds extern void entIF(void);
1611da177e4SLinus Torvalds extern void entInt(void);
1621da177e4SLinus Torvalds extern void entMM(void);
1631da177e4SLinus Torvalds extern void entSys(void);
1641da177e4SLinus Torvalds extern void entUna(void);
1651da177e4SLinus Torvalds extern void entDbg(void);
1661da177e4SLinus Torvalds
1671da177e4SLinus Torvalds /* ptrace.c */
1681da177e4SLinus Torvalds extern int ptrace_set_bpt (struct task_struct *child);
1691da177e4SLinus Torvalds extern int ptrace_cancel_bpt (struct task_struct *child);
1701da177e4SLinus Torvalds
1711da177e4SLinus Torvalds /* traps.c */
1721da177e4SLinus Torvalds extern void dik_show_regs(struct pt_regs *regs, unsigned long *r9_15);
1731da177e4SLinus Torvalds extern void die_if_kernel(char *, struct pt_regs *, long, unsigned long *);
1741da177e4SLinus Torvalds
1751da177e4SLinus Torvalds /* sys_titan.c */
1762f116cbfSAl Viro extern void titan_dispatch_irqs(u64);
1771da177e4SLinus Torvalds
1781da177e4SLinus Torvalds /* ../mm/init.c */
1791da177e4SLinus Torvalds extern void switch_to_system_map(void);
1801da177e4SLinus Torvalds extern void srm_paging_stop(void);
1811da177e4SLinus Torvalds
182801f92adSHaavard Skinnemoen static inline int
__alpha_remap_area_pages(unsigned long address,unsigned long phys_addr,unsigned long size,unsigned long flags)183801f92adSHaavard Skinnemoen __alpha_remap_area_pages(unsigned long address, unsigned long phys_addr,
184801f92adSHaavard Skinnemoen unsigned long size, unsigned long flags)
185801f92adSHaavard Skinnemoen {
186801f92adSHaavard Skinnemoen pgprot_t prot;
187801f92adSHaavard Skinnemoen
188801f92adSHaavard Skinnemoen prot = __pgprot(_PAGE_VALID | _PAGE_ASM | _PAGE_KRE
189801f92adSHaavard Skinnemoen | _PAGE_KWE | flags);
190801f92adSHaavard Skinnemoen return ioremap_page_range(address, address + size, phys_addr, prot);
191801f92adSHaavard Skinnemoen }
1921da177e4SLinus Torvalds
1931da177e4SLinus Torvalds /* irq.c */
1941da177e4SLinus Torvalds
1951da177e4SLinus Torvalds #ifdef CONFIG_SMP
1961da177e4SLinus Torvalds #define mcheck_expected(cpu) (cpu_data[cpu].mcheck_expected)
1971da177e4SLinus Torvalds #define mcheck_taken(cpu) (cpu_data[cpu].mcheck_taken)
1981da177e4SLinus Torvalds #define mcheck_extra(cpu) (cpu_data[cpu].mcheck_extra)
1991da177e4SLinus Torvalds #else
2001da177e4SLinus Torvalds extern struct mcheck_info
2011da177e4SLinus Torvalds {
2021da177e4SLinus Torvalds unsigned char expected __attribute__((aligned(8)));
2031da177e4SLinus Torvalds unsigned char taken;
2041da177e4SLinus Torvalds unsigned char extra;
2051da177e4SLinus Torvalds } __mcheck_info;
2061da177e4SLinus Torvalds
2071da177e4SLinus Torvalds #define mcheck_expected(cpu) (*((void)(cpu), &__mcheck_info.expected))
2081da177e4SLinus Torvalds #define mcheck_taken(cpu) (*((void)(cpu), &__mcheck_info.taken))
2091da177e4SLinus Torvalds #define mcheck_extra(cpu) (*((void)(cpu), &__mcheck_info.extra))
2101da177e4SLinus Torvalds #endif
2111da177e4SLinus Torvalds
2121da177e4SLinus Torvalds extern void process_mcheck_info(unsigned long vector, unsigned long la_ptr,
2134fa1970aSAl Viro const char *machine, int expected);
214