Merge branch 'overlayfs-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszer...
[deliverable/linux.git] / arch / metag / include / asm / user_gateway.h
CommitLineData
26025bbf
JH
1/*
2 * Copyright (C) 2010 Imagination Technologies
3 */
4
5#ifndef __ASM_METAG_USER_GATEWAY_H
6#define __ASM_METAG_USER_GATEWAY_H
7
8#include <asm/page.h>
9
10/* Page of kernel code accessible to userspace. */
11#define USER_GATEWAY_PAGE 0x6ffff000
12/* Offset of TLS pointer array in gateway page. */
13#define USER_GATEWAY_TLS 0x100
14
15#ifndef __ASSEMBLY__
16
17extern char __user_gateway_start;
18extern char __user_gateway_end;
19
20/* Kernel mapping of the gateway page. */
21extern void *gateway_page;
22
23static inline void set_gateway_tls(void __user *tls_ptr)
24{
25 void **gateway_tls = (void **)(gateway_page + USER_GATEWAY_TLS +
26 hard_processor_id() * 4);
27
28 *gateway_tls = (__force void *)tls_ptr;
29#ifdef CONFIG_METAG_META12
30 /* Avoid cache aliases on virtually tagged cache. */
31 __builtin_dcache_flush((void *)USER_GATEWAY_PAGE + USER_GATEWAY_TLS +
32 hard_processor_id() * sizeof(void *));
33#endif
34}
35
36extern int __kuser_get_tls(void);
37extern char *__kuser_get_tls_end[];
38
39extern int __kuser_cmpxchg(int, int, unsigned long *);
40extern char *__kuser_cmpxchg_end[];
41
42#endif
43
44#endif
This page took 0.198608 seconds and 5 git commands to generate.