vdso.h (762f99f4f3cb41a775b5157dd761217beba65873) vdso.h (2f9060b1db4aa2c21c248e34476d8936a2b69cf6)
1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/*
3 * Copyright (C) 2015 Imagination Technologies
4 * Author: Alex Smith <alex.smith@imgtec.com>
5 */
6
7#include <asm/sgidefs.h>
8

--- 18 unchanged lines hidden (view full) ---

27 * We can't use addiupc because there is no label-label
28 * support for the addiupc reloc
29 */
30 __asm__("lapc %0, _start \n"
31 : "=r" (addr) : :);
32#else
33 /*
34 * Get the base load address of the VDSO. We have to avoid generating
1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/*
3 * Copyright (C) 2015 Imagination Technologies
4 * Author: Alex Smith <alex.smith@imgtec.com>
5 */
6
7#include <asm/sgidefs.h>
8

--- 18 unchanged lines hidden (view full) ---

27 * We can't use addiupc because there is no label-label
28 * support for the addiupc reloc
29 */
30 __asm__("lapc %0, _start \n"
31 : "=r" (addr) : :);
32#else
33 /*
34 * Get the base load address of the VDSO. We have to avoid generating
35 * relocations and references to the GOT because ld.so does not peform
35 * relocations and references to the GOT because ld.so does not perform
36 * relocations on the VDSO. We use the current offset from the VDSO base
37 * and perform a PC-relative branch which gives the absolute address in
38 * ra, and take the difference. The assembler chokes on
39 * "li %0, _start - .", so embed the offset as a word and branch over
40 * it.
41 *
42 */
43

--- 32 unchanged lines hidden ---
36 * relocations on the VDSO. We use the current offset from the VDSO base
37 * and perform a PC-relative branch which gives the absolute address in
38 * ra, and take the difference. The assembler chokes on
39 * "li %0, _start - .", so embed the offset as a word and branch over
40 * it.
41 *
42 */
43

--- 32 unchanged lines hidden ---