hc
2024-01-31 f9004dbfff8a3fbbd7e2a88c8a4327c7f2f8e5b2
kernel/include/linux/io-64-nonatomic-lo-hi.h
....@@ -55,4 +55,68 @@
5555 #define writeq_relaxed lo_hi_writeq_relaxed
5656 #endif
5757
58
+#ifndef ioread64_lo_hi
59
+#define ioread64_lo_hi ioread64_lo_hi
60
+static inline u64 ioread64_lo_hi(const void __iomem *addr)
61
+{
62
+ u32 low, high;
63
+
64
+ low = ioread32(addr);
65
+ high = ioread32(addr + sizeof(u32));
66
+
67
+ return low + ((u64)high << 32);
68
+}
69
+#endif
70
+
71
+#ifndef iowrite64_lo_hi
72
+#define iowrite64_lo_hi iowrite64_lo_hi
73
+static inline void iowrite64_lo_hi(u64 val, void __iomem *addr)
74
+{
75
+ iowrite32(val, addr);
76
+ iowrite32(val >> 32, addr + sizeof(u32));
77
+}
78
+#endif
79
+
80
+#ifndef ioread64be_lo_hi
81
+#define ioread64be_lo_hi ioread64be_lo_hi
82
+static inline u64 ioread64be_lo_hi(const void __iomem *addr)
83
+{
84
+ u32 low, high;
85
+
86
+ low = ioread32be(addr + sizeof(u32));
87
+ high = ioread32be(addr);
88
+
89
+ return low + ((u64)high << 32);
90
+}
91
+#endif
92
+
93
+#ifndef iowrite64be_lo_hi
94
+#define iowrite64be_lo_hi iowrite64be_lo_hi
95
+static inline void iowrite64be_lo_hi(u64 val, void __iomem *addr)
96
+{
97
+ iowrite32be(val, addr + sizeof(u32));
98
+ iowrite32be(val >> 32, addr);
99
+}
100
+#endif
101
+
102
+#ifndef ioread64
103
+#define ioread64_is_nonatomic
104
+#define ioread64 ioread64_lo_hi
105
+#endif
106
+
107
+#ifndef iowrite64
108
+#define iowrite64_is_nonatomic
109
+#define iowrite64 iowrite64_lo_hi
110
+#endif
111
+
112
+#ifndef ioread64be
113
+#define ioread64be_is_nonatomic
114
+#define ioread64be ioread64be_lo_hi
115
+#endif
116
+
117
+#ifndef iowrite64be
118
+#define iowrite64be_is_nonatomic
119
+#define iowrite64be iowrite64be_lo_hi
120
+#endif
121
+
58122 #endif /* _LINUX_IO_64_NONATOMIC_LO_HI_H_ */