#EvalynOS
1 messages · Page 17 of 1
Drop this in the folder in /src/initramfs
And unzip etc
Should work
Uhhhhh
In computer programming jargon, a heisenbug is a software bug that seems to disappear or alter its behavior when one attempts to study it. The term is a pun on the name of Werner Heisenberg, the physicist who first introduced the uncertainty principle, and it is a reference to the observer effect, which states that the act of observing a system ...
how to make this error
Uhhhhh
Well nobody can reproduce the faults anymore
💀
But
I still have my buggy patch files
Which are other issues
the AM speech one is the latest
i need to patch both or only one
Only one
The “FIREWORKS” test command is on those patches
And reproduces some strange ass faults
@rotund furnace May have more patches based on thoes fucks that caught more
crashes and the errors*
I have no patches
Are you on the dev branch?
i cloned this
i need a group like that too lmao
fork,
threek,
twok,
onek,
spoon
99 little bugs in the code. Take one down, patch it around 117 little bugs in the code.
at least credit klange there
#1141057599584878645 message
ayo what 😭 reminds me of clobbering the rcx and r11 during sysret
I think I’ve almost got them all
I think I’ve got heap corruption
(Not mllibc)
I caught my kernel trying to use fucking user memory addresses for shit
And some null pointers
And the heap I have is known to be dookie 💀
If your code dosnt compile it’s your fault
Like deeply lmfao
Getting it to compile is easy
should i compile everything with -Werror 🤔
coz undefined references to functions are not errors for no reason
It can be good but I don’t have it enabled for NASM because it keeps yelling at me for no reason

I'm sure there is a reason
Out of curiosity what does it yell at u
some relocation crap
you compile with PIE or PIC?
nope
do you link with pie ?
do you use the -no-pie IN your ld flags?
what about ldflags
you are calling functions more than 2GB far away
the kernel is less than 2gb in size and it has to fit in the higher half
and if i were things would be fucking up bad
its not about size, show me your linker script if any
as an aside
how tf to i get the build id to work

i need my builds to have this in them
so when shit fucks up i can tell what build etc
and i can see if it properly reflashes etc
okay so
my kernel is fucked
BUT
its not over
im rewriting in C++
with @wanton grove joining maybe for some things
bruh
c++ evil
C++ ❤️
C++ 🤮
c++ ❤️
c++ 🤮
C-- 
I can 
im adding a new clause to my license
no taking my code and putting it in c++ code
now u cant steal my allocator like u did before

no
inb4 rewrite in 3 weeks or less
i am doing a rewrite
no i mean another rewrite

i still have some stuff to do
for inital commit
but its looking good
okay so for this revision
i am dropping support for old add machines
because im going to be implementing lock free agloritms
including for the PMM
oh also
im going for multi arch
x86_64 aarch64 and riscv-64
Things are going to be abstracted from the start
So I don’t shoot my self in the fucking foot
Again
im also gonna support MB2
Prometheus was punished by the gods for cursing humanity with the Multiboot protocol. He was sent into the bowels of the earth and pecked by birds.
nice tho
good luck
also grub specifically doesnt report the proper amount of memory when using the basic memory info function
limine is fine with it but grub aint
like under the mb2 protocol
Hopefully this new version of the kernel
Won’t need rewrites

Because if it does
I’m doing it in rust
You hear that @cyan bison
You should ping multiboot2 shill
cc: @clear bison
multiboot3
nope

can you tell me abit about how it works

this is what i got so far
gonna get the riscv and and arrch64 ports goin
so you got a multiboot2 prekernel I'd guess
should be yeah
in mb2 you start in 32-bit pmode with no paging
you don't have a reliable stack, gdt or idt
so I'd recommend you first get some preallocated area to have a stack
and have it jump to my kmain
btw are you going to go to lmode or stay in 32-bit pmode?
im gonna be goin to long mode
then I'd recommend that your "prekernel" or whatever you call it also sets up stuff like an hhdm
mine does in both x86-32 and x86-64 but eh, the 32-bit one is like 512mb
the hhdm i mean
i could actually support i686 with this then
i think you can support any 32 bit intel
unless you did i686 gcc
in which case you ARE lame
im not doing i386

fairn't
i could do i585
pentium-1
pentium mmx and shi
after booting an mb2 kernel you have an MBI (which is basically an small header + an array of information tags) which is placed in EBX, and in EAX you have the MB2 signature
/home/evalyn/Documents/Programming/C++/evalynOSprime/kernel/deps/nanoprintf/nanoprintf.h:748:(.text.npf_vpprintf+0xbc6): undefined reference to __clzdi2'
fuck
this is for a riscv compile
ahhh, free at last
i have to disable binary format speisfies

i can prolly add an emulation for that tho
you can probably add an abstraction to that
and have an arch-specifc implementation
this emulation works
i think
i stole it

i forgor this exists
lmfao
why tf does npf use the other intrinsic tho
yup workin cross platform
how cursed would it be for my pre kernel to provide the main kernel the limine API?
congrats you made a limine compliant mb2 stub
why bother with mb2 at all tho?
honestly not a bad idea
prob not
you rushed the fuck out of osdev
wdym
why?
for rushing osdev?
who cares?
feeling like an imposteor or somthin
CPUID is working now though
@rotund furnace though genuinly is this better than the old one
Ignoring the c++ memes
I’m gonna have arch::setup()
Which will do all arch specific setups
how much of that is c++ and how much of that is having the foresight of osdev
And then I’m gonna add in utils::panic() which goes to an arch backend
Maybe arch::panic()
I don’t know
idk the boot stage of my kernel provides some stable API to the rest of it, so i can have a bootloader agnostic kernel
could technically make it boot with the linux protocol if i wanted to
or with any other protocol tbh
Though a MB2 limine stub would be useful for other projects too
And be mostly portable
Drop it in get MB2 working?
it'll be probably be simpler to just make your own abstraction over the bootloaders

My abstraction plan was to have functions that would interact with each bootloader seperatly
So I could make a basic MB2 pre kernel
Have it get some memory HHDM and map the kernel properly + identity map its self
Pass some data to the kernel before jumping into it
huh why C++?
Idk
Is it looking good though?
Also I wokeup and I’m going back to sleep
ohh shiii mb gn
ehh personally I dont like C++ but thats just a preference
Shit I think I found the bug
That was crashing the C verison
This is corrupting the heap
Lmfao 💀 @soft snow
Well I’m gonna go to sleep
Fix this in the morning
I’m still gonna do the C++ rewrite though tbh
Nice node
The C version is still really rushed
And not scalable
But atleast I can fix it
And leave it in a usable space
Maybe get bash ported still
only if you dont use what you learned from the previous kernel.
interesting choice to support multiboot 2, whats the thought there?
32 bit support
EW C++ sounds like CPP
booting on grub probably
grub can't boot the limine protocol 
I atleast learnt to
A. Don’t make my own bootloader
B. Make proper abstractions
C. Don’t rush shit
D. Think ahead for things
It’s nothing like that
this hurts to look at
num_files being at byte offset 1,100,000,100,000 is insane
that's a terabyte of memory per directory
That’s fine imo
5 level paging
Make it sparse
Best file system design ever
Just add a pointer to next file blocks
Okay so
EvalynOS
Is gonna be archived
And the new C++ version
Is being renamed
To “Prism”
Unless anyone else has better name ideas
I may come back to this project later
rip EvalynOS
EvalynOS is ded 
Nah I may revive it one day
Though it would possibly be from scratch
Planning for the new version is going well
And the code that’s being done is pretty nice
what's planning
sounds like some nerd shit
just jump right into programming and figure out those details later
Stuff like Linux syscall compat and our own system calls
Yeah well that’s what I did and it caused this mess
:p
ew binary compat
no microkernel :P
Il do a micro kernel later :p
Once I’ve actualy learnt shit
I’m doing a monolithic
And none of that hybrid shit
Okay so
I have almost recovered enough to make heap
For multiboot 2 support I am going to work on the pre kernel
And I will be making it limine compliant
So hopefully any kernel can just import that project
And do a small bit of linker file changes
And then have multi boot 2 with no extra changes
If you already have been using limine
@clear bison so how should I get started with multiboot 2
Also @rotund furnace @wanton grove this will including me making a heap for this shit
Which I will port to the kernel
So I’m not wasting time
im waiting
im reading the MB2 spec rn
then im gonna get it going into C and then long mode
and then loading the kernel 
well the limine template first
then the real kernel
as i have to make a bunch if trabslation shits
solution: copypaste from limine
nah 
im making this public domain
which also technicaly means
public domain paging code for people

will this be for pmode
read the mb2 spec and make sure that you use the structures in the example headers
also, the memory map includes the regions containing the kernel and other stuff that you would probably want for it not to be there
btw do you know how to make meson properly compile for this with assembly and stuff 
I can’t find the limine meson template
no 
idk meson
so make sure you pre process it or something to remove, mark or whatever else you want to do to those regions
Yes yes
I know this existed
Because it’s in my fucking browsers auto complete
Yeah yeah. I’m converting to limine stuff too anyways
Gonna be doing somthing like this @clear bison
And is there anyone that happens to be in here that knows how the fuck meson works

interesting
The 32 bit one will setup for the 64bit part
The 64bit part will then implement the limine protocol
That way any limine kernel can be booted via MB2
🤞
Or at the very least grub
😂😭✌️
MAKE OS
DO PAGING
GGEZ
IM ADDING MB2 SUPPORT


MAKE OS IN MB2
32 BIT VERSION WE HAVE LIMINE FOR 64 BIT

IM MAKING MB2 BOOT LIMINE KERNELS
OK FAIR ENOUGH
THIS IS CURSED BUT SURE
I MEAN IT WOULD BE REALLY FUCKING COOL
AND ADD MORE COMPTABILITY
DOES MB2 EVEN HAVE ALL THE INFO NEEDED FOR LIMINE SUPPORT
IT PROBABLY HAS ENOUGH FOR MOST KERNELS AND I CAN EMULATE SOME
FAIR ENOUGH
KERNELS WORK FINE ON IT SO THERES PROBABLY A WAY TO GET LIMINE INFO BUT ITS INCONVENIENT
OR OTHER CRAP THAT LIMINE HAS
LIKE MULTIPROCESSING
MULTIBOOT2 WHAT DO YOU WANT FROM ME
😭
JUST WORK
IT CANT SEE IT
WHO TF MADE THIS CRAP
wait
it was seeing it as MB2
the command just gives no output

but this does nothing
is it even executeing any of my code
@clear bison do you know what im doing wrong to anger the multiboot2 gods

ngl why TS harder than making a UEFI bootloader from scratch
😭
i remember having an easier time
atleast in QEMU ovmf
do jmp start
instead of cli
check that way
because you need more sleep
also wheres the header at
bug fixing is cheap, send bugs
the error is self explanatory 
wrong header. you probably also forgot to pass the correct tags
MB2 has header tags which specify a ton of shi. you will want to mess with the "Information Request" tag and put in the list it has all the information tags you want on the MBI
Else the bootloader might just not pass them
Yeah I’m probably gonna put as many requests as I can in?
Then get a basic PMM setup to get page tables for the 64bit stub
And then have that get a PMM and heap going
And then get limine shit booting
And pass it all over besides the memory map having stuff marked as bootloader reclaimable?
So then when the final conversion happens to limine stuff it’s easy
The multiboot loader is working on real 32bit hardware
I’m going to work on the 32bit path first
Which will enable PAE and paging
And get the kernel mapped into the upper half
And pass the important info
And then I will add the limine conversion
It will still be code name MB2LMSTB
Because that’s gonna be its main purpose
But it will also be used to boot prism

Btw said specs of machine
Multiboot2 framebuffer gotten
🗣️ 🔥
I am also going to add the ear piercingly loud PC speaker 1khz screech
For if it can’t get a linear FB
Or if it cannot get one below 32bit (PAE)
Or if it wasn’t loaded by a MB2 loader
Oh also I’m porting flanterm and nanoprintf here
🗣️ 🔥
So I can like have debugging info

GDT INIT BAD
But this is with nanoprintf too

So it’s got it all
I’m gonna work on the panic() function proper
So it can like dump registers and shit
Then make the GDT & IDT
Do paging
The basics
Get the kernel mapped and using my protocol
And we are going
EvalynOS ded 
Nah it’s being turned into C++
And renamed to prism.

And I’m not fully killing it off
dayum, i hate C++
u hate me ???
New kernel is gonna be much more portable to archs and shit too
Which is why I’m working on the i686 loader
but not as bad as rust 
Bad news for you
🥰
EvalynOSv3 will be rust

dayum
waiting for v2 in 2040 year
And it will be peak 🔥
Nah I mean after prism gets a good few ports and shit
I can go back and forth and stuffs
2028

prism forever
I’m gonna rename the Chanel for this too
Later™
Once I finish the i686 bootloader

And make the heap
ouch i686
Yuuup
I’m working on the multiboot2 pre kernel
Which will hopefully make things less crap
🙏
Atleast for the kernel its self
Is FRED worth supporting?
There don't seem to be many emulators that have it
Intel SIMICS
#resources message
Is there a proper manual for FRED or did you need to do some digging
I still generated it

Wellll
Using the wikis code

Just pre generated it
16 bit protected mode is big stupid
literally nobody uses that crap
g
Do modern CPUs even have backwards compatibility with 16 bit protected mode?
Eg 286 mode
you need to enter 16bit protected mode to enter real mode
Damn
if they removed that crap windows wouldve been 9/11'd
and thats the most important OS in history anyway 
the other time i wrote a generator for a table like this was powerpc bats
for memory 

nah but they actually dont suck somehow
Though TECHNICSLY

This is faster
To boot
And takes less code space
Okay uhhh @peak cloak what do I need now
I think I need the PMM?
And then to do paging
And then elf loading yeah
if you got the gdt and want to enter long mode then you need everything to load a binary and enter that crap
idk how you gonna load the pre kernel
oh
I have to load the 32bit version of the kernel
oh ok
Prism kernel
Which should just need those things?
And il use PMM as heap 
Or well il make it allocate things smaller then 4kb
Prism™(1)
-# 1. Prism is a registered trademark of @hazy saddle , All Rights Reserved.
😭
fair
i have no idea what the difference is
so fair enough

I do wonder
How small of a stack can this pre kernel use

Because I give it 64kb rn
-### or ##### bytes probably
Maybe 4kb of stack is enough 
Oh also the boot protocol will uhh be like this
Kernel goes in upper part
512mb of HHDM on the lower part + the identity map for bootloader
And then modules get loaded under the kernel

And the structure that the kernel gets will have pointers to them
virtual pointers or physical ones
I’m giving virtual because modules aren’t HHDMd
Also MB2 has a thing that makes me page align modules
So I should be good
why wouldnt you page align modules 
Because stupid 
Multiboot 2
GNUUUUUUUUUUU
@peak cloak I wonder if I should make a bootloader 
Like a full one
Nah
That will be annoying as fuck
i tried to make gregloader for x86 once
please dont unless you're particularly dedicated 
I’m not as dedicated as mint
ehh
you can just disable protection and you'll still be in real mode
wrong
i did it it exploded on me if i dont do it
just with fukced up segments
well this
im not messing with segments lololol 
which will indeed cause you to be in "unreal mode"
least real mode
but you can fix that by just loading something in the segment registers lol
oh
anything?
well, anything that is correct for the current context
ok fair
would 0 be fine?
no
unless you placed your code at like 0x00000-0x0FFFF
when loading the CS
just put something that translates well into the physical address you're now
"unreal mode" isn't a separate cpu mode, is just real mode with the descriptor caches fucked up
loading the segment registers with something valid for real mode will get you out of it
you can't pull this shit off in pre-286 things because if i recall correctly there aren't descriptor caches to begin with lol
protected mode segmentation was added with the 286
Wait would that mean it would check the segments every memory access?
nope
the x86 cpus only really check the GDT descriptors when they get loaded
even implied loads, like when getting an interrupt
So what is the “cache”
they use the descriptor caches to check and do calculations
Or did IA16 have no GDT
i don't think IA16 is a thing :P
pre-286 stuff didn't have a GDT or IDT
no protected mode segmentation there
Well the 8086 :p
But it did have some segments I think?
yeah, just (segment x 16 + offset)
but these aren't really similar to the protected mode ones
protected mode uses the values in the descriptor cache to first check the privilege shit, then check if we're doing a code or data access, then add the base to the offset and then check the result of that against the limit
iirc
if any of that fails you get a GPF usually
or something similar to that
I wonder could you make a 286 kernel 
Like a proper one and crap
Or would it be super annoying
probably this
286 protected mode is slow as frigg
windows 2.1's 286 version used real mode
you also have to actively use the GDT
MB2LMSTB will require PAE for now
i am doing a limit as i am copying the data structs to a diffrent place
that way i can for every memory region check if it has a module and or the executable in it
and ignore such pages when setting up PMM
& same for when mapping modules to special place
which wont be HHDM
aswell the kernel to be loaded here will be considered a "module"
i'm still making my modules work in Modularus 
These are just MB2 modules
So like loaded files from bootloader
that's what i'm doing too for early bootstrap
Your bootloader just gives them to you

And it’s not too bad to parse
Mostly just boilerplate
@clear bison does the MB2 memory map have MB2 strucutes inside "free memory" regions?
or is it good enough to just check for modules and my own image?
eg what does MBI mean here?
multiboot information?
the information structure you get passed in EBX

the thing you get the tags from 
no it doesn't exclude that
so how should i make sure im not fucking that up 
the mbi has a size field in the header iirc
so just exclude from EBX to EBX + that size
and it should be fine
it calls it total_size in the spec
also is limiting the pre kernel to 8 modules a bad idea 
okay yeah thats about right

il add and then round up and round down
@clear bison also since i load at 1MB il assume memory from 1mb to 2mb is reserved by me

for UEFI loading shi at 2mb is safer
Also this ain't really the size or the multiboot2 header but rather the MBI 
just being pedantic with the naming :P
;p
MB2 mbi should be inreserved region

my loader interface
will do this properly btw
wha

it should be marked as bootloader reclainable or some such
I don't even bother reserving it because i initialize the PMM after taking all the shit out of there
i think il need it valid after some stuff?
and my PMM is the only thing that might touch that area during the early init
hm?
to make the new memory map?
the memory map i provide to my PMM already has all the stuff i need excluded
i can then trash everything that isn't the kernel and modules
but the one im passing to the real kernel

dont i need PMM
for like paging
I mean I could use linker magic
To reserve some memory
And know it’s there
And then bump allocate from that?
just grab a fixed area that can fit like 512 memmap entries and you should be good 
whoever the fuck passes more than that probably has a broken UEFI impl
Tell that to @rotund furnace S laptop
That had all those fucked up regions
Yeah but like paging tables 
that was just limine fucking shit up actually
To like map the kernel to the higher half
Somthing like that?
But like
Where should I get memory to be able to map shit

Because I need to map the kernel to the higher half
And i need to map the modules too
And the HHDM
And the identity map
just have some PMM
and initialize it with the memory map
then when you pass shi to the actual kernel you can just map all your crap as bootloader reclaimable
exactly 
lenovo decided to make all acpi tables PAGE ALIGNED
not just that
each acpi table it self was in 1 page of memory
- 1 padding page
for some fucking reason
so each acpi table took up 2 pages of memory
even then I'm guessing there weren't more than 512 memmap entries
The thing fucking flooded the screen atleast :p
Wait fuck
With the freelist
How should I handle reserving that memory
:p
I could go by the order I put things in the freelist
And count pages?
And skip those etc
Wait fuck that would be reversed
@rotund furnace Your the freelist person any ideas
huh?
just, don't put it in the freeslist or use some flag?
my freelist doesn't cares about the used segments
like any good freelist would
:P
I mean when I use memory I need to know I used it. But I can just bump allocate from a found region big enough and call it a day
setgdt and setup_gdt being separate functions is funny
If u do non static gdt ur lame
true
One is to set the GDT registers and one is the function to call from the main file

Do you hate namespaces?
😭
That makes sense if you have that namespace nvm
It’s just a lot of people do shit like “init_gdt” without actually having an init namespacing
Everything goes under setup_
Shit pisses me off 😭
So like setup_idt
Yeah fair
I have an init_ namespace but that’s only within init.c, each name space outside of init has a namespace_init and that gets called within my init_config()
I think this loader protocol won’t do HHDM but do an identity map for the first 3.5gb and then the upper 512mb is for your kernel
And it will map the pages of the kernel binary up there from the loaded module
- the BSS etc
Then it will give a memory map inside the identity map and the kernel will deal with how it wants to do things
And il ensure everything is inside the identity map or the loader will panic 
- there needs to be a region of memory that has no reserved stuff in it for me to use
I could also instead of a PMM
Make the binary have like 8mb of BSS
I can bump allocate from for paging tables
And call it a day 
And then just tell the kernel that entire region is reclaim
Which honestly may be easier tbh
u can also do like mb2 and provide nothingwhatsoever ✨

r u making a boot loader+custom protocol now damn :o
been away for a while so guess I missed a lot..
Nah a MB2 pre kernel
To boot new kernel i686 port
So I have to provide shit

Or atleast fucking mappings
I think il do the PMM in chunks
And then when generating the final memory map to pass
I will simulate all the allocations
Checking for reserved etc
I think your best bet for the memory map response is to record the various unusable and ACPI reclaimable, etc. regions ahead of time. Then all you're left with is accounted for in the bootloader allocator, which you later read to find the usable and bootloader reclaimable memory.
This way you don't have to worry about 10 different types of unusable memory accounted for in the bootloader allocator.
the issue is tracking the reclaim memory properly. im gonna pass a memory map thats the MB2 one but with the reclaim stuff set proper and the rest is whatever grub said™
im not sure a good method for tracking such is
i mean i have ways but they seem bad™
Basically what I'm saying is track bootloader reclaimable and usable memory in one structure (the bootloader allocator) and literally everything else in another (e.g. some heap-allocated collection).
The lbp memory map makes more promises than the mb2 memory map like handling overlapping regions, alignment and the kernel + modules not being marked usable.
Same goes for the rest of the protocol: mb2 is very barebones, limine defines a bit more.
Yes but I’m working on the 32bit path right now. I already am handling the modules properly + using the tag to make sure they are aligned to page at the very least so I am able to see if a page is in some garbage region.
It’s just when I allocate from tree memory I don’t know how to track what I have used so I can mark it as reclaimable when I pass it to the real full kernel after mapping & such
Ah I assumed you were still doing a limine shim.
That comes after I get 32bit working
Which still needs me to solve this issue to pass it to the 64 bit pre kernel which needs this information
Its still nice to follow those things even if its 32bit (e.g. make it a nice entry state for the kernel)
Oh yes I am gonna be making a much nicer entry
For 32b I’m thinking lower 3.5gb is identity mapped and the 512mb upped is the minimum load address
Bootstrap your heap with some statically allocated regions?
And il be giving a full structure with all the information needed to boot
Issue is I’m unsure how many pages I’m gonna need to use because of the kernels BSS & other things
And MB2 puts me at a fixed physical address
So I’m limited on that afaik?
I'm not saying have your whole heap be statically allocated lol, just enough to get your pmm and p/vma up and running.
Then you can use those as normal.
Oo I could that to bump allocate a heap to hold data structures for things I allocate?
Eg the “used” list
Then I can combine that with other reserved regions to make the final memory map
You could
Any other better ways you’d think?
I'd either do it that way or try bootstrap things using only the stack. The latter is more annoying imo but perfectly doable.
I think I have ~13MB to work with so I can just give myself 8MB of heap and call it a day 
Given a load address of 2mb
8M is massive lol
Numbers from the days when ram was cheap 😔
How does 640kb sound?
That should be enough for anybody
I hope you dont need more than 10 stacks 😆
I bet I could get away with a 4kb stack tbh?
Maybe 8kb
It's a bootloader but I'd say use an 8K stack at least
Fortunately you're not writing it in rust, otherwise you'd need 16k just for hello world 

It’s just the pre kernel so I just need to make the stupid freelist PMM and some basic ass paging + the bump allocator for the used list then giving some info and redoing the memory map nicer
Yeahh I may want to do more than 4k 
also put a guard page at the start (the lowest address) of it
its not fun to debug when you run out of stack space and start getting random corruption (granted a 4kb guard page isn't fully reliable either if you manage to create a large enough stack frame that it goes over it, though even then its likely that at some point you'd get an access to the page when accessing some variable or smth)
I’m not sure how I should do that without an IDT/Paging? I will provide a guard page or 4 for the kernel though
ah yeah I somehow ignored the part about pre kernel lol
setup a stack and push shi?
The information being the used list so I can make a proper memory map
Which then I realized
I can just do the same thing I do for the stack

And allocate it in BSS
And then I can get PMM and track used shit etc
my mb2 prekernel parses shi before enabling paging and then just pases the info through the stack while at the same time marking itself as unused in the memory map, that does mean i have 2 freelist pmm things but eh
the actual kernel one is more complex
I mean I’m gonna parse it too before that
But after paging is enabled I have to map the kernel up there and make the final memory map
Wait I could just
Make the tables first
Then enable it?
But that leads to the same issue so
Won’t make any difference
hmm?
the map is just for physical memory
after you map shi in the higher half you don't really have to care were your kernel is physically apart from not marking it as usable
well, if you don't make the tables first how are you gonna enable paging in the first place :^)
you would get that sweet
i may change this to "bmb2" or better multiboot 2 
and i think the fact its gonna be public domain is gonna piss off the FSF
yeah i am confused about the flanterm issue
it fully fails in anything but O0
and these vales look right
nooo big corpos can use it 
What if I want big corpos to use it huh
What if I want them to win
fork ritual
Memory map is properly being parsed
And reserved regions removed
So I can make the PMM

And my memmap code is flexible enough to allow me to remove the regions I used up from that
we as humans also fork, its called mitosis 
nicE
@wanton grove time for you to make i686 paging btw
its the best one
Jkjk
MUAHAHAAHAHAHAHAH
😭
I’m actually just marking no PAE as unsupported
And it will say talk is cheap send patches
oh wait its pae paging
fuck u
does limine c template works ?
you know PAE is basically useless in most i686 systems cuz most didn't get to 4G+
the only useful shit it could add is the NX bit
but that's not always implemented
Yeah but the paging scheme is more similar to x86-64
And most i686 systems support it
So it’s what I’m targeting first
it's also a bit slower on i686s 
i think you should just have a PAE and Non-PAE build

