.. | .. |
---|
142 | 142 | return __get_datapage(); |
---|
143 | 143 | } |
---|
144 | 144 | |
---|
| 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 | + |
---|
145 | 205 | #endif /* !__ASSEMBLY__ */ |
---|
146 | 206 | |
---|
147 | 207 | #endif /* __ASM_VDSO_GETTIMEOFDAY_H */ |
---|