AquilaOS documentation
How it works, and its code
Loading...
Searching...
No Matches
mm.h File Reference
#include <core/system.h>

Go to the source code of this file.

Macros

#define ARCH_DMAP_BASE   (0xFFFF000000000000ULL)
#define ARCH_KVMEM_BASE   (0xFFFF800000000000ULL)
#define ARCH_KVMEM_SIZE   (1ULL << 30)
#define ARCH_SLAB_BASE   (0xFFFF900000000000ULL)
#define ARCH_SLAB_SIZE   (16ULL << 30)
#define ARCH_MMIO_BASE   (0xFFFFA00000000000ULL)
#define ARCH_MMIO_SIZE   (64ULL << 30)
#define ARCH_BOOT_MAPPED   (4ULL << 30)
#define PHYS2VIRT(paddr)
#define __VMA_ADD(obj, op)
#define __VMA_TYPED(obj, op)
#define VMA(obj)
#define LMA(obj)

Typedefs

typedef uint64_t paddr_t
typedef uint64_t vaddr_t

Functions

static void tlb_flush (void)
 Flushes every translation from this CPU's TLB.

Variables

char _VMA

Macro Definition Documentation

◆ __VMA_ADD

#define __VMA_ADD ( obj,
op )
Value:
((uintptr_t) (obj) op (uintptr_t) &_VMA)
char _VMA
__SIZE_TYPE__ uintptr_t
Definition stddef.h:12

Definition at line 32 of file mm.h.

◆ __VMA_TYPED

#define __VMA_TYPED ( obj,
op )
Value:
__builtin_choose_expr(sizeof(obj) == sizeof(uintptr_t), \
(typeof(obj)) __VMA_ADD(obj, op), __VMA_ADD(obj, op))
#define __VMA_ADD(obj, op)
Definition mm.h:32

Definition at line 33 of file mm.h.

◆ ARCH_BOOT_MAPPED

#define ARCH_BOOT_MAPPED   (4ULL << 30)

Definition at line 23 of file mm.h.

Referenced by boot_mem_place(), pmap_init(), and switch_to_higher_half().

◆ ARCH_DMAP_BASE

#define ARCH_DMAP_BASE   (0xFFFF000000000000ULL)

Definition at line 14 of file mm.h.

Referenced by arch_stack_trace(), pmap_add(), and pmap_init().

◆ ARCH_KVMEM_BASE

#define ARCH_KVMEM_BASE   (0xFFFF800000000000ULL)

Definition at line 15 of file mm.h.

Referenced by kvmem_setup().

◆ ARCH_KVMEM_SIZE

#define ARCH_KVMEM_SIZE   (1ULL << 30)

Definition at line 16 of file mm.h.

Referenced by kvmem_setup().

◆ ARCH_MMIO_BASE

#define ARCH_MMIO_BASE   (0xFFFFA00000000000ULL)

Definition at line 19 of file mm.h.

Referenced by window_map(), and window_map().

◆ ARCH_MMIO_SIZE

#define ARCH_MMIO_SIZE   (64ULL << 30)

Definition at line 20 of file mm.h.

Referenced by window_map(), and window_map().

◆ ARCH_SLAB_BASE

#define ARCH_SLAB_BASE   (0xFFFF900000000000ULL)

Definition at line 17 of file mm.h.

Referenced by slab_owns(), slab_page_alloc(), and slab_page_free().

◆ ARCH_SLAB_SIZE

#define ARCH_SLAB_SIZE   (16ULL << 30)

Definition at line 18 of file mm.h.

Referenced by slab_owns().

◆ LMA

#define LMA ( obj)
Value:
__VMA_TYPED(obj, -)
#define __VMA_TYPED(obj, op)
Definition mm.h:33

Definition at line 37 of file mm.h.

Referenced by boot_left(), buddy_setup(), dma_transfer(), and pmap_init().

◆ PHYS2VIRT

#define PHYS2VIRT ( paddr)
Value:
((void *) (ARCH_DMAP_BASE + (uintptr_t) (paddr)))
#define ARCH_DMAP_BASE
Definition mm.h:14

Definition at line 26 of file mm.h.

Referenced by ap_boot(), arch_phys_map(), fdt_boot(), pmap_page_copy(), pmap_page_read(), pmap_page_write(), sigcode_in(), table(), table(), table(), tables_build(), and x86_smp_init().

◆ VMA

Typedef Documentation

◆ paddr_t

typedef uint64_t paddr_t

Definition at line 39 of file mm.h.

◆ vaddr_t

typedef uint64_t vaddr_t

Definition at line 40 of file mm.h.

Function Documentation

◆ tlb_flush()

void tlb_flush ( void )
inlinestatic

Flushes every translation from this CPU's TLB.

Definition at line 43 of file mm.h.

References tlb_flush().

Referenced by arch_lock_taken(), flush(), pmap_init(), pmap_switch(), and tlb_flush().

Variable Documentation

◆ _VMA

char _VMA
extern