hc
2024-11-01 2f529f9b558ca1c1bd74be7437a84e4711743404
kernel/arch/arm/include/asm/vdso/gettimeofday.h
....@@ -142,6 +142,66 @@
142142 return __get_datapage();
143143 }
144144
145
+#ifdef CONFIG_GENERIC_CLOCKSOURCE_VDSO
146
+
147
+extern struct vdso_priv *__get_privpage(void);
148
+
149
+static __always_inline struct vdso_priv *__arch_get_vdso_priv(void)
150
+{
151
+ return __get_privpage();
152
+}
153
+
154
+static __always_inline long clock_open_device(const char *path, int mode)
155
+{
156
+ register u32 r0 asm("r0") = (u32)path;
157
+ register u32 r1 asm("r1") = (u32)mode;
158
+ register long ret asm ("r0");
159
+ register long nr asm("r7") = __NR_open;
160
+
161
+ asm volatile(
162
+ " swi #0\n"
163
+ : "=r" (ret)
164
+ : "r"(r0), "r"(r1), "r"(nr)
165
+ : "memory");
166
+
167
+ return ret;
168
+}
169
+
170
+static __always_inline
171
+long clock_ioctl_device(int fd, unsigned int cmd, long arg)
172
+{
173
+ register u32 r0 asm("r0") = (u32)fd;
174
+ register u32 r1 asm("r1") = (u32)cmd;
175
+ register u32 r2 asm("r2") = (u32)arg;
176
+ register long ret asm ("r0");
177
+ register long nr asm("r7") = __NR_ioctl;
178
+
179
+ asm volatile(
180
+ " swi #0\n"
181
+ : "=r" (ret)
182
+ : "r"(r0), "r"(r1), "r"(r2), "r"(nr)
183
+ : "memory");
184
+
185
+ return ret;
186
+}
187
+
188
+static __always_inline long clock_close_device(int fd)
189
+{
190
+ register u32 r0 asm("r0") = (u32)fd;
191
+ register long ret asm ("r0");
192
+ register long nr asm("r7") = __NR_close;
193
+
194
+ asm volatile(
195
+ " swi #0\n"
196
+ : "=r" (ret)
197
+ : "r"(r0), "r"(nr)
198
+ : "memory");
199
+
200
+ return ret;
201
+}
202
+
203
+#endif /* CONFIG_GENERIC_CLOCKSOURCE_VDSO */
204
+
145205 #endif /* !__ASSEMBLY__ */
146206
147207 #endif /* __ASM_VDSO_GETTIMEOFDAY_H */