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