Contiki 3.x
paging.h
1 /*
2  * Copyright (C) 2015, Intel Corporation. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  *
13  * 3. Neither the name of the copyright holder nor the names of its
14  * contributors may be used to endorse or promote products derived
15  * from this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
20  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
21  * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
22  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28  * OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 
31 #ifndef CPU_X86_MM_PAGING_H_
32 #define CPU_X86_MM_PAGING_H_
33 
34 #include <stdint.h>
35 
36 /**
37  * Page table entry format for PAE mode page table. See Intel Combined Manual,
38  * Vol. 3, Section 4.4 for more details.
39  */
40 typedef union pte {
41  struct {
42  uint64_t present : 1;
43  uint64_t writable : 1;
44  uint64_t user_accessible : 1;
45  uint64_t pwt : 1; /**< Specify write-through cache policy */
46  uint64_t pcd : 1; /**< Disable caching */
47  uint64_t accessed : 1;
48  uint64_t dirty : 1;
49  uint64_t : 5;
50  uint64_t addr : 51;
51  uint64_t exec_disable : 1;
52  };
53  uint64_t raw;
54 } pte_t;
55 
56 #define ENTRIES_PER_PDPT 4
57 #define ENTRIES_PER_PAGE_TABLE 512
58 
59 typedef pte_t pdpt_t[ENTRIES_PER_PDPT];
60 typedef pte_t page_table_t[ENTRIES_PER_PAGE_TABLE];
61 
62 #define MIN_PAGE_SIZE_SHAMT 12
63 #define MIN_PAGE_SIZE (1 << MIN_PAGE_SIZE_SHAMT)
64 
65 #endif /* CPU_X86_MM_PAGING_H_ */
Page table entry format for PAE mode page table.
Definition: paging.h:40
uint64_t pwt
Specify write-through cache policy.
Definition: paging.h:45
uint64_t pcd
Disable caching.
Definition: paging.h:46