• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /* SPDX-License-Identifier: GPL-2.0 */
2  #ifndef __UM_FIXMAP_H
3  #define __UM_FIXMAP_H
4  
5  #include <asm/processor.h>
6  #include <asm/kmap_types.h>
7  #include <asm/archparam.h>
8  #include <asm/page.h>
9  #include <linux/threads.h>
10  
11  /*
12   * Here we define all the compile-time 'special' virtual
13   * addresses. The point is to have a constant address at
14   * compile time, but to set the physical address only
15   * in the boot process. We allocate these special  addresses
16   * from the end of virtual memory (0xfffff000) backwards.
17   * Also this lets us do fail-safe vmalloc(), we
18   * can guarantee that these special addresses and
19   * vmalloc()-ed addresses never overlap.
20   *
21   * these 'compile-time allocated' memory buffers are
22   * fixed-size 4k pages. (or larger if used with an increment
23   * highger than 1) use fixmap_set(idx,phys) to associate
24   * physical memory with fixmap indices.
25   *
26   * TLB entries of such buffers will not be flushed across
27   * task switches.
28   */
29  
30  /*
31   * on UP currently we will have no trace of the fixmap mechanizm,
32   * no page table allocations, etc. This might change in the
33   * future, say framebuffers for the console driver(s) could be
34   * fix-mapped?
35   */
36  enum fixed_addresses {
37  	__end_of_fixed_addresses
38  };
39  
40  extern void __set_fixmap (enum fixed_addresses idx,
41  			  unsigned long phys, pgprot_t flags);
42  
43  /*
44   * used by vmalloc.c.
45   *
46   * Leave one empty page between vmalloc'ed areas and
47   * the start of the fixmap, and leave one page empty
48   * at the top of mem..
49   */
50  
51  #define FIXADDR_TOP	(TASK_SIZE - 2 * PAGE_SIZE)
52  #define FIXADDR_SIZE	(__end_of_fixed_addresses << PAGE_SHIFT)
53  #define FIXADDR_START	(FIXADDR_TOP - FIXADDR_SIZE)
54  
55  #include <asm-generic/fixmap.h>
56  
57  #endif
58