feat: initial

This commit is contained in:
Katharina 2026-06-26 21:17:31 +02:00
commit 92d8a91be4
20 changed files with 1058 additions and 0 deletions

View file

@ -0,0 +1,39 @@
#pragma once
#include "util/number.h"
constexpr uint64_t high_base = 0xFFFF800000000000;
#define read_symbol(symbol) [](){uint64_t res; asm volatile("movabsq $" symbol ", %0": "=r"(res)); return res;}()
struct paddr_t {
uint64_t address;
template<typename T>
T* access() {
return reinterpret_cast<T*>(address+high_base);
}
};
inline void* operator new(size_t, void* p) {
return p;
}
inline void* operator new[](size_t, void* p) {
return p;
}
inline void* memcpy(void* dest, const void* src, size_t n) {
for (size_t i = 0; i < n; i++) {
((uint8_t*) dest)[i] = ((uint8_t*) src)[i];
}
return dest;
}
inline void* memset(void* dest, int c, size_t n) {
for (size_t i = 0; i < n; i++) {
((uint8_t*) dest)[i] = (uint8_t) c;
}
return dest;
}

View file

@ -0,0 +1,19 @@
#pragma once
#include "memory/pointer.h"
struct KernelSection {
uint64_t vma_start;
uint64_t vma_end;
const char* name;
paddr_t phys_start() const { return paddr_t{vma_start >= high_base ? vma_start - high_base : vma_start}; }
paddr_t phys_end() const { return paddr_t{vma_end >= high_base ? vma_end - high_base : vma_end}; }
};
extern KernelSection __reserved_ranges_start__[], __reserved_ranges_end__[];
template<typename Fn>
void for_each_reserved_section(Fn&& fn) {
for (auto* s = __reserved_ranges_start__; s < __reserved_ranges_end__; ++s)
fn(*s);
}