This source file includes following definitions.
- get_vdso_base
- get_vdso_data
- get_gic
1
2
3
4
5
6
7 #include <asm/sgidefs.h>
8
9 #ifndef __ASSEMBLY__
10
11 #include <asm/asm.h>
12 #include <asm/page.h>
13 #include <asm/vdso.h>
14
15 static inline unsigned long get_vdso_base(void)
16 {
17 unsigned long addr;
18
19
20
21
22
23 #ifdef CONFIG_CPU_MIPSR6
24
25
26
27
28
29
30 __asm__("lapc %0, _start \n"
31 : "=r" (addr) : :);
32 #else
33
34
35
36
37
38
39
40
41
42
43
44 __asm__(
45 " .set push \n"
46 " .set noreorder \n"
47 " bal 1f \n"
48 " nop \n"
49 " .word _start - . \n"
50 "1: lw %0, 0($31) \n"
51 " " STR(PTR_ADDU) " %0, $31, %0 \n"
52 " .set pop \n"
53 : "=r" (addr)
54 :
55 : "$31");
56 #endif
57
58 return addr;
59 }
60
61 static inline const struct vdso_data *get_vdso_data(void)
62 {
63 return (const struct vdso_data *)(get_vdso_base() - PAGE_SIZE);
64 }
65
66 #ifdef CONFIG_CLKSRC_MIPS_GIC
67
68 static inline void __iomem *get_gic(const struct vdso_data *data)
69 {
70 return (void __iomem *)data - PAGE_SIZE;
71 }
72
73 #endif
74
75 #endif