Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / u-boot / arch / arm / include / asm / proc-armv / domain.h
diff --git a/qemu/roms/u-boot/arch/arm/include/asm/proc-armv/domain.h b/qemu/roms/u-boot/arch/arm/include/asm/proc-armv/domain.h
new file mode 100644 (file)
index 0000000..aadc831
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ *  linux/include/asm-arm/proc-armv/domain.h
+ *
+ *  Copyright (C) 1999 Russell King.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#ifndef __ASM_PROC_DOMAIN_H
+#define __ASM_PROC_DOMAIN_H
+
+/*
+ * Domain numbers
+ *
+ *  DOMAIN_IO     - domain 2 includes all IO only
+ *  DOMAIN_KERNEL - domain 1 includes all kernel memory only
+ *  DOMAIN_USER   - domain 0 includes all user memory only
+ */
+#define DOMAIN_USER    0
+#define DOMAIN_KERNEL  1
+#define DOMAIN_TABLE   1
+#define DOMAIN_IO      2
+
+/*
+ * Domain types
+ */
+#define DOMAIN_NOACCESS        0
+#define DOMAIN_CLIENT  1
+#define DOMAIN_MANAGER 3
+
+#define domain_val(dom,type)   ((type) << 2*(dom))
+
+#define set_domain(x)                                  \
+       do {                                            \
+       __asm__ __volatile__(                           \
+       "mcr    p15, 0, %0, c3, c0      @ set domain"   \
+         : : "r" (x));                                 \
+       } while (0)
+
+#define modify_domain(dom,type)                                \
+       do {                                            \
+       unsigned int domain = current->thread.domain;   \
+       domain &= ~domain_val(dom, DOMAIN_MANAGER);     \
+       domain |= domain_val(dom, type);                \
+       current->thread.domain = domain;                \
+       set_domain(current->thread.domain);             \
+       } while (0)
+
+#endif