-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ARM: 8329/1: miscellaneous vdso infrastructure, preparation
Define the layout of the data structure shared between kernel and userspace. Track the vdso address in the mm_context; needed for communicating AT_SYSINFO_EHDR to the ELF loader. Add declarations for arm_install_vdso; implementation is in a following patch. Define AT_SYSINFO_EHDR, and, if CONFIG_VDSO=y, report the vdso shared object address via the ELF auxiliary vector. Note - this adds the AT_SYSINFO_EHDR in a new user-visible header asm/auxvec.h; this is consistent with other architectures. Signed-off-by: Nathan Lynch <nathan_lynch@mentor.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
- Loading branch information
Nathan Lynch
authored and
Russell King
committed
Mar 27, 2015
1 parent
c517d83
commit 1713ce7
Showing
8 changed files
with
113 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,5 @@ | ||
|
||
|
||
generic-y += auxvec.h | ||
generic-y += bitsperlong.h | ||
generic-y += cputime.h | ||
generic-y += current.h | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
#include <uapi/asm/auxvec.h> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
#ifndef __ASM_VDSO_H | ||
#define __ASM_VDSO_H | ||
|
||
#ifdef __KERNEL__ | ||
|
||
#ifndef __ASSEMBLY__ | ||
|
||
struct mm_struct; | ||
|
||
#ifdef CONFIG_VDSO | ||
|
||
void arm_install_vdso(struct mm_struct *mm, unsigned long addr); | ||
|
||
extern char vdso_start, vdso_end; | ||
|
||
extern unsigned int vdso_total_pages; | ||
|
||
#else /* CONFIG_VDSO */ | ||
|
||
static inline void arm_install_vdso(struct mm_struct *mm, unsigned long addr) | ||
{ | ||
} | ||
|
||
#define vdso_total_pages 0 | ||
|
||
#endif /* CONFIG_VDSO */ | ||
|
||
#endif /* __ASSEMBLY__ */ | ||
|
||
#endif /* __KERNEL__ */ | ||
|
||
#endif /* __ASM_VDSO_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
/* | ||
* Adapted from arm64 version. | ||
* | ||
* Copyright (C) 2012 ARM Limited | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
#ifndef __ASM_VDSO_DATAPAGE_H | ||
#define __ASM_VDSO_DATAPAGE_H | ||
|
||
#ifdef __KERNEL__ | ||
|
||
#ifndef __ASSEMBLY__ | ||
|
||
#include <asm/page.h> | ||
|
||
/* Try to be cache-friendly on systems that don't implement the | ||
* generic timer: fit the unconditionally updated fields in the first | ||
* 32 bytes. | ||
*/ | ||
struct vdso_data { | ||
u32 seq_count; /* sequence count - odd during updates */ | ||
u16 tk_is_cntvct; /* fall back to syscall if false */ | ||
u16 cs_shift; /* clocksource shift */ | ||
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 */ | ||
|
||
u64 cs_cycle_last; /* last cycle value */ | ||
u64 cs_mask; /* clocksource mask */ | ||
|
||
u64 xtime_clock_snsec; /* CLOCK_REALTIME sub-ns base */ | ||
u32 tz_minuteswest; /* timezone info for gettimeofday(2) */ | ||
u32 tz_dsttime; | ||
}; | ||
|
||
union vdso_data_store { | ||
struct vdso_data data; | ||
u8 page[PAGE_SIZE]; | ||
}; | ||
|
||
#endif /* !__ASSEMBLY__ */ | ||
|
||
#endif /* __KERNEL__ */ | ||
|
||
#endif /* __ASM_VDSO_DATAPAGE_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
#ifndef __ASM_AUXVEC_H | ||
#define __ASM_AUXVEC_H | ||
|
||
/* VDSO location */ | ||
#define AT_SYSINFO_EHDR 33 | ||
|
||
#endif |