Blame view

kernel/linux-rt-4.4.41/arch/tile/include/asm/highmem.h 2.08 KB
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
  /*
   * Copyright (C) 1999 Gerhard Wichert, Siemens AG
   *                   Gerhard.Wichert@pdb.siemens.de
   * Copyright 2010 Tilera Corporation. All Rights Reserved.
   *
   *   This program is free software; you can redistribute it and/or
   *   modify it under the terms of the GNU General Public License
   *   as published by the Free Software Foundation, version 2.
   *
   *   This program is distributed in the hope that it will be useful, but
   *   WITHOUT ANY WARRANTY; without even the implied warranty of
   *   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
   *   NON INFRINGEMENT.  See the GNU General Public License for
   *   more details.
   *
   * Used in CONFIG_HIGHMEM systems for memory pages which
   * are not addressable by direct kernel virtual addresses.
   *
   */
  
  #ifndef _ASM_TILE_HIGHMEM_H
  #define _ASM_TILE_HIGHMEM_H
  
  #include <linux/interrupt.h>
  #include <linux/threads.h>
  #include <asm/tlbflush.h>
  #include <asm/homecache.h>
  
  /* declarations for highmem.c */
  extern unsigned long highstart_pfn, highend_pfn;
  
  extern pte_t *pkmap_page_table;
  
  /*
   * Ordering is:
   *
   * FIXADDR_TOP
   *			fixed_addresses
   * FIXADDR_START
   *			temp fixed addresses
   * FIXADDR_BOOT_START
   *			Persistent kmap area
   * PKMAP_BASE
   * VMALLOC_END
   *			Vmalloc area
   * VMALLOC_START
   * high_memory
   */
  #define LAST_PKMAP_MASK (LAST_PKMAP-1)
  #define PKMAP_NR(virt)  ((virt-PKMAP_BASE) >> PAGE_SHIFT)
  #define PKMAP_ADDR(nr)  (PKMAP_BASE + ((nr) << PAGE_SHIFT))
  
  void *kmap_high(struct page *page);
  void kunmap_high(struct page *page);
  void *kmap(struct page *page);
  void kunmap(struct page *page);
  void *kmap_fix_kpte(struct page *page, int finished);
  
  /* This macro is used only in map_new_virtual() to map "page". */
  #define kmap_prot page_to_kpgprot(page)
  
  void *kmap_atomic(struct page *page);
  void __kunmap_atomic(void *kvaddr);
  void *kmap_atomic_pfn(unsigned long pfn);
  void *kmap_atomic_prot_pfn(unsigned long pfn, pgprot_t prot);
  void *kmap_atomic_prot(struct page *page, pgprot_t prot);
  void kmap_atomic_fix_kpte(struct page *page, int finished);
  
  #define flush_cache_kmaps()	do { } while (0)
  
  #endif /* _ASM_TILE_HIGHMEM_H */