linux/arch/riscv/include/asm/vdso.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Copyright (C) 2012 ARM Limited
   4 * Copyright (C) 2014 Regents of the University of California
   5 * Copyright (C) 2017 SiFive
   6 */
   7
   8#ifndef _ASM_RISCV_VDSO_H
   9#define _ASM_RISCV_VDSO_H
  10
  11#include <linux/types.h>
  12
  13#ifndef GENERIC_TIME_VSYSCALL
  14struct vdso_data {
  15};
  16#endif
  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
  32asmlinkage long sys_riscv_flush_icache(uintptr_t, uintptr_t, uintptr_t);
  33
  34#endif /* _ASM_RISCV_VDSO_H */
  35