aboutsummaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/riscv/common/vmem.c20
-rw-r--r--arch/riscv/include/pages.h2
-rw-r--r--arch/riscv/include/vmem.h6
-rw-r--r--arch/riscv/init/init.c64
4 files changed, 46 insertions, 46 deletions
diff --git a/arch/riscv/common/vmem.c b/arch/riscv/common/vmem.c
index d0f3ebe..ef89ec3 100644
--- a/arch/riscv/common/vmem.c
+++ b/arch/riscv/common/vmem.c
@@ -3,22 +3,22 @@
#include <pages.h>
#include <vmem.h>
-#define pte_ppn(pte) (((paddr_t)(pte)) >> 10)
-#define pte_flags(pte) (((paddr_t)(pte)) & 0xff)
-#define to_pte(p, f) ((paddr_to_pnum(p) << 10) + (f))
+#define pte_ppn(pte) (((pm_t)(pte)) >> 10)
+#define pte_flags(pte) (((pm_t)(pte)) & 0xff)
+#define to_pte(p, f) ((pm_to_pnum(p) << 10) + (f))
#define pte_addr(pte) (pnum_to_paddr(pte_ppn(pte)))
/* probably not actually this simple, right? */
void map_vmem(struct vm_branch_t *branch,
- paddr_t paddr, vaddr_t vaddr,
+ pm_t paddr, vm_t vaddr,
uint8_t flags, enum mm_order_t order)
{
enum mm_order_t top = MAX_ORDER;
while(top != order){
- size_t idx = paddr_to_index(vaddr, top);
+ size_t idx = pm_to_index(vaddr, top);
if(!branch->leaf[idx]){
- paddr_t new_leaf = alloc_page(MM_KPAGE, 0);
+ pm_t new_leaf = alloc_page(MM_KPAGE, 0);
branch->leaf[idx] = (struct vm_branch_t *)to_pte(new_leaf, VM_V);
memset((void *)new_leaf, 0, sizeof(struct vm_branch_t));
}
@@ -27,19 +27,19 @@ void map_vmem(struct vm_branch_t *branch,
top--;
}
- size_t idx = paddr_to_index(vaddr, top);
+ size_t idx = pm_to_index(vaddr, top);
branch->leaf[idx] = (struct vm_branch_t *)to_pte(paddr, flags);
}
void unmap_vmem(struct vm_branch_t *branch,
- vaddr_t vaddr, enum mm_order_t order)
+ vm_t vaddr, enum mm_order_t order)
{
while(order){
- size_t idx = paddr_to_index(vaddr, order);
+ size_t idx = pm_to_index(vaddr, order);
branch = (struct vm_branch_t *)pte_addr(branch->leaf[idx]);
}
- size_t idx = paddr_to_index(vaddr, order);
+ size_t idx = pm_to_index(vaddr, order);
if(branch->leaf[idx])
free_page(order, pte_addr(branch->leaf[idx]));
diff --git a/arch/riscv/include/pages.h b/arch/riscv/include/pages.h
index 8ca396a..362499a 100644
--- a/arch/riscv/include/pages.h
+++ b/arch/riscv/include/pages.h
@@ -13,6 +13,6 @@
#define MM_GPAGE_SIZE SZ_1G
#define MM_TPAGE_SIZE SZ_512G
-typedef uint64_t paddr_t;
+typedef uint64_t pm_t;
#endif /* APOS_RISCV_PAGES_H */
diff --git a/arch/riscv/include/vmem.h b/arch/riscv/include/vmem.h
index 3c27c7b..0aad780 100644
--- a/arch/riscv/include/vmem.h
+++ b/arch/riscv/include/vmem.h
@@ -14,16 +14,16 @@
#define VM_A (1 << 6)
#define VM_D (1 << 7)
-typedef size_t vaddr_t;
+typedef size_t vm_t;
struct __packed vm_branch_t {
struct vm_branch_t *leaf[512];
};
void map_vmem(struct vm_branch_t *branch,
- paddr_t paddr, vaddr_t vaddr,
+ pm_t paddr, vm_t vaddr,
uint8_t flags, enum mm_order_t order);
-void unmap_vmem(struct vm_branch_t *branch, vaddr_t vaddr, enum mm_order_t order);
+void unmap_vmem(struct vm_branch_t *branch, vm_t vaddr, enum mm_order_t order);
#endif /* APOS_RISCV_VMAP_H */
diff --git a/arch/riscv/init/init.c b/arch/riscv/init/init.c
index 0217c79..a64bdf5 100644
--- a/arch/riscv/init/init.c
+++ b/arch/riscv/init/init.c
@@ -12,12 +12,12 @@
#include <vmem.h>
#include <csr.h>
-struct pmem_layout_t {
- paddr_t base;
- paddr_t top;
+struct pm_layout_t {
+ pm_t base;
+ pm_t top;
};
-static struct pmem_layout_t get_memlayout(void *fdt)
+static struct pm_layout_t get_memlayout(void *fdt)
{
struct cell_info_t ci = get_reginfo(fdt, "/memory");
int mem_offset = fdt_path_offset(fdt, "/memory");
@@ -26,7 +26,7 @@ static struct pmem_layout_t get_memlayout(void *fdt)
/* if riscv128 comes around we will probably see addr_cells == 4, but
* I'm not too concerned about it at the moment */
- paddr_t base = (paddr_t)fdt_load_int_ptr(ci.addr_cells, mem_reg);
+ pm_t base = (pm_t)fdt_load_int_ptr(ci.addr_cells, mem_reg);
if(ci.addr_cells == 2)
mem_reg += sizeof(fdt64_t);
@@ -34,8 +34,8 @@ static struct pmem_layout_t get_memlayout(void *fdt)
mem_reg += sizeof(fdt32_t);
/* -1 because base is a legitimate memory address */
- paddr_t top = (paddr_t)fdt_load_int_ptr(ci.size_cells, mem_reg) + base - 1;
- return (struct pmem_layout_t){base, top};
+ pm_t top = (pm_t)fdt_load_int_ptr(ci.size_cells, mem_reg) + base - 1;
+ return (struct pm_layout_t){base, top};
}
#ifdef DEBUG
@@ -50,16 +50,16 @@ static void init_debug(void *fdt)
#define init_debug(...)
#endif
-static paddr_t get_kerneltop()
+static pm_t get_kerneltop()
{
/* interesting, for some reason if I define these to be just char
* pointers I get some wacky values. Not sure why that would be, but
* this works. */
extern char __init_end, __kernel_size;
- return (paddr_t)&__init_end + (paddr_t)&__kernel_size;
+ return (pm_t)&__init_end + (pm_t)&__kernel_size;
}
-static paddr_t get_initrdtop(void *fdt)
+static pm_t get_initrdtop(void *fdt)
{
int chosen_offset = fdt_path_offset(fdt, "/chosen");
struct cell_info_t ci = get_cellinfo(fdt, chosen_offset);
@@ -67,10 +67,10 @@ static paddr_t get_initrdtop(void *fdt)
void *initrd_end_ptr = (void *)fdt_getprop(fdt, chosen_offset,
"linux,initrd-end", NULL);
- return (paddr_t)fdt_load_int_ptr(ci.addr_cells, initrd_end_ptr);
+ return (pm_t)fdt_load_int_ptr(ci.addr_cells, initrd_end_ptr);
}
-static paddr_t get_initrdbase(void *fdt)
+static pm_t get_initrdbase(void *fdt)
{
int chosen_offset = fdt_path_offset(fdt, "/chosen");
struct cell_info_t ci = get_cellinfo(fdt, chosen_offset);
@@ -78,22 +78,22 @@ static paddr_t get_initrdbase(void *fdt)
void *initrd_base_ptr = (void *)fdt_getprop(fdt, chosen_offset,
"linux,initrd-start", NULL);
- return (paddr_t)fdt_load_int_ptr(ci.addr_cells, initrd_base_ptr);
+ return (pm_t)fdt_load_int_ptr(ci.addr_cells, initrd_base_ptr);
}
-static paddr_t get_fdttop(void *fdt)
+static pm_t get_fdttop(void *fdt)
{
const char *b = (const char *)fdt;
- return (paddr_t)(b + fdt_totalsize(fdt));
+ return (pm_t)(b + fdt_totalsize(fdt));
}
-static paddr_t get_fdtbase(void *fdt)
+static pm_t get_fdtbase(void *fdt)
{
/* lol */
- return (paddr_t)fdt;
+ return (pm_t)fdt;
}
-static void mark_area_used(paddr_t base, paddr_t top)
+static void mark_area_used(pm_t base, pm_t top)
{
size_t area_left = top - base;
/* TODO: add in a method to make sure that we use as large mappings as
@@ -114,26 +114,26 @@ static void mark_reserved_mem(void *fdt)
struct cell_info_t ci = get_reginfo(fdt, "/reserved-memory/mmode_resv0");
uint8_t *rmem_reg = (uint8_t *)fdt_getprop(fdt, rmem_offset, "reg", NULL);
- paddr_t base = (paddr_t)fdt_load_int_ptr(ci.addr_cells, rmem_reg);
+ pm_t base = (pm_t)fdt_load_int_ptr(ci.addr_cells, rmem_reg);
if(ci.addr_cells == 2)
rmem_reg += sizeof(fdt64_t);
else
rmem_reg += sizeof(fdt32_t);
- paddr_t top = (paddr_t)fdt_load_int_ptr(ci.size_cells, rmem_reg) + base - 1;
+ pm_t top = (pm_t)fdt_load_int_ptr(ci.size_cells, rmem_reg) + base - 1;
mark_area_used(base, top);
}
static void setup_pmem(void *fdt)
{
- struct pmem_layout_t pmem = get_memlayout(fdt);
+ struct pm_layout_t pmem = get_memlayout(fdt);
- paddr_t initrd_top = get_initrdtop(fdt);
- paddr_t kernel_top = get_kerneltop();
- paddr_t fdt_top = get_fdttop(fdt);
+ pm_t initrd_top = get_initrdtop(fdt);
+ pm_t kernel_top = get_kerneltop();
+ pm_t fdt_top = get_fdttop(fdt);
- paddr_t top = MAX3(kernel_top, initrd_top, fdt_top);
+ pm_t top = MAX3(kernel_top, initrd_top, fdt_top);
dbg("initrd_top:\t%#lx\n", initrd_top);
dbg("kernel_top:\t%#lx\n", kernel_top);
dbg("fdt_top:\t%#lx\n", fdt_top);
@@ -143,7 +143,7 @@ static void setup_pmem(void *fdt)
size_t probe_size = probe_pmap(pmem.base, pmem.top - pmem.base);
/* riscv handles two byte boundaries better than one byte, so align
* upwards */
- paddr_t pmap_base = align_up(top + 1, 2);
+ pm_t pmap_base = align_up(top + 1, 2);
size_t actual_size = populate_pmap(pmem.base, pmem.top - pmem.base,
pmap_base);
@@ -171,10 +171,10 @@ static void setup_pmem(void *fdt)
mark_reserved_mem(fdt);
}
-paddr_t move_kernel()
+pm_t move_kernel()
{
extern char __init_end, __kernel_size;
- paddr_t dst = alloc_page(MM_MPAGE, 0);
+ pm_t dst = alloc_page(MM_MPAGE, 0);
memmove((void *)dst, &__init_end, (size_t)&__kernel_size);
return dst;
@@ -182,7 +182,7 @@ paddr_t move_kernel()
struct vm_branch_t *prepare_vmem()
{
- paddr_t kernel_dst = move_kernel();
+ pm_t kernel_dst = move_kernel();
/* TODO: check if this actually works */
struct vm_branch_t *branch = (struct vm_branch_t *)alloc_page(MM_KPAGE, 0);
@@ -209,7 +209,7 @@ void start_vmem(struct vm_branch_t *branch)
/* TODO: get ASID from CPU id
* TODO: more cores lol
*/
- csr_write(CSR_SATP, SATP_MODE_48 | (((paddr_t)(branch)) >> 12));
+ csr_write(CSR_SATP, SATP_MODE_48 | (((pm_t)(branch)) >> 12));
}
struct init_data_t populate_initdata(void *fdt, struct vm_branch_t *branch)
@@ -217,8 +217,8 @@ struct init_data_t populate_initdata(void *fdt, struct vm_branch_t *branch)
extern char __init_start, __init_end;
struct init_data_t d = {0};
- d.init_base = (paddr_t)&__init_start;
- d.init_top = (paddr_t)&__init_end;
+ d.init_base = (pm_t)&__init_start;
+ d.init_top = (pm_t)&__init_end;
d.initrd_base = get_initrdbase(fdt);
d.initrd_top = get_initrdtop(fdt);