microblaze_mmu_v2: Update process creation for MMU
[linux-2.6/mini2440.git] / arch / microblaze / include / asm / segment.h
blob0e7102c3fb117e2f6ebdef2bad277e5ec2c27eec
1 /*
2 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2008-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
11 #ifndef _ASM_MICROBLAZE_SEGMENT_H
12 #define _ASM_MICROBLAZE_SEGMENT_H
14 # ifndef __ASSEMBLY__
16 typedef struct {
17 unsigned long seg;
18 } mm_segment_t;
21 * On Microblaze the fs value is actually the top of the corresponding
22 * address space.
24 * The fs value determines whether argument validity checking should be
25 * performed or not. If get_fs() == USER_DS, checking is performed, with
26 * get_fs() == KERNEL_DS, checking is bypassed.
28 * For historical reasons, these macros are grossly misnamed.
30 * For non-MMU arch like Microblaze, KERNEL_DS and USER_DS is equal.
32 # define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
34 # ifndef CONFIG_MMU
35 # define KERNEL_DS MAKE_MM_SEG(0)
36 # define USER_DS KERNEL_DS
37 # else
38 # define KERNEL_DS MAKE_MM_SEG(0xFFFFFFFF)
39 # define USER_DS MAKE_MM_SEG(TASK_SIZE - 1)
40 # endif
42 # define get_ds() (KERNEL_DS)
43 # define get_fs() (current_thread_info()->addr_limit)
44 # define set_fs(val) (current_thread_info()->addr_limit = (val))
46 # define segment_eq(a, b) ((a).seg == (b).seg)
48 # endif /* __ASSEMBLY__ */
49 #endif /* _ASM_MICROBLAZE_SEGMENT_H */