Skip to content

X86 port v2 + many fixes#5

Merged
iProgramMC merged 44 commits into
masterfrom
x86-port-v2
Oct 27, 2025
Merged

X86 port v2 + many fixes#5
iProgramMC merged 44 commits into
masterfrom
x86-port-v2

Conversation

@iProgramMC

Copy link
Copy Markdown
Owner

No description provided.

Unfortunately, still not stable.
I think I will need to completely rewrite the pool allocator, since
I found some major flaws in regards to locking and things like that.
…he HHDM.

This is because these pool header slabs could be allocated at >256MB, at which
point MmGetHHDMOffsetAddr() relies on the window system, so the addresses are
never permanent, thus it starts crashing when the PMM starts giving out addresses
bigger than 256 MB.
…is important.

* Mm: Switch to MmGetPteLocation/MmGetPteLocationCheck.
* Mm: Remove the `HPAGEMAP Mapping` parameter from several page table functions.
* Mm: Actually allow MmMapIoSpace addresses to be freed properly using MmFreePoolBig.
* Ke: Use a hardcoded PRCB list for non-SMP builds.
* Ke(amd64): Make the boot page mapping have recursive page mappings setup.
* Framebuffer: Use MmMapIoSpace for temporary mappings on 32-bit builds.
* Halx86(amd64): Use MmMapIoSpace instead of doing it manually.
This allows the implementation to also work on 32-bit builds.
It might be slightly slower than the old version, but if it works,
it works. I will need to do more testing, though.
… are being missed.

* Hal: Fix a typo in HalPicRegisterInterrupt
* I8042prt: Get working
* Ke: Fix a bug where the "more than 1 CPU" message is printed if you have one CPU
@iProgramMC iProgramMC changed the title X86 port v2 X86 port v2 + many fixes Oct 21, 2025
* User: Actually make sure to compile with the correct toolchain
* Ps: Fix a bug where BSS wasn't initialized to zero.
* Mm: Fix a bug with MmCopyIntoMdl which prevented the function from taking page faults on 32-bit
* Libboron: Clear bss in loaded modules if it's part of the data phdr
* Load all the userspace files now
* Mm(i386): Relocate second part of pool.
* Mm(i386): Initialize page tables for pool to keep them shared across address spaces.
* Mm(i386): Fix bug where MmProbeAddressSubEarlyReturn doesn't return properly.
* Mm(i386): Rewrite unused page table freeing context.
* Mm: Fix bug where MmCopyFromMdl wasn't using the correct pointer.
* Mm: Fix bug where the VA offset was applied twice.
@iProgramMC

Copy link
Copy Markdown
Owner Author

init.exe and test.exe can run on x86 32-bit now!

@iProgramMC
iProgramMC merged commit 610d722 into master Oct 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant