This commit is contained in:
wheremyfoodat 2025-08-03 18:09:19 +03:00
commit 54764b6deb
2 changed files with 12 additions and 14 deletions

View file

@ -105,8 +105,9 @@ void Kernel::controlMemory() {
// The same as a Map operation, except in reverse
if (!mem.mapVirtualMemory(
addr0, addr1, pages, false, false, false, MemoryState::Alias, MemoryState::Aliased, MemoryState::Free, MemoryState::Private
))
)) {
Helpers::panic("ControlMemory: Failed to unmap memory");
}
break;
case Operation::Protect:
@ -138,7 +139,7 @@ void Kernel::queryMemory() {
const auto result = mem.queryMemory(info, addr);
regs[0] = result;
regs[1] = info.baseAddr;
regs[2] = info.pages << 12;
regs[2] = info.pages * Memory::pageSize;
regs[3] = info.perms;
regs[4] = info.state;
regs[5] = 0; // page flags

View file

@ -174,9 +174,7 @@ class CRO {
u32 getFixedSize() { return mem.read32(croPointer + CROHeader::FixedSize); }
void setNextCRO(u32 nextCRO) { mem.write32(croPointer + CROHeader::NextCRO, nextCRO); }
void setPrevCRO(u32 prevCRO) { mem.write32(croPointer + CROHeader::PrevCRO, prevCRO); }
u32 getSize() { return mem.read32(croPointer + CROHeader::FileSize); }
void write32(u32 addr, u32 value) {
@ -230,12 +228,10 @@ class CRO {
// we won't use it and instead look up the symbol in the named export symbol table
const u32 exportStringSize = mem.read32(croPointer + CROHeader::ExportStringSize);
const CROHeaderEntry namedExportTable = getHeaderEntry(CROHeader::NamedExportTableOffset);
for (u32 namedExport = 0; namedExport < namedExportTable.size; namedExport++) {
const u32 nameOffset = mem.read32(namedExportTable.offset + 8 * namedExport + NamedExportTable::NameOffset);
const std::string exportSymbolName = mem.readString(nameOffset, exportStringSize);
if (symbolName.compare(exportSymbolName) == 0) {
@ -673,7 +669,6 @@ class CRO {
const u32 addend = mem.read32(relocationPatchTable.offset + 12 * relocationPatch + RelocationPatch::Addend);
const u32 segmentAddr = getSegmentAddr(segmentOffset);
const u32 entryID = mem.read32(segmentTable.offset + 12 * (segmentOffset & 0xF) + SegmentTable::ID);
u32 relocationTarget = segmentAddr;
@ -1247,6 +1242,7 @@ void LDRService::initialize(u32 messagePointer) {
bool succeeded = mem.mapVirtualMemory(
mapVaddr, crsPointer, size >> 12, true, true, true, MemoryState::Free, MemoryState::Private, MemoryState::Locked, MemoryState::AliasCode
);
if (!succeeded) {
Helpers::panic("Failed to map CRS");
}
@ -1342,6 +1338,7 @@ void LDRService::loadCRO(u32 messagePointer, bool isNew) {
bool succeeded = mem.mapVirtualMemory(
mapVaddr, croPointer, size >> 12, true, true, true, MemoryState::Free, MemoryState::Private, MemoryState::Locked, MemoryState::AliasCode
);
if (!succeeded) {
Helpers::panic("Failed to map CRO");
}