@@ -82,8 +82,9 @@ struct vdso_arch_data {
82
82
__u32 syscall_map [SYSCALL_MAP_SIZE ]; /* Map of syscalls */
83
83
__u32 compat_syscall_map [SYSCALL_MAP_SIZE ]; /* Map of compat syscalls */
84
84
85
- struct vdso_data data [CS_BASES ];
86
85
struct vdso_rng_data rng_data ;
86
+
87
+ struct vdso_data data [CS_BASES ] __aligned (1 << CONFIG_PAGE_SHIFT );
87
88
};
88
89
89
90
#else /* CONFIG_PPC64 */
@@ -95,8 +96,9 @@ struct vdso_arch_data {
95
96
__u64 tb_ticks_per_sec ; /* Timebase tics / sec 0x38 */
96
97
__u32 syscall_map [SYSCALL_MAP_SIZE ]; /* Map of syscalls */
97
98
__u32 compat_syscall_map [0 ]; /* No compat syscalls on PPC32 */
98
- struct vdso_data data [CS_BASES ];
99
99
struct vdso_rng_data rng_data ;
100
+
101
+ struct vdso_data data [CS_BASES ] __aligned (1 << CONFIG_PAGE_SHIFT );
100
102
};
101
103
102
104
#endif /* CONFIG_PPC64 */
@@ -105,29 +107,17 @@ extern struct vdso_arch_data *vdso_data;
105
107
106
108
#else /* __ASSEMBLY__ */
107
109
108
- .macro get_datapage ptr
110
+ .macro get_datapage ptr offset = 0
109
111
bcl 20 , 31 , .+4
110
112
999 :
111
113
mflr \ptr
112
- addis \ptr , \ptr , (_vdso_datapage - 999b )@ha
113
- addi \ptr , \ptr , (_vdso_datapage - 999b )@l
114
+ addis \ptr , \ptr , (_vdso_datapage - 999b + \ offset )@ha
115
+ addi \ptr , \ptr , (_vdso_datapage - 999b + \ offset )@l
114
116
.endm
115
117
116
118
#include <asm/asm-offsets.h>
117
119
#include <asm/page.h>
118
120
119
- .macro get_realdatapage ptr scratch
120
- get_datapage \ptr
121
- #ifdef CONFIG_TIME_NS
122
- lwz \scratch , VDSO_CLOCKMODE_OFFSET (\ptr )
123
- xoris \scratch , \scratch , VDSO_CLOCKMODE_TIMENS @h
124
- xori \scratch , \scratch , VDSO_CLOCKMODE_TIMENS @l
125
- cntlzw \scratch , \scratch
126
- rlwinm \scratch , \scratch , PAGE_SHIFT - 5 , 1 << PAGE_SHIFT
127
- add \ptr , \ptr , \scratch
128
- #endif
129
- .endm
130
-
131
121
#endif /* __ASSEMBLY__ */
132
122
133
123
#endif /* __KERNEL__ */
0 commit comments