LF OS
Hobby operating system for amd64 with high ambitions
Loading...
Searching...
No Matches
vm.h
Go to the documentation of this file.
1#ifndef _VM_H_INCLUDED
2#define _VM_H_INCLUDED
3
4#define PML4_INDEX(x) (x >> 39) & 0x1FF
5#define PDP_INDEX(x) (x >> 30) & 0x1FF
6#define PD_INDEX(x) (x >> 21) & 0x1FF
7#define PT_INDEX(x) (x >> 12) & 0x1FF
8
9#define PAGING_ENTRY_DEFAULT_SETTINGS \
10 .present = 1, \
11 .writeable = 1, \
12 .userspace = 1, \
13 .writethrough = 0, \
14 .cachedisable = 0, \
15 .accessed = 0, \
16 .dirty = 0, \
17 .huge = 0, \
18 .global = 0, \
19 .available = 0, \
20 .available2 = 0, \
21 .nx = 0
22
23typedef struct {
24 unsigned long long present : 1;
25 unsigned long long writeable : 1;
26 unsigned long long userspace : 1;
27 unsigned long long writethrough : 1;
28 unsigned long long cachedisable : 1;
29 unsigned long long accessed : 1;
30 unsigned long long dirty : 1;
31 unsigned long long huge : 1;
32 unsigned long long global : 1;
33 unsigned long long available : 3;
34 unsigned long long next_base : 40;
35 unsigned long long available2 : 11;
36 unsigned long long nx : 1;
37}__attribute__((packed)) vm_table_entry_t;
38
39typedef struct {
40 vm_table_entry_t entries[512];
41}__attribute__((packed)) vm_table_t;
42
43#endif /* VM_H_INCLUDED */
unsigned long long dirty
Definition vm.h:30
unsigned long long userspace
Definition vm.h:26
unsigned long long huge
Definition vm.h:31
unsigned long long nx
Definition vm.h:36
unsigned long long global
Definition vm.h:32
unsigned long long writethrough
Definition vm.h:27
unsigned long long writeable
Definition vm.h:25
unsigned long long available2
Definition vm.h:35
unsigned long long available
Definition vm.h:33
unsigned long long accessed
Definition vm.h:29
unsigned long long next_base
Definition vm.h:34
unsigned long long present
Definition vm.h:24
unsigned long long cachedisable
Definition vm.h:28
struct vm_table_entry entries[512]
Definition vm.c:0