Following arm64-support to development branch

This includes the following fixes:
* fix build of arch/arm64/kernel/vdso

Change-Id: I73b05034d29f7f8731ac17f9736edbba4fb2c639
This commit is contained in:
Takehiro Shiratori
2019-01-30 16:27:03 +09:00
committed by Dominique Martinet
parent e52d748744
commit d4d78e9c61
66 changed files with 3110 additions and 1209 deletions

View File

@ -0,0 +1,49 @@
/* archdep.c COPYRIGHT FUJITSU LIMITED 2017 */
#include <asm/ptrace.h>
/* @ref.impl arch/arm64/include/asm/atomic_ll_sc.h::__ll_sc___cmpxchg_case_mb_8() */
unsigned long compare_and_swap(unsigned long *addr,
unsigned long old, unsigned long new)
{
unsigned long tmp, oldval;
asm volatile(
" prfm pstl1strm, %2\n"
"1: ldxr %1, %2\n"
" eor %0, %1, %3\n"
" cbnz %0, 2f\n"
" stlxr %w0, %4, %2\n"
" cbnz %w0, 1b\n"
" dmb ish\n"
" mov %1, %3\n"
"2:"
: "=&r"(tmp), "=&r"(oldval), "+Q"(*addr)
: "Lr"(old), "r"(new)
: "memory");
return oldval;
}
/* @ref.impl arch/arm64/include/asm/atomic_ll_sc.h::__ll_sc___cmpxchg_case_mb_4() */
unsigned int compare_and_swap_int(unsigned int *addr,
unsigned int old, unsigned int new)
{
unsigned long tmp, oldval;
asm volatile(
" prfm pstl1strm, %2\n"
"1: ldxr %w1, %2\n"
" eor %w0, %w1, %w3\n"
" cbnz %w0, 2f\n"
" stlxr %w0, %w4, %2\n"
" cbnz %w0, 1b\n"
" dmb ish\n"
" mov %w1, %w3\n"
"2:"
: "=&r"(tmp), "=&r"(oldval), "+Q"(*addr)
: "Lr"(old), "r"(new)
: "memory");
return oldval;
}