1*024b246eSLinus Torvalds #ifndef __ALPHA_MACHVEC_H 2*024b246eSLinus Torvalds #define __ALPHA_MACHVEC_H 1 3*024b246eSLinus Torvalds 4*024b246eSLinus Torvalds #include <linux/types.h> 5*024b246eSLinus Torvalds 6*024b246eSLinus Torvalds /* 7*024b246eSLinus Torvalds * This file gets pulled in by asm/io.h from user space. We don't 8*024b246eSLinus Torvalds * want most of this escaping. 9*024b246eSLinus Torvalds */ 10*024b246eSLinus Torvalds 11*024b246eSLinus Torvalds #ifdef __KERNEL__ 12*024b246eSLinus Torvalds 13*024b246eSLinus Torvalds /* The following structure vectors all of the I/O and IRQ manipulation 14*024b246eSLinus Torvalds from the generic kernel to the hardware specific backend. */ 15*024b246eSLinus Torvalds 16*024b246eSLinus Torvalds struct task_struct; 17*024b246eSLinus Torvalds struct mm_struct; 18*024b246eSLinus Torvalds struct vm_area_struct; 19*024b246eSLinus Torvalds struct linux_hose_info; 20*024b246eSLinus Torvalds struct pci_dev; 21*024b246eSLinus Torvalds struct pci_ops; 22*024b246eSLinus Torvalds struct pci_controller; 23*024b246eSLinus Torvalds struct _alpha_agp_info; 24*024b246eSLinus Torvalds 25*024b246eSLinus Torvalds struct alpha_machine_vector 26*024b246eSLinus Torvalds { 27*024b246eSLinus Torvalds /* This "belongs" down below with the rest of the runtime 28*024b246eSLinus Torvalds variables, but it is convenient for entry.S if these 29*024b246eSLinus Torvalds two slots are at the beginning of the struct. */ 30*024b246eSLinus Torvalds unsigned long hae_cache; 31*024b246eSLinus Torvalds unsigned long *hae_register; 32*024b246eSLinus Torvalds 33*024b246eSLinus Torvalds int nr_irqs; 34*024b246eSLinus Torvalds int rtc_port; 35*024b246eSLinus Torvalds unsigned int max_asn; 36*024b246eSLinus Torvalds unsigned long max_isa_dma_address; 37*024b246eSLinus Torvalds unsigned long irq_probe_mask; 38*024b246eSLinus Torvalds unsigned long iack_sc; 39*024b246eSLinus Torvalds unsigned long min_io_address; 40*024b246eSLinus Torvalds unsigned long min_mem_address; 41*024b246eSLinus Torvalds unsigned long pci_dac_offset; 42*024b246eSLinus Torvalds 43*024b246eSLinus Torvalds void (*mv_pci_tbi)(struct pci_controller *hose, 44*024b246eSLinus Torvalds dma_addr_t start, dma_addr_t end); 45*024b246eSLinus Torvalds 46*024b246eSLinus Torvalds unsigned int (*mv_ioread8)(void __iomem *); 47*024b246eSLinus Torvalds unsigned int (*mv_ioread16)(void __iomem *); 48*024b246eSLinus Torvalds unsigned int (*mv_ioread32)(void __iomem *); 49*024b246eSLinus Torvalds 50*024b246eSLinus Torvalds void (*mv_iowrite8)(u8, void __iomem *); 51*024b246eSLinus Torvalds void (*mv_iowrite16)(u16, void __iomem *); 52*024b246eSLinus Torvalds void (*mv_iowrite32)(u32, void __iomem *); 53*024b246eSLinus Torvalds 54*024b246eSLinus Torvalds u8 (*mv_readb)(const volatile void __iomem *); 55*024b246eSLinus Torvalds u16 (*mv_readw)(const volatile void __iomem *); 56*024b246eSLinus Torvalds u32 (*mv_readl)(const volatile void __iomem *); 57*024b246eSLinus Torvalds u64 (*mv_readq)(const volatile void __iomem *); 58*024b246eSLinus Torvalds 59*024b246eSLinus Torvalds void (*mv_writeb)(u8, volatile void __iomem *); 60*024b246eSLinus Torvalds void (*mv_writew)(u16, volatile void __iomem *); 61*024b246eSLinus Torvalds void (*mv_writel)(u32, volatile void __iomem *); 62*024b246eSLinus Torvalds void (*mv_writeq)(u64, volatile void __iomem *); 63*024b246eSLinus Torvalds 64*024b246eSLinus Torvalds void __iomem *(*mv_ioportmap)(unsigned long); 65*024b246eSLinus Torvalds void __iomem *(*mv_ioremap)(unsigned long, unsigned long); 66*024b246eSLinus Torvalds void (*mv_iounmap)(volatile void __iomem *); 67*024b246eSLinus Torvalds int (*mv_is_ioaddr)(unsigned long); 68*024b246eSLinus Torvalds int (*mv_is_mmio)(const volatile void __iomem *); 69*024b246eSLinus Torvalds 70*024b246eSLinus Torvalds void (*mv_switch_mm)(struct mm_struct *, struct mm_struct *, 71*024b246eSLinus Torvalds struct task_struct *); 72*024b246eSLinus Torvalds void (*mv_activate_mm)(struct mm_struct *, struct mm_struct *); 73*024b246eSLinus Torvalds 74*024b246eSLinus Torvalds void (*mv_flush_tlb_current)(struct mm_struct *); 75*024b246eSLinus Torvalds void (*mv_flush_tlb_current_page)(struct mm_struct * mm, 76*024b246eSLinus Torvalds struct vm_area_struct *vma, 77*024b246eSLinus Torvalds unsigned long addr); 78*024b246eSLinus Torvalds 79*024b246eSLinus Torvalds void (*update_irq_hw)(unsigned long, unsigned long, int); 80*024b246eSLinus Torvalds void (*ack_irq)(unsigned long); 81*024b246eSLinus Torvalds void (*device_interrupt)(unsigned long vector); 82*024b246eSLinus Torvalds void (*machine_check)(u64 vector, u64 la); 83*024b246eSLinus Torvalds 84*024b246eSLinus Torvalds void (*smp_callin)(void); 85*024b246eSLinus Torvalds void (*init_arch)(void); 86*024b246eSLinus Torvalds void (*init_irq)(void); 87*024b246eSLinus Torvalds void (*init_rtc)(void); 88*024b246eSLinus Torvalds void (*init_pci)(void); 89*024b246eSLinus Torvalds void (*kill_arch)(int); 90*024b246eSLinus Torvalds 91*024b246eSLinus Torvalds u8 (*pci_swizzle)(struct pci_dev *, u8 *); 92*024b246eSLinus Torvalds int (*pci_map_irq)(struct pci_dev *, u8, u8); 93*024b246eSLinus Torvalds struct pci_ops *pci_ops; 94*024b246eSLinus Torvalds 95*024b246eSLinus Torvalds struct _alpha_agp_info *(*agp_info)(void); 96*024b246eSLinus Torvalds 97*024b246eSLinus Torvalds const char *vector_name; 98*024b246eSLinus Torvalds 99*024b246eSLinus Torvalds /* NUMA information */ 100*024b246eSLinus Torvalds int (*pa_to_nid)(unsigned long); 101*024b246eSLinus Torvalds int (*cpuid_to_nid)(int); 102*024b246eSLinus Torvalds unsigned long (*node_mem_start)(int); 103*024b246eSLinus Torvalds unsigned long (*node_mem_size)(int); 104*024b246eSLinus Torvalds 105*024b246eSLinus Torvalds /* System specific parameters. */ 106*024b246eSLinus Torvalds union { 107*024b246eSLinus Torvalds struct { 108*024b246eSLinus Torvalds unsigned long gru_int_req_bits; 109*024b246eSLinus Torvalds } cia; 110*024b246eSLinus Torvalds 111*024b246eSLinus Torvalds struct { 112*024b246eSLinus Torvalds unsigned long gamma_bias; 113*024b246eSLinus Torvalds } t2; 114*024b246eSLinus Torvalds 115*024b246eSLinus Torvalds struct { 116*024b246eSLinus Torvalds unsigned int route_tab; 117*024b246eSLinus Torvalds } sio; 118*024b246eSLinus Torvalds } sys; 119*024b246eSLinus Torvalds }; 120*024b246eSLinus Torvalds 121*024b246eSLinus Torvalds extern struct alpha_machine_vector alpha_mv; 122*024b246eSLinus Torvalds 123*024b246eSLinus Torvalds #ifdef CONFIG_ALPHA_GENERIC 124*024b246eSLinus Torvalds extern int alpha_using_srm; 125*024b246eSLinus Torvalds #else 126*024b246eSLinus Torvalds #ifdef CONFIG_ALPHA_SRM 127*024b246eSLinus Torvalds #define alpha_using_srm 1 128*024b246eSLinus Torvalds #else 129*024b246eSLinus Torvalds #define alpha_using_srm 0 130*024b246eSLinus Torvalds #endif 131*024b246eSLinus Torvalds #endif /* GENERIC */ 132*024b246eSLinus Torvalds 133*024b246eSLinus Torvalds #endif 134*024b246eSLinus Torvalds #endif /* __ALPHA_MACHVEC_H */ 135