#Nyaux
1 messages Β· Page 5 of 1
nah u just dont test it enough
i cant make something good
i wish i could just see the memory
like SEE them
see their values and see whats happening
nah dont be like that, you have to start somewhere. If you're paying attention while you read others code and writing your own you'll get better with time.
taking a break is good too π
one reason you do so because you are trying to make it work without stopping for a second and thinking about the best way to implement it. Before even writing code, design it, then code it following that design. If it does not work instead of ditching the design continue by following it further.
Where would be the fun if you could write perfect code from the beginning on
okay im back
i fell asleep
time to debug now ig!
OKAY IMAGE LOOKS VALID RIGHT?
IT LOOKS LIKE A VALID ADDRESS
lemme dereference the data
yep 0xbb as EXPECTED
OKAY AND THE ENDING ADDRESS
LOOKS VALID
LOOKS CORRECT RIGHT?
thats the limit
hmmm doing this causes this
how???
so memsetting causes this
for some reason memsetting img is causing something to happen to the framebuffer
huh????
like what?????
are you sure your pmm isn't perhaps allocating pages of the framebuffer as free?
or more generally, anything not usable
let me check
CAUSE THIS SHOULDNT HAPPEN AT ALL
yea?
same thing when calculating the hhdm?
so something weird is very much happening
VERY weird
you miss too much code?
your screenshots are incomplete
okay one second
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
for calculating the hhdm limit in my vmm ^
okay ill like put everything onto github
se
cc
sec
it has to be how im calculating my vmm hhdm limit
because the framebuffer address wouldnt be outside the hhdm right????
RIGHT????
UMM???
yea thats correct???
so why is it calculating the hhdm limit wrong

hhdm limit is the end of the hhdm mappings
in the virtual address space
this is what should be expected
but for some reason
calculating the hhdm limit seems to not be working properly
I noticed that you dont count reserved pages in vmm.c:vmm_init(void)
Is that related maybe?
no cause
For base revision 0, the above-4GiB identity and HHDM mappings cover any memory map region.
For base revision 1, the above-4GiB HHDM mappings do not comprise memory map regions of types:
Reserved
Bad memory
limine spec says
the hhdm mappings in base revision 1 do NOT include reversed
I thought thats supposed to mean limine doesnβt map them
huh??
/ doesnt setup page map entries for these areas
if theres usable - reserved - usable areas the end of the second usable area is still at usable1.length + reserved.length + usable2.length
reserved just means that theres acpi tables there for example
instead of ram
well acpi tables are usually acpi reclaimable or acpi nvs :^)
which i do count
reserved is stuff like bad ram, stolen memory, mmio, etc
i wanted to make a point here : )
but yeah mb
so i still gotta calculate reversed too?
yes
okay makes sense
that solved everything
no weird framebuffer fuckery
time to test with flanterm now
!
by stolen memory you mean like bootloader stolen memory? since that has its own memmap entry type afaik
or are you referring to smth else
igpu stolen memory
GUYS IT DOESNT GPF ANYMORE
GUYS !!!!
LOOK AT THAT
ITS WORKING
TIME TO PUT IN THE IMAGE π
THANK YOU QOOKIE AND @ionic jetty
YALL ARE SO PRO
π π
i dont like the anime wallpaper too much so im gonna design a clean logo for Nyaux
in figma
#graphicsdesignismypassion π
Ligma
ballz
ligma
This is the most comprehensive list I could get of official Windows Japan anime themes as well as the Madobe Nanami desktop buddy.
maybe this?
we got naenae in here too?
haha
nahhhhh, i actually wanna give Nyaux some self respect
give it a proper logo and everything
if im gonna go home from school everyday to work on this project
i need to give it some like respect
@kind root isnt that right?
okay ill remove them
ill clean up the code rn i suppose
do that
yep
let him have fun before reminding him of the OSDev pain
he just had the oberrow nighmare
nice
what r u saying nice to lol
π
i think i am going to add a new feature to the Limine protocol that will allow the loader to pass back the flanterm parameters used by the loader interface
including the wallpaper
including the shaded box and everything
what about just a parsed config feature
nah
is it really necessary tho? For one it would remove the fun
bring back limine terminal 
limine graphics driver
yea to be fair for a bootloader it wouldnt rlly make sense
limine does its job, the OS has to figure the rest of the shit out. if the OS wants a wallpaper it can load it itself
that shouldnt rlly be up to the bootloader to figure out
even if it looks cool
limine already does so much
retvrn to the days of the limine terminal where everything was held together by hopes and dreams
that would require less than 100 lines of code in total to implement (in the kernel), even much less. And I am referring to the background, terminal window with alpha blending and font rendering
it doesnt require a lot of code from the OS anyway
I was talking about that exactly
yea
anyways i've cleaned up most of the code
variables names actually make sense now
added some comments to explain a few things
i mean
no one forces you to use it lol
if anything i'd do it for my sole personal gain because it would be handy to me lol
sure

it already loads all of that, it's not bloat to just pass info over to the kernel (on demand)
nothing compared to ext support
and like any serious kernel will have wallpapers loaded and displayed by userspace, so why facilitate this
i guess for like boot time log?
but idk
for whatever people use a kernel console for
might as well add the option to load an image into the framebuffer before passing control to the kernel
only reason im loading wallpapers at this state is cause i wanna have some fun before i have to learn about the hell that is APIC 
but since you can load a kernel module and do it yourself in 5 lines of code idk
no that's stupid lol
exactly
thats easy
but whatever
but yeah why not have some fun in between
yea
yeah, the point is to have a seamless transition between the bootloader's console and the kernel console, preserving the wallpaper, margins, font, scaling, and everything; all the parameters flanterm needs
the real benefit I'd imagine is that you won't need to resize the image data to use for the background since the bootloader already did that
why is this transition needed?
but then you can also set for the bootloader and kernel to boot into different resolutions so
your kernel can have no kernel console, no one would force you to use it lol
yes, i thought about that, i'd either have to not allow that or potentially reinitialise the console inside the bootloader to the new resolution
add the IPA right below the logo
IPA?
phonetic spelling
sure
mint only u know how to read it
not true
haha that's what I thought
if anything i am quite bad at it
regardless
it would look stylish
i think
like big logo, and then in small font below it the IPA
has a feature been proposed to allow smp cores to not go crazy before enabling them
to like put them to sleep
and make them interruptible
to wake em
no
that would involve loading an IDT on the parked cores
plus they don't "go crazy"
like sure they hit 100% but realistically only for a split second, and the pause mitigates any real power draw spike
so thats out of question for you?
no
i am just saying that that would be needed
and also pondering what would anyone gain from this feature
i mean it would be a cool optional feature to enable if you want to test on smp systems without having smp support for example
man i suck at designing logos
i mean it doesnt really provide anything
but i just thought it could be nice
up to you : )
but for that you can like
not have the SMP feature
lol
if you don't support SMP why would you have the feature, right?
and if you have the feature and simply never spin the cores up for whatever reason, at that point it's kinda on you
okok stop being right i just thought it may be nice
obviously its not gonna add a lot of value
hey i am not trying to be right
i am trying to understand the use case
before i go and add it
and here it seems pretty redundant
i dont know any excpet for reducing cpu load while not having provided the cores with their function pointer
it just bothered me a bit when I ran on real hw wihtout smp
that my pc went to like 60% power usage
which surprised me since I thought that pause calms it down more
it depends on the uarch
cant you just tell them to go to a cli hlt loop or something
and you also have to keep in mind that it's only meant for small durations
inside the kernel
sure
it was just an idea i'll just admit it isn't very useful okay 
it's okay
i actually love discussing this
and trying to figure out if there may be a reason to do things differently or add new features
forgive me if i sound like i am trying to shoot the idea down, i kinda am
that's the whole point, shoot ideas that don't add much value down (after considering them of course)
else we'd end up with a trillion features and 99% of them redundant
ntfs on limine pls
how do u even track this
which is also why i am happy when people try to shoot my ideas down like what i mentioned earlier with the thing
anyway pause is not enough lol
p/c state management is what u need
thats a lot of complex code
i dont but it got hot and the fans went crazy, 60% is a guess
pause is better than no pause
man i suck at logo design
it's only meant for a very short duration of time
well yeah thats bloat for a bootloader anyways
thats my opinion about smp in a loader anyway, but yes
like realistically, even without pause altogether it shouldn't be relevant when the kernel is supposed to spin cores up in a split second
but pause does actually reduce power consumption quite a bit
ye
feedback?
nya user experience?
i suck at making logos 
alr
i can take this logo
make a uacpi logo
yes good idea
oh im ridiculously bad at anythign art
perfect
lol
and then add the IPA spelling in the ball
is that underline aligned to be above the bottom of the characters
why are you asking me lol
sorry wrong mention
thats figma
what it actually looks
give me the IPA spelling again
/Ι²Ιks/
so it can always be worse
copyright does not expire that quickly
ehhh
perfect
imagine using pcem
and not running it bare metal on a Zen 4 CPU
here ya go
well
it's not Zen 4
liar
and here it is on a real floppy drive
alr
what about trademark infringement
nice centered screen
there isn't any
ux isn't a trademark
but one may argue ux is easily confused with unix
i think this looks good
wdym?
too generic
looks okay
the A is cut off
is there anything else i can add to it?
Alr
oh yeah, idk
basically you did not run auto adjust
it happens on VGA
yeah
the monitor was connected through VGA to the 2004 Athlon XP desktop with a real floppy drive
it's not happening here on HDMI
to the Ryzen 3 2200G machine
oh
well no shit
just noticed both the machines are AMD, lol
AMD good
I mean, you sure could try
but honestly I'm more interested in whether it works on a 5150
it's mostly likely gonna work anyways
but anyways, @surreal path sorry for filling up your thread with discussion about another OS

nah its good dw

alr
i tried changing the text color to another shade but it didnt rlly look quite right so im leaving it as pure white ig
i did try to make it more readable
i like this shade
it looks like a slider
π
here is the reason
this too
this three
looking better?
i think i will add the gradient to the nya text too
make sure the background image is royalty free
good logo for a js framework
π
yeah what he said
is that good or bad
its not about the logo tbh
its just that ux part
somehow tells me this is gui related
okay so i will need to change the name then
(for the third time)
Nya-Something
HMmm

actually nah im not changing the name
i have idea to fix the logo
better?
i think this is better
what if u take aux in the circle
ok wait
nah doesnt rlly work
i think better
man graphics design is hard
this is much better
just like
add the shading to the IPA part too :p
and yes, put the circle around aux like infy said
yeah but center the circle on the u
also shade the IPA a bit more
it's barely legible
okay
alr cool π
looks nice
sadly its low resolution because limine gives me a resolution of 1024x768
for the framebuffer
is there a way to force limine to give you a higher resolution or
not possible
yeah in the config
read the docs i forgot the name
I think it's RESOLUTION=1920x1080
yea okay that worked
thanks
it works!!!
cool π
now one small problem
wslg sucks
poo poo
i have a usb with arch on it
maybe arch or gentoo
what in tarnation
Most pro singing ever
what
what
Iβm gonna go to intel and ask them how they pronounce apic in fact Iβll write an email to intel rn
π‘
If that ever becomes public youβre gonna be jobless for the rest of your life
π
Out of all roasts I've heard this is unique
bro
no one pronounces it A P I C
exactly
We should email intel about it
ask them how they pronounce it
Bet theyβd say apic
intel can suck my fat APIC
they made X86S and for that deserve nothing but their stocks to crash
whats wrong with it
also its just a concept that doesnt exist
yes
correct
X86S is a stupid proposal, i hope i never live to see the day a real X86S CPU is manufactured
if your CPU can't run MS-DOS 4 natively it is not worthy of the title "x86"
soo anything specific u dont like?
breaks compat for no reason, compat is the biggest + of x86
well i dont work in die manufacturing so i dont know how much that backwards compat hurts the chip size
or costs
netiher do u i think
i talked to people in the industry
they say the main thing it could do is alleviate validation cost/time; but whatever it is i do not believe it is worth breaking backwards compat for
if they really wanted to go all out they should just redo the encoding :^)
lol thats true
the proposal could have easily originated from some people without the input of 90% of the rest of the company
i believe it was more of a marketing stunt than anything else
but that's my personal belief
i do agree
if you're gonna do X86S then ditch x86 entirely
i'd rather see Intel move to making ARM chips or whatever
i mean you can keep the source-level asm syntax but just reorganize the encoding so things aren't as long
e.g. REX
i mean an extra byte because you want a 64-bit operation and not a 32-bit one kinda stings
esp because byte/{,d}word is baked into the opcode for some instructions
it's still comparable in density to aarch64
yeah the average density is about the same as on aarch64
i've seen 4 vs 4.5 bytes/instruction for aarch64 and x86 respectively mentioned, but i have a feeling that those figures fail to account for constant pools you end up needing on aarch64
for 32-bit value constant loads or whatever
X86S is literally just "x86 but we now hate legacy OSes so we refuse to run them despite the CPU still needing the same exact decoder anyways because we don't actually drop 32-bit compat mode"
it stinks
mov eax, 0x11223344 is 5 bytes but ldr x0, =0x11223344 is 8 bytes total (because it's actually a pc-relative load from a constant pool)
you sound gay
any guesses as to why?
that could be true, yeah
x86s is still less DOA than riscv
well of course
if Intel wants to push it by force, little can be done
this is why Intel must fail
go bankrupt
disappear
well arm is not much better
we're getting there chat
the mint intel lore is crazy
mintel
went from #1 fan to #1 hater
yeah amd is better
why did they change it
was it like super early amds?
yeah
cuz it feels like kind of important abi break lol
well, relatively super early
i don't remember exactly when they changed it, i'd have to look it up
linux probably wont even boot if brand string contains random garbage
i hope Hezbollah bombs Haifa to the ground
too much?
too much
this dude sings better than you ngl
Sorry I havenβt been doing anything I have just been trying out different Linux distros for the past few hours, Iβm just gonna stick to arch cause at this point idrc
I need get shit done
π‘
I feel like no one here dares to suggest any distro
wondering why
who knows
idk cause the distro u pick doesnβt rlly matter
someome might naenae you you must know
what????
no one ever dares to say that
why???
you either maintain your distro feelings to yourself or start a war over distros
and debian is superior anyways 
Iβm just saying my situation thatβs it
what distros have you tried so far
arch, gentoo, pop os, ubuntu, manjaro
arch is too unstable without spending half a week making sure everything is fine
arch is fine itβs just too much configuration and I want a working system rn
arch wont just break
idk on my main desktop it just freezed sometimes, and I had not done anything particular
#installingfedora cause all I fucking want is a system that isnβt buggy, stable, and works with my NVIDIA gpu well
is that too much to ask
thats called windows
π
install gentoo
I told you we would start a war, but you did not listen
and that you was actually me
π
how so
Compiled the kernel, rebooted, couldnβt find my root partition (probs screwed the make .config), tried using a distribution kernel. Couldnβt get my WiFi card to work because I had forgotten to install something like network manager, tried again, didnβt even boot
itβs pain
you spend hours installing not to mention the 20 minutes compiling the kernel
unironically works out of the box and doesnt need 10 hours of config and package manager massaging
if someone installed gentoo and configured it for me Iβd honestly be happy. But itβs too much to setup so
also no need to worry about dumb ACPI breaking ACPICA
Linux should use uacpi 
or dumb ACPICA breaking ACPI
@kind root Do this
okay so skill issue got it :^)
bruh
could be considered as an rfc a few years down the line once uacpi is more fleshed out and complete
but its a lot of work as so many linux files use acpica api calls directly
Ok maybe if I had like a week, Iβd be able to install gentoo. But I donβt have a lot of time and school and I need to like actually work on my OS
although uacpi and acpica api is mostly same level of abstraction so not too hard to convert
Doable
Do it 
its like months worth of work
The payoff would be huge tho to be fair
besides clunky api and interpreter unsafety + nt incompatibility its mostly fine
The obvious solution to this is to make NT use ACPICA, so then firmware developers have to follow how ACPICA parses AML to get windows to work /j
nt interpreter is way more advanced than acpica but simpler at the same time
no global interpreter lock
no two pass aml parse
no (trivial) use-after-frees
also "doesn't actually follow the spec in some cases"
some 
when making uACPI how much did you actually look into the spec
the interpreter part
every interpreter can have some spec incompatibility as a treat
yea what she said
only for the bytecode encoding
and even that is broken for some opcodes
aka spec tells u e.g ByteData
but its actually an integer object
so u parse bogus data
How'd you even find out how NT parses AML
btw do u run gentoo qookie?
liek what specifically
he works at Microsoft (real)
the no two pass?
yeah when i was looking into how packages store named objects for example
u know how i have nt hooked up in a debugger
wow u actually do
no not really but continue
And the same cpu I used to have with my old laptop
i dumped the packages and instead of storing the actual named objects they store the path as a string
for like a year and a half at this point
how has it been
i like it
so the path is resolved later on by the actual user of the package and not the second pass of the aml parsing code
as a result aml blobs often have packages pointing to random garbage
because its just unused code
but it trips up acpica as it attempts to resolve those
when will they update the livecd so my WiFi drivers can work 
You can do it from an arch install????
what is hyfetch
i set up partitions and the fs, extracted the rootfs tarball onto it, chrooted into it, and did the rest of the installation
neofetch but with pride flags
i see
I finally ran sudo apt update on my wsl install and 229 packages can be upgraded. Run 'apt list --upgradable' to see them.
you can do it from anywhere, since the install instructions basically tell you to set up partitions, and download and extract the rootfs tarball onto the new root fs
as long as you can chroot into it
i did have to reboot into a liveiso to shrink the arch partition originally, but after that i just rebooted back into arch to do the actual install
do yall think I should spend the next few days setting up gentoo or use fedora and just work on Nyaux
no Iβm genuinely considering it
The best linux distro is obviously debian
I think honestly what Iβm gonna like do
is just try setting up gentoo cause I rlly like gentoo
Even if it takes me days
another one bites the dust...
wdym
you'll see...
???
just use fedora lol
fedora works okay
My CPUβs fast
I compiled the entire Linux kernel in like
20 minutes
u didnt compile the entire kernel
u compiled whatever subset of drivers was selected in your config
anyway i wouldnt waste days on this
π
cant think of a more boring thing
making a distro of the NT kernel is probably more amusing if you like reverse engineering
Actually
finish NyaUX
and make your PC run it
ah yes
let him get back to you in 50 years
anyway
I got dumb stack corruption bugs to deal with
and memory corruption
and scheduler bugs
i thought u had asan
Go fix em
Turning on ASAN causes them to happen 
bro
except for the scheduler bug
how do u even manage to produce so many bugs
I'll boot into my kernel, and debug the first of the bugs that comes at me
Skill issues mainly
lol
stack traces are also fucked so I can only know up to one frame of the stack
a lot of my debugging now is guess work
fix them
yes
This time
have you grown as a coder
good idea
I'll try to get a UBSan and ASAN as soon as possible
So I have more possible ways of testing
and detecting bugs
anyway enough cluterring this thread
I'll say any progress on the bug in my thread
ye
cringetoo
i wanted to do that at some point but i have absolutely no clue how windows even starts up and it would be a fuck ton of reverse engineering which im not very good at so i just gave up after thinking about it for a while lol
also microsoft probably wouldn't be very happy if you did that
why
im just writing code
im not publishing their code or doing anything illegal
i am almost 100% sure that it would be just fine
it would probably be very useless but whatever
What I did was get a kubuntu live cd and install it from there
Turns out the laptop Iβm using has terrible Linux support so back to windows I go :)
classic
but the linixs told me linux works on every laptop now
Does it run Linux yes? Is it a horrible experience with fans at constant speed and the drivers being hell? Yes
acer sucks
shouldve bought uhhhh
Asus or who tf
Big
Sorry i have an exam this week
my dads forcing me to study π
by the weekend ill be back and we'll be able to create some epic gamer progress
π
APIC driver!!!!
π±
and maybe the lapic timer too if i can cram it into the weekend
schools lame π
When I still was at school I used to not do anything and spend my entire time there either playing on my phone or studying osdev related things and trying to figure out how Im gonna implement things
my parents are strict so
cant rlly do that
so sad π I don't have school this week
on my latest exams that I took last week and the week prior to that, I didn't even study, I'd just study 1 class before it and I got 10/10 in almost every test
I KNOW ITS BEEN A FEW DAYS BUT IM BACK !!!!!
I ONLY HAVE LIKE 1 EXAM LEFT !!!
TOMOROOW AND THEN I CAN WORK ON NYAUX
π
also i got gentoo working as well
π
(idk why it uses so much ram at idle, even with just the tty it takes like 300-400mb of ram? must be because i didnt compile the kernel and just used the gentoo dist bin kernel)
gonna try booting nyaux on real hardware for the lols
4gb ia way too much
you might as well use Windows 10 with wsl if you are fine with such memory consumptions
ima fix by compiling my kernel
search on the internet, else change distro
why wont uacpi compile π undefined reference to `__popcountdi2'
grrr
it worked on wsl!

what tf does this mean
im looking
like wait
ok fixed π
adding the option -march=x86-64-v2
fixed it
bro...
it worked on fkn wsl
what tf is going on
what da flip
why is it giving me an address from the hhdm
what the flippers
idk i guess?
i dont know why this is happenin tho
this makes no sense !
what???
what the fuck?
ummmm
interesting
umm why is uacpi giving me this bogus size
did u enable sized frees or are u just reading an uninitialized register
i enabled sized frees
u have a function with that signature, that doesnt mean u enabeld it
thats not how this works
in a C file?
yea
do u know how C works?
oh i forgor
again
i know C works i just remembered this
again
im stupid
woopsies
oopsie
yea it works now
!!!
thanks copyobject abuser for reminding me of the same exact issue i had before i had completely forgot about !
np
so get the madt?
where is uacpi_madt_signature defined?
thanks
when were the acpi table structures added?
i was looking for it a few days ago because i swear ive seen it
but i couldn't find it
just yesterday lol
out table?
just a pointer to a pointer
^
so i need to create a uacpi_table
yup
ok cool
i don't think you're supposed to free those btw
you dont
as i thought, just something to keep in mind
yea
it most likely is one
i never knew!
I would check the return value but oh well
how tf are you living without a proper print function
serial_print π
kassert might be a bad choice if it's removed with NDEBUG
which doesn't print to the screen...
Use it
yea it prints to serial
i restarted my project today and first thing i did was add nanoprintf
lol
i should start a thread for my thing soon too i guess
Do it rn
it says that after the header theres the local apic address
nah i dont have nearly enough to show
Look at acpi_madt
uacpi gives you all the structures in acpi.h
And cast the table->virt_address
ah okay π
i'll post it when my memory allocator survives uacpi stress test :^)
That table is variable length and has a list of entries you will need to walk and record
thats an address
Yea
yeah my point is that you don't have any centralized logging
btw don't use that lapic address, it doesn't reflect the actual value that's in the msr that's per core and might have been overwritten, shouldn't matter in most cases but it's probably the best to read it from there and mask off first 12 bits since it also contains some flags iirc
huh?
nya :3
the madt is a packed array of entries
which has lapic entries, ioapic entries, ISOs
isos?
Interrupt source overrides
what does that mean
Read the spec
pic irq number -> gsi
spec in the sdm right
ACPI represents all interrupts as βflatβ values known as global system interrupts.
i am not following
this is quite confusing but thats 5 lapics and 2 io apics
and whatever 192 is which acording to ACPI spec is a GIC Distributor (GICD)?
idk what that is
You fucked up the parsing lol
make sure to increment the pointer by the size of the structure you're reading
Gic stuff is arm only
im just doing this for loop
the combination x86 and arm machine
Bruh
the entries are not all of the samee size
im probs doing something stupid
yes very wrong
oh makes sense
β οΈ
is madt->entries->length in bytes?
or
okay
including all the entries and the header itself
Entries is an array
The length of the table is table.hdr.length
aren't the entries inline?
yeah but the length of the madt is the size of the header + all of the entries, right?
Yeah
right that's what they asked
This is just wrong
please tell me this is correct π
yes that is correct
okay
it gives you the lengths of all entries in bytes
now you need to iterate through them, the array starts at madt->entries and ends at (char*)madt->entries + length_of_entries
each iteration you need to advance by entry->length bytes
until you reach the end of course
alr
you can do something like this
size_t offset = 0;
while (offset < length_of_entries) {
struct acpi_entry_hdr *entry = (void*)madt->entries + offset;
// ...
offset += entry->length;
}```
i guess i'm spoon feeding but eh
i was doing something VERY cursed lol
Yup
so we got 1 lapic
an ioapic
a bunch of "interrupt source overrides"
and a "local apic nmi"
whatever that and interrupt source override are
175 is probably wrong
bruh
uint64_t length_of_entries = madt->hdr.length - sizeof(madt->hdr);
size_t offset = 0;
while (offset < length_of_entries)
{
struct acpi_entry_hdr *ent = (void*)madt->entries + offset;
serial_print("WE GOT AN ENTRY!: TYPE!: ");
serial_print(itoa(wow, ent->type));
serial_print("\n");
offset += ent->length;
}
this is all im doing lol
