Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
paging.h File Reference
#include <type.h>

Go to the source code of this file.

Data Structures

struct  dma_memory_mapping_t
 
struct  reserve_map
 

Macros

#define PAGE_SIZE   0x1000
 
#define GB   0x40000000UL
 
#define MB   0x100000ULL
 
#define VMM_PAGE   paging_create_page_directory()
 
#define PAGE_PRESENT   (1ULL << 0)
 
#define PAGE_WRITABLE   (1ULL << 1)
 
#define PAGE_USER   (1ULL << 2)
 
#define PAGE_WRITE_THROUGH   (1ULL << 3)
 
#define PAGE_CACHE_DISABLE   (1ULL << 4)
 
#define PAGE_ACCESSED   (1ULL << 5)
 
#define PAGE_DIRTY   (1ULL << 6)
 
#define PAGE_HUGE   (1ULL << 7)
 
#define PAGE_GLOBAL   (1ULL << 8)
 
#define PAGE_NO_EXECUTE   (1ULL << 63)
 
#define PAGE_PHYS_MASK   0x000FFFFFFFFFF000ULL
 
#define PAGE_INTER_STRIP    (0xFFFULL << 52 | (1ULL << 7) | (1ULL << 4) | (1ULL << 3))
 

Typedefs

typedef volatile uintptr_tpage_t
 
typedef struct reserve_map reserve_map
 

Functions

struct reserve_map __attribute__ ((aligned(32)))
 
page_t paging_create_page_directory ()
 
void vxMmap (page_t page_dir, uint64_t virt, uint64_t phys, uint64_t flags)
 
void paging_reload (page_t pml4)
 
page_t paging_get_highest_page_map (void)
 
void paging_unmap_page (page_t page_dir, uint64_t virt)
 
void paging_unmap_fill (page_t page_dir, uint64_t virt, size_t size)
 
void paging_setup (page_t pml4)
 
void vxMultipleMmap (page_t page_dir, uint64_t virt, uint64_t phys, uint64_t size, uint64_t flags)
 
uint64_t vaddr_to_paddr (page_t pml4, uint64_t vaddr)
 
void paging_add_dma_mapping (uintptr_t phys, uintptr_t virt, uint64_t size)
 
void paging_debug (page_t pml4, uint64_t virt)
 

Variables

uintptr_t p_addr
 
uintptr_t v_addr
 
size_t count
 
int flags
 
reserve_mapnext
 

Macro Definition Documentation

◆ GB

#define GB   0x40000000UL

Definition at line 8 of file paging.h.

◆ MB

#define MB   0x100000ULL

Definition at line 9 of file paging.h.

◆ PAGE_ACCESSED

#define PAGE_ACCESSED   (1ULL << 5)

Definition at line 39 of file paging.h.

◆ PAGE_CACHE_DISABLE

#define PAGE_CACHE_DISABLE   (1ULL << 4)

Definition at line 38 of file paging.h.

Referenced by acpi_map_phys_page().

◆ PAGE_DIRTY

#define PAGE_DIRTY   (1ULL << 6)

Definition at line 40 of file paging.h.

◆ PAGE_GLOBAL

#define PAGE_GLOBAL   (1ULL << 8)

Definition at line 42 of file paging.h.

◆ PAGE_HUGE

#define PAGE_HUGE   (1ULL << 7)

Definition at line 41 of file paging.h.

◆ PAGE_INTER_STRIP

#define PAGE_INTER_STRIP    (0xFFFULL << 52 | (1ULL << 7) | (1ULL << 4) | (1ULL << 3))

Definition at line 49 of file paging.h.

Referenced by vxMmap().

◆ PAGE_NO_EXECUTE

#define PAGE_NO_EXECUTE   (1ULL << 63)

◆ PAGE_PHYS_MASK

#define PAGE_PHYS_MASK   0x000FFFFFFFFFF000ULL

◆ PAGE_PRESENT

◆ PAGE_SIZE

#define PAGE_SIZE   0x1000

◆ PAGE_USER

#define PAGE_USER   (1ULL << 2)

◆ PAGE_WRITABLE

◆ PAGE_WRITE_THROUGH

#define PAGE_WRITE_THROUGH   (1ULL << 3)

Definition at line 37 of file paging.h.

Referenced by acpi_map_phys_page().

◆ VMM_PAGE

#define VMM_PAGE   paging_create_page_directory()

Definition at line 31 of file paging.h.

Referenced by INIT(), and paging_physwindow_mmap().

Typedef Documentation

◆ page_t

typedef volatile uintptr_t* page_t

Definition at line 11 of file paging.h.

◆ reserve_map

typedef struct reserve_map reserve_map

Definition at line 20 of file paging.h.

Function Documentation

◆ __attribute__()

struct reserve_map __attribute__ ( (aligned(32)) )

Definition at line 1 of file framebuffer.h.

◆ paging_add_dma_mapping()

void paging_add_dma_mapping ( uintptr_t phys,
uintptr_t virt,
uint64_t size )

References size.

◆ paging_create_page_directory()

page_t paging_create_page_directory ( )

◆ paging_debug()

void paging_debug ( page_t pml4,
uint64_t virt )

◆ paging_get_highest_page_map()

◆ paging_reload()

◆ paging_setup()

◆ paging_unmap_fill()

void paging_unmap_fill ( page_t page_dir,
uint64_t virt,
size_t size )

Definition at line 451 of file paging.c.

References paging_unmap_page(), and size.

Referenced by acpi_phys_page_unmap().

◆ paging_unmap_page()

◆ vaddr_to_paddr()

uint64_t vaddr_to_paddr ( page_t pml4,
uint64_t vaddr )

Definition at line 465 of file paging.c.

References PAGE_PHYS_MASK, and PHYS2VIRT.

◆ vxMmap()

◆ vxMultipleMmap()

Variable Documentation

◆ count

size_t count

Definition at line 2 of file paging.h.

◆ flags

int flags

Definition at line 3 of file paging.h.

◆ next

reserve_map* next

Definition at line 4 of file paging.h.

◆ p_addr

uintptr_t p_addr

Definition at line 0 of file paging.h.

◆ v_addr

uintptr_t v_addr

Definition at line 1 of file paging.h.