1
2
3
4
5
6
7
8
9#ifndef _S390_IO_H
10#define _S390_IO_H
11
12#include <linux/kernel.h>
13#include <asm/page.h>
14#include <asm/pci_io.h>
15
16
17
18
19
20static inline unsigned long virt_to_phys(volatile void * address)
21{
22 unsigned long real_address;
23 asm volatile(
24 " lra %0,0(%1)\n"
25 " jz 0f\n"
26 " la %0,0\n"
27 "0:"
28 : "=a" (real_address) : "a" (address) : "cc");
29 return real_address;
30}
31#define virt_to_phys virt_to_phys
32
33static inline void * phys_to_virt(unsigned long address)
34{
35 return (void *) address;
36}
37
38void *xlate_dev_mem_ptr(unsigned long phys);
39#define xlate_dev_mem_ptr xlate_dev_mem_ptr
40void unxlate_dev_mem_ptr(unsigned long phys, void *addr);
41
42
43
44
45#define xlate_dev_kmem_ptr(p) p
46
47#define IO_SPACE_LIMIT 0
48
49#ifdef CONFIG_PCI
50
51#define ioremap_nocache(addr, size) ioremap(addr, size)
52#define ioremap_wc ioremap_nocache
53
54static inline void __iomem *ioremap(unsigned long offset, unsigned long size)
55{
56 return (void __iomem *) offset;
57}
58
59static inline void iounmap(volatile void __iomem *addr)
60{
61}
62
63
64
65
66
67
68
69#define pci_iomap pci_iomap
70#define pci_iounmap pci_iounmap
71
72#define memcpy_fromio(dst, src, count) zpci_memcpy_fromio(dst, src, count)
73#define memcpy_toio(dst, src, count) zpci_memcpy_toio(dst, src, count)
74#define memset_io(dst, val, count) zpci_memset_io(dst, val, count)
75
76#define __raw_readb zpci_read_u8
77#define __raw_readw zpci_read_u16
78#define __raw_readl zpci_read_u32
79#define __raw_readq zpci_read_u64
80#define __raw_writeb zpci_write_u8
81#define __raw_writew zpci_write_u16
82#define __raw_writel zpci_write_u32
83#define __raw_writeq zpci_write_u64
84
85#define readb_relaxed readb
86#define readw_relaxed readw
87#define readl_relaxed readl
88#define readq_relaxed readq
89
90#endif
91
92#include <asm-generic/io.h>
93
94#endif
95