[PATCH] more SPIN_LOCK_UNLOCKED -> DEFINE_SPINLOCK conversions
[pandora-kernel.git] / include / asm-arm / domain.h
1 /*
2  *  linux/include/asm-arm/domain.h
3  *
4  *  Copyright (C) 1999 Russell King.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  */
10 #ifndef __ASM_PROC_DOMAIN_H
11 #define __ASM_PROC_DOMAIN_H
12
13 /*
14  * Domain numbers
15  *
16  *  DOMAIN_IO     - domain 2 includes all IO only
17  *  DOMAIN_USER   - domain 1 includes all user memory only
18  *  DOMAIN_KERNEL - domain 0 includes all kernel memory only
19  */
20 #define DOMAIN_KERNEL   0
21 #define DOMAIN_TABLE    0
22 #define DOMAIN_USER     1
23 #define DOMAIN_IO       2
24
25 /*
26  * Domain types
27  */
28 #define DOMAIN_NOACCESS 0
29 #define DOMAIN_CLIENT   1
30 #define DOMAIN_MANAGER  3
31
32 #define domain_val(dom,type)    ((type) << (2*(dom)))
33
34 #ifndef __ASSEMBLY__
35 #define set_domain(x)                                   \
36         do {                                            \
37         __asm__ __volatile__(                           \
38         "mcr    p15, 0, %0, c3, c0      @ set domain"   \
39           : : "r" (x));                                 \
40         } while (0)
41
42 #define modify_domain(dom,type)                                 \
43         do {                                                    \
44         struct thread_info *thread = current_thread_info();     \
45         unsigned int domain = thread->cpu_domain;               \
46         domain &= ~domain_val(dom, DOMAIN_MANAGER);             \
47         thread->cpu_domain = domain | domain_val(dom, type);    \
48         set_domain(thread->cpu_domain);                         \
49         } while (0)
50
51 #endif
52 #endif /* !__ASSEMBLY__ */