root/arch/arc/include/asm/highmem.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. flush_cache_kmaps
  2. kunmap

   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Copyright (C) 2015 Synopsys, Inc. (www.synopsys.com)
   4  */
   5 
   6 #ifndef _ASM_HIGHMEM_H
   7 #define _ASM_HIGHMEM_H
   8 
   9 #ifdef CONFIG_HIGHMEM
  10 
  11 #include <uapi/asm/page.h>
  12 #include <asm/kmap_types.h>
  13 
  14 /* start after vmalloc area */
  15 #define FIXMAP_BASE             (PAGE_OFFSET - FIXMAP_SIZE - PKMAP_SIZE)
  16 #define FIXMAP_SIZE             PGDIR_SIZE      /* only 1 PGD worth */
  17 #define KM_TYPE_NR              ((FIXMAP_SIZE >> PAGE_SHIFT)/NR_CPUS)
  18 #define FIXMAP_ADDR(nr)         (FIXMAP_BASE + ((nr) << PAGE_SHIFT))
  19 
  20 /* start after fixmap area */
  21 #define PKMAP_BASE              (FIXMAP_BASE + FIXMAP_SIZE)
  22 #define PKMAP_SIZE              PGDIR_SIZE
  23 #define LAST_PKMAP              (PKMAP_SIZE >> PAGE_SHIFT)
  24 #define LAST_PKMAP_MASK         (LAST_PKMAP - 1)
  25 #define PKMAP_ADDR(nr)          (PKMAP_BASE + ((nr) << PAGE_SHIFT))
  26 #define PKMAP_NR(virt)          (((virt) - PKMAP_BASE) >> PAGE_SHIFT)
  27 
  28 #define kmap_prot               PAGE_KERNEL
  29 
  30 
  31 #include <asm/cacheflush.h>
  32 
  33 extern void *kmap(struct page *page);
  34 extern void *kmap_high(struct page *page);
  35 extern void *kmap_atomic(struct page *page);
  36 extern void __kunmap_atomic(void *kvaddr);
  37 extern void kunmap_high(struct page *page);
  38 
  39 extern void kmap_init(void);
  40 
  41 static inline void flush_cache_kmaps(void)
  42 {
  43         flush_cache_all();
  44 }
  45 
  46 static inline void kunmap(struct page *page)
  47 {
  48         BUG_ON(in_interrupt());
  49         if (!PageHighMem(page))
  50                 return;
  51         kunmap_high(page);
  52 }
  53 
  54 
  55 #endif
  56 
  57 #endif

/* [<][>][^][v][top][bottom][index][help] */