nds32: VDSO support
This patch adds VDSO support. The VDSO code is currently used for sys_rt_sigreturn() and optimised gettimeofday() (using the SoC timer counter). Signed-off-by: Vincent Chen <vincentc@andestech.com> Signed-off-by: Greentime Hu <greentime@andestech.com> Acked-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
24
arch/nds32/include/asm/vdso.h
Normal file
24
arch/nds32/include/asm/vdso.h
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: GPL-2.0
|
||||
* Copyright (C) 2005-2017 Andes Technology Corporation
|
||||
*/
|
||||
|
||||
#ifndef __ASM_VDSO_H
|
||||
#define __ASM_VDSO_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#include <generated/vdso-offsets.h>
|
||||
|
||||
#define VDSO_SYMBOL(base, name) \
|
||||
({ \
|
||||
(unsigned long)(vdso_offset_##name + (unsigned long)(base)); \
|
||||
})
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __ASM_VDSO_H */
|
36
arch/nds32/include/asm/vdso_datapage.h
Normal file
36
arch/nds32/include/asm/vdso_datapage.h
Normal file
@@ -0,0 +1,36 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
// Copyright (C) 2012 ARM Limited
|
||||
// Copyright (C) 2005-2017 Andes Technology Corporation
|
||||
#ifndef __ASM_VDSO_DATAPAGE_H
|
||||
#define __ASM_VDSO_DATAPAGE_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
struct vdso_data {
|
||||
bool cycle_count_down; /* timer cyclye counter is decrease with time */
|
||||
u32 cycle_count_offset; /* offset of timer cycle counter register */
|
||||
u32 seq_count; /* sequence count - odd during updates */
|
||||
u32 xtime_coarse_sec; /* coarse time */
|
||||
u32 xtime_coarse_nsec;
|
||||
|
||||
u32 wtm_clock_sec; /* wall to monotonic offset */
|
||||
u32 wtm_clock_nsec;
|
||||
u32 xtime_clock_sec; /* CLOCK_REALTIME - seconds */
|
||||
u32 cs_mult; /* clocksource multiplier */
|
||||
u32 cs_shift; /* Cycle to nanosecond divisor (power of two) */
|
||||
|
||||
u64 cs_cycle_last; /* last cycle value */
|
||||
u64 cs_mask; /* clocksource mask */
|
||||
|
||||
u64 xtime_clock_nsec; /* CLOCK_REALTIME sub-ns base */
|
||||
u32 tz_minuteswest; /* timezone info for gettimeofday(2) */
|
||||
u32 tz_dsttime;
|
||||
};
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __ASM_VDSO_DATAPAGE_H */
|
14
arch/nds32/include/asm/vdso_timer_info.h
Normal file
14
arch/nds32/include/asm/vdso_timer_info.h
Normal file
@@ -0,0 +1,14 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
// Copyright (C) 2005-2017 Andes Technology Corporation
|
||||
|
||||
extern struct timer_info_t timer_info;
|
||||
#define EMPTY_VALUE ~(0UL)
|
||||
#define EMPTY_TIMER_MAPPING EMPTY_VALUE
|
||||
#define EMPTY_REG_OFFSET EMPTY_VALUE
|
||||
|
||||
struct timer_info_t
|
||||
{
|
||||
bool cycle_count_down;
|
||||
unsigned long mapping_base;
|
||||
unsigned long cycle_count_reg_offset;
|
||||
};
|
Reference in New Issue
Block a user