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 --- |