#pragma once #include "stdarg.h" #include "types.h" /** Physical Page related function */ #define PAGE_SHIFT 12U #define PAGE_SIZE (1U << PAGE_SHIFT) #define PAGE_MASK (PAGE_SIZE - 1) // Defined in linker.ld script extern char __ld_kernel_begin; extern char __ld_kernel_end; struct phyMemDesc { paddr_t phy_addr; unsigned long ref; struct phyMemDesc *next, *prev; }; int memSetup(paddr_t upperMem, paddr_t * firstUsed, paddr_t *lastUsed); int memAddBank(paddr_t bottomMem, paddr_t topMem, int isFree); paddr_t allocPhyPage(uint nbPage); int unrefPhyPage(paddr_t addr); int refPhyPage(paddr_t addr); unsigned long getNbAllocatedPage(void); void memGetStat(uint *free, uint *used);