11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef __ALPHA_MACHVEC_H 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __ALPHA_MACHVEC_H 1 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/types.h> 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This file gets pulled in by asm/io.h from user space. We don't 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * want most of this escaping. 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef __KERNEL__ 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* The following structure vectors all of the I/O and IRQ manipulation 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds from the generic kernel to the hardware specific backend. */ 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct task_struct; 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct mm_struct; 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct vm_area_struct; 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct linux_hose_info; 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pci_dev; 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pci_ops; 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pci_controller; 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct _alpha_agp_info; 245f7dc5d75076fd1c1fc6bc09f2467509d20db24aIvan Kokshayskystruct rtc_time; 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct alpha_machine_vector 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* This "belongs" down below with the rest of the runtime 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds variables, but it is convenient for entry.S if these 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds two slots are at the beginning of the struct. */ 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long hae_cache; 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long *hae_register; 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int nr_irqs; 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int rtc_port; 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int max_asn; 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long max_isa_dma_address; 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long irq_probe_mask; 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long iack_sc; 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long min_io_address; 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long min_mem_address; 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long pci_dac_offset; 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*mv_pci_tbi)(struct pci_controller *hose, 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds dma_addr_t start, dma_addr_t end); 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int (*mv_ioread8)(void __iomem *); 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int (*mv_ioread16)(void __iomem *); 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int (*mv_ioread32)(void __iomem *); 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*mv_iowrite8)(u8, void __iomem *); 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*mv_iowrite16)(u16, void __iomem *); 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*mv_iowrite32)(u32, void __iomem *); 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u8 (*mv_readb)(const volatile void __iomem *); 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u16 (*mv_readw)(const volatile void __iomem *); 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u32 (*mv_readl)(const volatile void __iomem *); 581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u64 (*mv_readq)(const volatile void __iomem *); 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*mv_writeb)(u8, volatile void __iomem *); 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*mv_writew)(u16, volatile void __iomem *); 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*mv_writel)(u32, volatile void __iomem *); 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*mv_writeq)(u64, volatile void __iomem *); 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void __iomem *(*mv_ioportmap)(unsigned long); 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void __iomem *(*mv_ioremap)(unsigned long, unsigned long); 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*mv_iounmap)(volatile void __iomem *); 681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int (*mv_is_ioaddr)(unsigned long); 691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int (*mv_is_mmio)(const volatile void __iomem *); 701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*mv_switch_mm)(struct mm_struct *, struct mm_struct *, 721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct task_struct *); 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*mv_activate_mm)(struct mm_struct *, struct mm_struct *); 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*mv_flush_tlb_current)(struct mm_struct *); 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*mv_flush_tlb_current_page)(struct mm_struct * mm, 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct vm_area_struct *vma, 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long addr); 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*update_irq_hw)(unsigned long, unsigned long, int); 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*ack_irq)(unsigned long); 827ca56053b29633ef08b14e5ca16c663363edac36Al Viro void (*device_interrupt)(unsigned long vector); 835f0e3da6e186598bbd2569410ab60fa645ba00c9Randy Dunlap void (*machine_check)(unsigned long vector, unsigned long la); 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*smp_callin)(void); 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*init_arch)(void); 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*init_irq)(void); 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*init_rtc)(void); 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*init_pci)(void); 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*kill_arch)(int); 911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u8 (*pci_swizzle)(struct pci_dev *, u8 *); 93bf362f750bea1372aff3b5c405b50560a1b28981Al Viro int (*pci_map_irq)(const struct pci_dev *, u8, u8); 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct pci_ops *pci_ops; 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct _alpha_agp_info *(*agp_info)(void); 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 985f7dc5d75076fd1c1fc6bc09f2467509d20db24aIvan Kokshaysky unsigned int (*rtc_get_time)(struct rtc_time *); 995f7dc5d75076fd1c1fc6bc09f2467509d20db24aIvan Kokshaysky int (*rtc_set_time)(struct rtc_time *); 1005f7dc5d75076fd1c1fc6bc09f2467509d20db24aIvan Kokshaysky 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds const char *vector_name; 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* NUMA information */ 1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int (*pa_to_nid)(unsigned long); 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int (*cpuid_to_nid)(int); 1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long (*node_mem_start)(int); 1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long (*node_mem_size)(int); 1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* System specific parameters. */ 1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds union { 1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct { 1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long gru_int_req_bits; 1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } cia; 1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct { 1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long gamma_bias; 1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } t2; 1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct { 1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int route_tab; 1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } sio; 1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } sys; 1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern struct alpha_machine_vector alpha_mv; 1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_ALPHA_GENERIC 1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int alpha_using_srm; 1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_ALPHA_SRM 1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define alpha_using_srm 1 1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define alpha_using_srm 0 1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* GENERIC */ 1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* __ALPHA_MACHVEC_H */ 139