diff options
| -rw-r--r-- | arch/riscv/kernel/vdso/Makefile | 6 | ||||
| -rw-r--r-- | arch/riscv/kernel/vdso/clock_getres.S | 26 | ||||
| -rw-r--r-- | arch/riscv/kernel/vdso/clock_gettime.S | 26 | ||||
| -rw-r--r-- | arch/riscv/kernel/vdso/getcpu.S | 26 | ||||
| -rw-r--r-- | arch/riscv/kernel/vdso/gettimeofday.S | 26 | ||||
| -rw-r--r-- | arch/riscv/kernel/vdso/vdso.lds.S | 4 |
6 files changed, 113 insertions, 1 deletions
diff --git a/arch/riscv/kernel/vdso/Makefile b/arch/riscv/kernel/vdso/Makefile index 523d0a8ac8db..2dcc4f3070bc 100644 --- a/arch/riscv/kernel/vdso/Makefile +++ b/arch/riscv/kernel/vdso/Makefile | |||
| @@ -1,7 +1,11 @@ | |||
| 1 | # Copied from arch/tile/kernel/vdso/Makefile | 1 | # Copied from arch/tile/kernel/vdso/Makefile |
| 2 | 2 | ||
| 3 | # Symbols present in the vdso | 3 | # Symbols present in the vdso |
| 4 | vdso-syms = rt_sigreturn | 4 | vdso-syms = rt_sigreturn |
| 5 | vdso-syms += gettimeofday | ||
| 6 | vdso-syms += clock_gettime | ||
| 7 | vdso-syms += clock_getres | ||
| 8 | vdso-syms += getcpu | ||
| 5 | 9 | ||
| 6 | # Files to link into the vdso | 10 | # Files to link into the vdso |
| 7 | obj-vdso = $(patsubst %, %.o, $(vdso-syms)) | 11 | obj-vdso = $(patsubst %, %.o, $(vdso-syms)) |
diff --git a/arch/riscv/kernel/vdso/clock_getres.S b/arch/riscv/kernel/vdso/clock_getres.S new file mode 100644 index 000000000000..edf7e2339648 --- /dev/null +++ b/arch/riscv/kernel/vdso/clock_getres.S | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2017 SiFive | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or | ||
| 5 | * modify it under the terms of the GNU General Public License | ||
| 6 | * as published by the Free Software Foundation, version 2. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/linkage.h> | ||
| 15 | #include <asm/unistd.h> | ||
| 16 | |||
| 17 | .text | ||
| 18 | /* int __vdso_clock_getres(clockid_t clock_id, struct timespec *res); */ | ||
| 19 | ENTRY(__vdso_clock_getres) | ||
| 20 | .cfi_startproc | ||
| 21 | /* For now, just do the syscall. */ | ||
| 22 | li a7, __NR_clock_getres | ||
| 23 | ecall | ||
| 24 | ret | ||
| 25 | .cfi_endproc | ||
| 26 | ENDPROC(__vdso_clock_getres) | ||
diff --git a/arch/riscv/kernel/vdso/clock_gettime.S b/arch/riscv/kernel/vdso/clock_gettime.S new file mode 100644 index 000000000000..aac65676c6d5 --- /dev/null +++ b/arch/riscv/kernel/vdso/clock_gettime.S | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2017 SiFive | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or | ||
| 5 | * modify it under the terms of the GNU General Public License | ||
| 6 | * as published by the Free Software Foundation, version 2. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/linkage.h> | ||
| 15 | #include <asm/unistd.h> | ||
| 16 | |||
| 17 | .text | ||
| 18 | /* int __vdso_clock_gettime(clockid_t clock_id, struct timespec *tp); */ | ||
| 19 | ENTRY(__vdso_clock_gettime) | ||
| 20 | .cfi_startproc | ||
| 21 | /* For now, just do the syscall. */ | ||
| 22 | li a7, __NR_clock_gettime | ||
| 23 | ecall | ||
| 24 | ret | ||
| 25 | .cfi_endproc | ||
| 26 | ENDPROC(__vdso_clock_gettime) | ||
diff --git a/arch/riscv/kernel/vdso/getcpu.S b/arch/riscv/kernel/vdso/getcpu.S new file mode 100644 index 000000000000..cc7e98924484 --- /dev/null +++ b/arch/riscv/kernel/vdso/getcpu.S | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2017 SiFive | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or | ||
| 5 | * modify it under the terms of the GNU General Public License | ||
| 6 | * as published by the Free Software Foundation, version 2. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/linkage.h> | ||
| 15 | #include <asm/unistd.h> | ||
| 16 | |||
| 17 | .text | ||
| 18 | /* int __vdso_getcpu(unsigned *cpu, unsigned *node, void *unused); */ | ||
| 19 | ENTRY(__vdso_getcpu) | ||
| 20 | .cfi_startproc | ||
| 21 | /* For now, just do the syscall. */ | ||
| 22 | li a7, __NR_getcpu | ||
| 23 | ecall | ||
| 24 | ret | ||
| 25 | .cfi_endproc | ||
| 26 | ENDPROC(__vdso_getcpu) | ||
diff --git a/arch/riscv/kernel/vdso/gettimeofday.S b/arch/riscv/kernel/vdso/gettimeofday.S new file mode 100644 index 000000000000..da85d33e8990 --- /dev/null +++ b/arch/riscv/kernel/vdso/gettimeofday.S | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2017 SiFive | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or | ||
| 5 | * modify it under the terms of the GNU General Public License | ||
| 6 | * as published by the Free Software Foundation, version 2. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/linkage.h> | ||
| 15 | #include <asm/unistd.h> | ||
| 16 | |||
| 17 | .text | ||
| 18 | /* int __vdso_gettimeofday(struct timeval *tv, struct timezone *tz); */ | ||
| 19 | ENTRY(__vdso_gettimeofday) | ||
| 20 | .cfi_startproc | ||
| 21 | /* For now, just do the syscall. */ | ||
| 22 | li a7, __NR_gettimeofday | ||
| 23 | ecall | ||
| 24 | ret | ||
| 25 | .cfi_endproc | ||
| 26 | ENDPROC(__vdso_gettimeofday) | ||
diff --git a/arch/riscv/kernel/vdso/vdso.lds.S b/arch/riscv/kernel/vdso/vdso.lds.S index 3ac08eebd11d..c7543c6a00f9 100644 --- a/arch/riscv/kernel/vdso/vdso.lds.S +++ b/arch/riscv/kernel/vdso/vdso.lds.S | |||
| @@ -70,6 +70,10 @@ VERSION | |||
| 70 | LINUX_4.15 { | 70 | LINUX_4.15 { |
| 71 | global: | 71 | global: |
| 72 | __vdso_rt_sigreturn; | 72 | __vdso_rt_sigreturn; |
| 73 | __vdso_gettimeofday; | ||
| 74 | __vdso_clock_gettime; | ||
| 75 | __vdso_clock_getres; | ||
| 76 | __vdso_getcpu; | ||
| 73 | local: *; | 77 | local: *; |
| 74 | }; | 78 | }; |
| 75 | } | 79 | } |
