Context |
Check |
Description |
snowpatch_ozlabs/apply_patch |
warning
|
Failed to apply on branch powerpc/merge (20862247a368dbb75d6e97d82345999adaacf3cc)
|
snowpatch_ozlabs/apply_patch |
warning
|
Failed to apply on branch powerpc/next (3a9d970f17e05a7b26f782beb8f7f2118d1741ea)
|
snowpatch_ozlabs/apply_patch |
warning
|
Failed to apply on branch linus/master (0c99ee44b8921b872089a7374c733310d995fd92)
|
snowpatch_ozlabs/apply_patch |
warning
|
Failed to apply on branch powerpc/fixes (6da3eced8c5f3b03340b0c395bacd552c4d52411)
|
snowpatch_ozlabs/apply_patch |
warning
|
Failed to apply on branch linux-next (2747d5fdab78f43210256cd52fb2718e0b3cce74)
|
snowpatch_ozlabs/apply_patch |
fail
|
Failed to apply to any branch
|
@@ -105,6 +105,17 @@ struct vdso_arch_data {
extern struct vdso_arch_data *vdso_data;
+#else /* __ASSEMBLY__ */
+
+.macro get_datapage ptr, offset=0
+ bcl 20, 31, .+4
+ mflr \ptr
+#if CONFIG_PPC_PAGE_SHIFT > 14
+ addis \ptr, \ptr, (_vdso_datapage + \offset - (.-4))@ha
+#endif
+ addi \ptr, \ptr, (_vdso_datapage + \offset - (.-4))@l
+.endm
+
#endif /* __ASSEMBLY__ */
#endif /* __KERNEL__ */
__get_datapage() is only a few instructions to retrieve the address of the page where the kernel stores data to the VDSO. By inlining this function into its users, a bl/blr pair and a mflr/mtlr pair is avoided, plus a few reg moves. The improvement is noticeable (about 55 nsec/call on an 8xx) With current __get_datapage() function: gettimeofday: vdso: 731 nsec/call clock-gettime-realtime-coarse: vdso: 668 nsec/call clock-gettime-monotonic-coarse: vdso: 745 nsec/call Using the __get_datapage macro provided by this patch: gettimeofday: vdso: 677 nsec/call clock-gettime-realtime-coarse: vdso: 613 nsec/call clock-gettime-monotonic-coarse: vdso: 690 nsec/call Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> --- arch/powerpc/include/asm/vdso_datapage.h | 11 +++++++++++ 1 file changed, 11 insertions(+)