]>
Commit | Line | Data |
---|---|---|
caab277b | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
e2c0cdfb PD |
2 | /* |
3 | * Copyright (C) 2012 ARM Limited | |
4 | * Copyright (C) 2014 Regents of the University of California | |
5 | * Copyright (C) 2017 SiFive | |
e2c0cdfb PD |
6 | */ |
7 | ||
8 | #ifndef _ASM_RISCV_VDSO_H | |
9 | #define _ASM_RISCV_VDSO_H | |
10 | ||
11 | #include <linux/types.h> | |
12 | ||
0aa2ec8a | 13 | #ifndef CONFIG_GENERIC_TIME_VSYSCALL |
e2c0cdfb PD |
14 | struct vdso_data { |
15 | }; | |
ad5d1122 | 16 | #endif |
e2c0cdfb PD |
17 | |
18 | /* | |
19 | * The VDSO symbols are mapped into Linux so we can just use regular symbol | |
20 | * addressing to get their offsets in userspace. The symbols are mapped at an | |
21 | * offset of 0, but since the linker must support setting weak undefined | |
22 | * symbols to the absolute address 0 it also happens to support other low | |
23 | * addresses even when the code model suggests those low addresses would not | |
24 | * otherwise be availiable. | |
25 | */ | |
26 | #define VDSO_SYMBOL(base, name) \ | |
27 | ({ \ | |
28 | extern const char __vdso_##name[]; \ | |
29 | (void __user *)((unsigned long)(base) + __vdso_##name); \ | |
30 | }) | |
31 | ||
921ebd8f | 32 | asmlinkage long sys_riscv_flush_icache(uintptr_t, uintptr_t, uintptr_t); |
921ebd8f | 33 | |
e2c0cdfb | 34 | #endif /* _ASM_RISCV_VDSO_H */ |