aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/pvr/pvr_uaccess.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/pvr/pvr_uaccess.h')
-rw-r--r--drivers/gpu/pvr/pvr_uaccess.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/drivers/gpu/pvr/pvr_uaccess.h b/drivers/gpu/pvr/pvr_uaccess.h
new file mode 100644
index 00000000000..04fdcc2211a
--- /dev/null
+++ b/drivers/gpu/pvr/pvr_uaccess.h
@@ -0,0 +1,65 @@
1/**********************************************************************
2 *
3 * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU General Public License,
7 * version 2, as published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope it will be useful but, except
10 * as otherwise stated in writing, without any warranty; without even the
11 * implied warranty of merchantability or fitness for a particular purpose.
12 * See the GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * The full GNU General Public License is included in this distribution in
19 * the file called "COPYING".
20 *
21 * Contact Information:
22 * Imagination Technologies Ltd. <gpl-support@imgtec.com>
23 * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK
24 *
25 ******************************************************************************/
26
27#ifndef __PVR_UACCESS_H__
28#define __PVR_UACCESS_H__
29
30#ifndef AUTOCONF_INCLUDED
31 #include <linux/config.h>
32#endif
33
34#include <linux/version.h>
35#include <asm/uaccess.h>
36
37static inline unsigned long pvr_copy_to_user(void __user *pvTo, const void *pvFrom, unsigned long ulBytes)
38{
39#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
40 if (access_ok(VERIFY_WRITE, pvTo, ulBytes))
41 {
42 return __copy_to_user(pvTo, pvFrom, ulBytes);
43 }
44 return ulBytes;
45#else
46 return copy_to_user(pvTo, pvFrom, ulBytes);
47#endif
48}
49
50static inline unsigned long pvr_copy_from_user(void *pvTo, const void __user *pvFrom, unsigned long ulBytes)
51{
52#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
53
54 if (access_ok(VERIFY_READ, pvFrom, ulBytes))
55 {
56 return __copy_from_user(pvTo, pvFrom, ulBytes);
57 }
58 return ulBytes;
59#else
60 return copy_from_user(pvTo, pvFrom, ulBytes);
61#endif
62}
63
64#endif
65