mirror of
https://github.com/tailix/kernel.git
synced 2024-11-27 11:24:34 -05:00
Do not pass PFA to paging
This commit is contained in:
parent
59885bca4e
commit
411b2f73ae
3 changed files with 8 additions and 16 deletions
|
@ -64,8 +64,8 @@ void main(
|
|||
// TODO: maybe rename to init?
|
||||
paging_clear(&paging);
|
||||
|
||||
paging_identity(&paging, &pfa);
|
||||
paging_mapkernel(&paging, &pfa, &kinfo);
|
||||
paging_identity(&paging);
|
||||
paging_mapkernel(&paging, &kinfo);
|
||||
|
||||
paging_load(&paging);
|
||||
paging_enable();
|
||||
|
|
|
@ -4,12 +4,7 @@
|
|||
#include <kernaux/libc.h>
|
||||
#include <kernaux/stdlib.h>
|
||||
|
||||
static void mapping(
|
||||
struct Paging *paging,
|
||||
KernAux_PFA pfa,
|
||||
uint32_t virt,
|
||||
uint32_t phys
|
||||
);
|
||||
static void mapping(struct Paging *paging, uint32_t virt, uint32_t phys);
|
||||
|
||||
void paging_load(struct Paging *const paging)
|
||||
{
|
||||
|
@ -52,17 +47,16 @@ void paging_clear(struct Paging *const paging)
|
|||
memset(paging, 0, sizeof(*paging));
|
||||
}
|
||||
|
||||
void paging_identity(struct Paging *const paging, const KernAux_PFA pfa)
|
||||
void paging_identity(struct Paging *const paging)
|
||||
{
|
||||
for (size_t i = 0; i < PAGE_DIR_LENGTH; ++i) {
|
||||
const size_t addr = i * PAGE_BIG_SIZE;
|
||||
mapping(paging, pfa, addr, addr);
|
||||
mapping(paging, addr, addr);
|
||||
}
|
||||
}
|
||||
|
||||
void paging_mapkernel(
|
||||
struct Paging *const paging,
|
||||
const KernAux_PFA pfa,
|
||||
const struct Kernel_Info *const kinfo
|
||||
) {
|
||||
assert(!(kinfo->kernel_phys_base % PAGE_BIG_SIZE), "Kernel physical address is not aligned.");
|
||||
|
@ -73,7 +67,7 @@ void paging_mapkernel(
|
|||
size_t mapped = 0;
|
||||
|
||||
while (mapped < kinfo->kernel_size) {
|
||||
mapping(paging, pfa, virt, phys);
|
||||
mapping(paging, virt, phys);
|
||||
|
||||
phys += PAGE_BIG_SIZE;
|
||||
virt += PAGE_BIG_SIZE;
|
||||
|
@ -83,7 +77,6 @@ void paging_mapkernel(
|
|||
|
||||
void mapping(
|
||||
struct Paging *const paging,
|
||||
const KernAux_PFA pfa,
|
||||
const uint32_t virt,
|
||||
const uint32_t phys
|
||||
) {
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
#include "info.h"
|
||||
|
||||
#include <kernaux/arch/i386.h>
|
||||
#include <kernaux/pfa.h>
|
||||
|
||||
#define PAGE_DIR_ALIGN 4096
|
||||
|
||||
|
@ -27,7 +26,7 @@ void paging_enable();
|
|||
|
||||
void paging_clear(struct Paging *paging);
|
||||
|
||||
void paging_identity(struct Paging *paging, KernAux_PFA pfa);
|
||||
void paging_mapkernel(struct Paging *paging, KernAux_PFA pfa, const struct Kernel_Info *kinfo);
|
||||
void paging_identity(struct Paging *paging);
|
||||
void paging_mapkernel(struct Paging *paging, const struct Kernel_Info *kinfo);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue