summaryrefslogtreecommitdiffstats
path: root/arch/arm/include/asm/fixmap.h
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2009-03-24 22:47:45 +0000
committerRussell King <rmk+kernel@arm.linux.org.uk>2009-03-24 22:47:45 +0000
commitfbf2b1f9cfdb4e4b5d042839142ed19ff5d46679 (patch)
tree3a17c02aa0cf9bdbed9aa479739974aa2416ecac /arch/arm/include/asm/fixmap.h
parent9a38e989b8ce04923f919fc2a8a24eb07fb484e2 (diff)
parent053a96ca11a9785a7e63fc89eed4514a6446ec58 (diff)
downloadtalos-op-linux-fbf2b1f9cfdb4e4b5d042839142ed19ff5d46679.tar.gz
talos-op-linux-fbf2b1f9cfdb4e4b5d042839142ed19ff5d46679.zip
Merge branch 'highmem' into devel
Diffstat (limited to 'arch/arm/include/asm/fixmap.h')
-rw-r--r--arch/arm/include/asm/fixmap.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/arch/arm/include/asm/fixmap.h b/arch/arm/include/asm/fixmap.h
new file mode 100644
index 000000000000..bbae919bceb4
--- /dev/null
+++ b/arch/arm/include/asm/fixmap.h
@@ -0,0 +1,41 @@
+#ifndef _ASM_FIXMAP_H
+#define _ASM_FIXMAP_H
+
+/*
+ * Nothing too fancy for now.
+ *
+ * On ARM we already have well known fixed virtual addresses imposed by
+ * the architecture such as the vector page which is located at 0xffff0000,
+ * therefore a second level page table is already allocated covering
+ * 0xfff00000 upwards.
+ *
+ * The cache flushing code in proc-xscale.S uses the virtual area between
+ * 0xfffe0000 and 0xfffeffff.
+ */
+
+#define FIXADDR_START 0xfff00000UL
+#define FIXADDR_TOP 0xfffe0000UL
+#define FIXADDR_SIZE (FIXADDR_TOP - FIXADDR_START)
+
+#define FIX_KMAP_BEGIN 0
+#define FIX_KMAP_END (FIXADDR_SIZE >> PAGE_SHIFT)
+
+#define __fix_to_virt(x) (FIXADDR_START + ((x) << PAGE_SHIFT))
+#define __virt_to_fix(x) (((x) - FIXADDR_START) >> PAGE_SHIFT)
+
+extern void __this_fixmap_does_not_exist(void);
+
+static inline unsigned long fix_to_virt(const unsigned int idx)
+{
+ if (idx >= FIX_KMAP_END)
+ __this_fixmap_does_not_exist();
+ return __fix_to_virt(idx);
+}
+
+static inline unsigned int virt_to_fix(const unsigned long vaddr)
+{
+ BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
+ return __virt_to_fix(vaddr);
+}
+
+#endif
OpenPOWER on IntegriCloud