|
@@ -1,9 +1,8 @@
|
|
|
-/* $Id: uaccess.h,v 1.11 2003/10/13 07:21:20 lethal Exp $
|
|
|
- *
|
|
|
+/*
|
|
|
* User space memory access functions
|
|
|
*
|
|
|
* Copyright (C) 1999, 2002 Niibe Yutaka
|
|
|
- * Copyright (C) 2003 Paul Mundt
|
|
|
+ * Copyright (C) 2003 - 2008 Paul Mundt
|
|
|
*
|
|
|
* Based on:
|
|
|
* MIPS implementation version 1.15 by
|
|
@@ -15,40 +14,16 @@
|
|
|
|
|
|
#include <linux/errno.h>
|
|
|
#include <linux/sched.h>
|
|
|
+#include <asm/segment.h>
|
|
|
|
|
|
#define VERIFY_READ 0
|
|
|
#define VERIFY_WRITE 1
|
|
|
|
|
|
-/*
|
|
|
- * The fs value determines whether argument validity checking should be
|
|
|
- * performed or not. If get_fs() == USER_DS, checking is performed, with
|
|
|
- * get_fs() == KERNEL_DS, checking is bypassed.
|
|
|
- *
|
|
|
- * For historical reasons (Data Segment Register?), these macros are misnamed.
|
|
|
- */
|
|
|
-
|
|
|
-#define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
|
|
|
-
|
|
|
-#define KERNEL_DS MAKE_MM_SEG(0xFFFFFFFFUL)
|
|
|
-#define USER_DS MAKE_MM_SEG(PAGE_OFFSET)
|
|
|
-
|
|
|
-#define segment_eq(a,b) ((a).seg == (b).seg)
|
|
|
-
|
|
|
-#define get_ds() (KERNEL_DS)
|
|
|
|
|
|
#if !defined(CONFIG_MMU)
|
|
|
/* NOMMU is always true */
|
|
|
#define __addr_ok(addr) (1)
|
|
|
|
|
|
-static inline mm_segment_t get_fs(void)
|
|
|
-{
|
|
|
- return USER_DS;
|
|
|
-}
|
|
|
-
|
|
|
-static inline void set_fs(mm_segment_t s)
|
|
|
-{
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* __access_ok: Check if address with size is OK or not.
|
|
|
*
|
|
@@ -64,8 +39,6 @@ static inline int __access_ok(unsigned long addr, unsigned long size)
|
|
|
#define __addr_ok(addr) \
|
|
|
((unsigned long)(addr) < (current_thread_info()->addr_limit.seg))
|
|
|
|
|
|
-#define get_fs() (current_thread_info()->addr_limit)
|
|
|
-#define set_fs(x) (current_thread_info()->addr_limit = (x))
|
|
|
|
|
|
/*
|
|
|
* __access_ok: Check if address with size is OK or not.
|