aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arc/include/asm/kmap_types.h
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@synopsys.com>2015-03-09 18:53:49 +0530
committerVineet Gupta <vgupta@synopsys.com>2015-10-28 19:49:04 +0530
commit45890f6d34e70d9dd194bd1729eba3ff72cabf78 (patch)
tree11ebe206ba2fe233edc91d49e334dcef46dcf890 /arch/arc/include/asm/kmap_types.h
parentARC: mm: preps ahead of HIGHMEM support #2 (diff)
downloadlinux-dev-45890f6d34e70d9dd194bd1729eba3ff72cabf78.tar.xz
linux-dev-45890f6d34e70d9dd194bd1729eba3ff72cabf78.zip
ARC: mm: HIGHMEM: kmap API implementation
Implement kmap* API for ARC. This enables - permanent kernel maps (pkmaps): :kmap() API - fixmap : kmap_atomic() We use a very simple/uniform approach for both (unlike some of the other arches). So fixmap doesn't use the customary compile time address stuff. The important semantic is sleep'ability (pkmap) vs. not (fixmap) which the API guarantees. Note that this patch only enables highmem for subsequent PAE40 support as there is no real highmem for ARC in pure 32-bit paradigm as explained below. ARC has 2:2 address split of the 32-bit address space with lower half being translated (virtual) while upper half unstranslated (0x8000_0000 to 0xFFFF_FFFF). kernel itself is linked at base of unstranslated space (i.e. 0x8000_0000 onwards), which is mapped to say DDR 0x0 by external Bus Glue logic (outside the core). So kernel can potentially access 1.75G worth of memory directly w/o need for highmem. (the top 256M is taken by uncached peripheral space from 0xF000_0000 to 0xFFFF_FFFF) In PAE40, hardware can address memory beyond 4G (0x1_0000_0000) while the logical/virtual addresses remain 32-bits. Thus highmem is required for kernel proper to be able to access these pages for it's own purposes (user space is agnostic to this anyways). Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc/include/asm/kmap_types.h')
-rw-r--r--arch/arc/include/asm/kmap_types.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/arc/include/asm/kmap_types.h b/arch/arc/include/asm/kmap_types.h
new file mode 100644
index 000000000000..f0d7f6acea4e
--- /dev/null
+++ b/arch/arc/include/asm/kmap_types.h
@@ -0,0 +1,18 @@
+/*
+ * Copyright (C) 2015 Synopsys, Inc. (www.synopsys.com)
+ *
+ * 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_KMAP_TYPES_H
+#define _ASM_KMAP_TYPES_H
+
+/*
+ * We primarily need to define KM_TYPE_NR here but that in turn
+ * is a function of PGDIR_SIZE etc.
+ * To avoid circular deps issue, put everything in asm/highmem.h
+ */
+#endif