summaryrefslogtreecommitdiff
path: root/arch/xtensa/mm/highmem.c
diff options
context:
space:
mode:
authorMax Filippov <jcmvbkbc@gmail.com>2014-07-15 02:27:50 +0400
committerMax Filippov <jcmvbkbc@gmail.com>2014-08-14 11:59:17 +0400
commit22def7681186f65f4f1256ae9b0b6db2a7720cb1 (patch)
treefb80ce6465ab17c3f0b1ce87bed58e8ec9ffa78f /arch/xtensa/mm/highmem.c
parent52247123749cc3cbc30168b33ad8c69515c96d23 (diff)
xtensa: make fixmap region addressing grow with index
It's much easier to reason about alignment and coloring of regions located in the fixmap when fixmap index is just a PFN within the fixmap region. Change fixmap addressing so that index 0 corresponds to FIXADDR_START instead of the FIXADDR_TOP. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Diffstat (limited to 'arch/xtensa/mm/highmem.c')
-rw-r--r--arch/xtensa/mm/highmem.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/xtensa/mm/highmem.c b/arch/xtensa/mm/highmem.c
index 17a8c0d6fd17..2e95a7665bf3 100644
--- a/arch/xtensa/mm/highmem.c
+++ b/arch/xtensa/mm/highmem.c
@@ -28,9 +28,9 @@ void *kmap_atomic(struct page *page)
idx = type + KM_TYPE_NR * smp_processor_id();
vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
#ifdef CONFIG_DEBUG_HIGHMEM
- BUG_ON(!pte_none(*(kmap_pte - idx)));
+ BUG_ON(!pte_none(*(kmap_pte + idx)));
#endif
- set_pte(kmap_pte - idx, mk_pte(page, PAGE_KERNEL_EXEC));
+ set_pte(kmap_pte + idx, mk_pte(page, PAGE_KERNEL_EXEC));
return (void *)vaddr;
}
@@ -51,7 +51,7 @@ void __kunmap_atomic(void *kvaddr)
* is a bad idea also, in case the page changes cacheability
* attributes or becomes a protected page in a hypervisor.
*/
- pte_clear(&init_mm, kvaddr, kmap_pte - idx);
+ pte_clear(&init_mm, kvaddr, kmap_pte + idx);
local_flush_tlb_kernel_range((unsigned long)kvaddr,
(unsigned long)kvaddr + PAGE_SIZE);