#EvalynOS
1 messages · Page 8 of 1
I have got stack smashing protection implemented now and I made the panic work a bit better
It now goes through assembly for panics not from interupts
And it will build a frame and pass it to the function for interupts
So it’s a lot cleaner for things
no error code for gpf :P
oh nvm you do print the error code
selector index 4 in your gdt is cooked
or not wtf why is bit 16 set?
i dont fucking know
idk something is broken
this is how it prints that btw
and im 99% its corrrect
index 4 should be okay right?
ignore it
for now atleast
the errorcode is trashed for some reason
oh found it
error > 16
😭
i assume that's meant to be >>
Il push to git tomorrow with that fix if this isn’t fixed tonight
Sleeping in about an hour

They are ignored on 64bit though right
Oh shit really
yeah
@rotund furnace also still dies
What’s its syntax for it
works on my macine 😭
WHAT
unless you didn't push something
Dev branch is up to date
I'll have to check
Is this a fucking distribution or qemu or toolchain bug?
Everyone has been banging at thier computer over this
AND IT WORKS FOR YOU 😭
lmfao
@devout path @viral bison look at this shit XD
how do you boot this shit on real hardware
@rotund furnace To be fair it did make me add a good chunk of debugging shit for the dev branch
you don't make an iso file
Make a USB that’s GPT formatted with a FAT32 partition with BOOT ESP set
And copy over the EFI folder the limine config the kernel.elf and initramfs
kk
@rotund furnace What’s the prognosis doc?
im dealing with linux being stupid hold on
All good
ok well the usb drive I tried it on is dead ig

what the fuck why is this shit so broken
ok well it has the files on it so fuck it
Holy shit
How long is it running
It’s actualy stable?
Can you run bad apple twice to have two of them on?
how the fuck do I run it twice lmao
Even if the logs fly by it should still track key presses right
oh lmao
Just do “badapple” again
MacBooks don’t have a PIT
(intel mac)
Iirc
oh it failed on serial
Lmao
But holy shit it’s been working this entire fucking time 😭
What’s wrong with my computer
how dows my compiled version work
I wana check if it’s my QEMU or if it’s my compiler toolchain
let me see if it finishes
It will loop btw
oh
I don’t have a way for apps to uhhh exit
well if it does that's a success ig
they are diff binaries
so idk
mines smaller????
anyway yeah using that binary works
and it's looped like once or twice by now
Huh
Thats the one I complied with a few changes for the GDT
And some formatting changes
So WTF
well it works on my machine lmao
What’s your kernel version and QEMU version and destro?
qemu-system-x86_64 -version?
6.17.8-2-cachyos and qemu 10.1.2
Do an update XD
yeah you right
oh shit
Free gigabyte of storage space thank you
@rotund furnace I mean it’s also broken on TCG
So fat chance it’s a Linux kernel bug right

hmmm what
(Imagine if we found a Linux kernel bug)
If you tell QEMU to emulate instead of virtualization
well it works on my machine 😭
with tcg
it gonna take a while to update my shit rq
We are both on the same distro and it should fucking work
not a problem on nixos btw
Immutable or somthing
wait but does it work on real hardware for you?
damn
I’m on a 5700x tho
Yeah
that would be crazy if it did
after they ditched sysenter/sysexit
oh well
stange
im updating 600 packages atm
I have 1gbps internet so it’s fast as fuck unless you have one bloated ass package looks at amd rocm
AHAHAHAHAH
And it’s symmetrical fiber too
I used to be on 10mbps upload for years
so uh quick question what do you do on boot failure
because I forgot to shutdown my laptop
and now it's hot to the touch lmao
I think I have forgotten some halts in some places 💀
wait it died on serial
which isn't fatal
oh it spun somewhere
im gonna assume ps2 setup because it's right after
Ohhh it’s probaly stuck spinning checking serial port?
no it printed that it failed to init serial
That’s normal
If there is no seriel port it says that
It’s prolly this
Because I don’t have a timeout here
SORRY 😭
I think I did leave off some halts on critical panics as a way to detect if it crashed while you were away
“If the fans are loud something is prolly wrong”
(Not the best idea)
I also have a way to make the kernel panic make a Wii noise when it dies
that also wouldn't work on my pc because the fans are also at 100% always
oh im sure that doesn't get annoying
That’s why I made it a toggle 💀
@rotund furnace How did the update go
oh it just finished
sick
now I gotta update my hyprland plugins 😭
yeah it still works
I even rebuilt and it still works
lmao
@rotund furnace How do I switch to the dev branch and get the proper files?
Because I cloned it and switched to dev and it dosnt have the updates
iirc you need to pull after switching
I did a reset and it worked
the kernel?
wtf?
I updates all my packages
i just did git clone ssh://[email protected]/EvalynGoemer/evalynOS.git --branch dev
cpu bug?
Shits bad
I guess?????
I would help but I can't even reproduce the bug?
try cloning the repo on the dev branch and seeing if that works
Do you have any amd systems on zen3?
nope sadly all intel
Yeah maybe???
I did try dev branch clean
@rotund furnace
still fucked
what the fuck
oh the error code is broken again 😭
oh yeah it's broken in my build as well
So uhhhh well shit
maybe try reinstalling qemu
because it seems like a qemu problem if not even tcg works
which qrmu package did you get
pacman tells me local/qemu-system-x86 10.1.2-3
what the fuck
😭
What the fuck
@rotund furnace On a scale of one to 10 how fucked am I
I have never seen this before so you get to name it
Ligma
My kernel has Ligma
y was i mentioned here xd
ligma ballz
kernel not work for me
but work for water
@rotund furnace it works in TCG for me now
just not KVM
what the fuck
fucked
rainbow kernel panic
alright i am back to do more work
im gonna checkout an older commit before i redid interupts
just to see if somthings iffy with thoes
im on commit a84fd7997a integrating newer code and ive got the GDT in and i found some potental issues with it now as i had to change some stuff
yeah idk where i was goin with that. i dont have half the things i need there because of pure c based innterupts 
thats an uhh not so happy stack for sysretq
it somehow diddnt fault on that?
ohh thats sysretq
not iretq
why is it working if i single step in GDB 
and it skips over the syscalls and wont show me what happens when the IP changes
@rotund furnace you mentioned it worked on real hardware before right? leme test this myself
it only crashed when i put continue??
Yeah it crashes on real hardware for me @rotund furnace
Let me test on an Intel machine
what the fuck
I think you are doing some ub fuckery that just works on intel
I don't have any amd hardware so I can't test that
Yeah that’s what I’m trying to check
But my mom isn’t responding and she is the only one with an Intel laptop
thats like the only thing I can think of
it would have to be some fucking ub that causes something
But what about TCG
@rotund furnace I did get an ISO file generated manually and I may automate it soon but I sent it to some friends to test
Gonna try and get a better sample size
It did triple fault on KVM on my laptop too @rotund furnace
Which is strange
Just right away
Let me see how it goes on my laptop bare metal
maybe implement ubsan and see if that says anything?
Damn my laptops USB ports are being funky
How do you do that?
I did get stack smashing protection stuff added
just add -fsanitize=undefined to your compiler flags
then just implement all the functions it tries to link in but fails because you don't have the lib for it in freestanding
you also should add __attribute__((no_sanitize("undefined"))) on the ubsan functions
Il do this real quick
Why is the drive stick at 6MB max now
Stuck
WTF
Nvm gparted bug
@rotund furnace Yup it works on Intel
I wonder if anyone else has had this kind of issue?
I doubt I can google syscall amd vs intel because of the 32bit thing
wait does it crash on sysexit???
iretq
oh
@rotund furnace what arguments should they be taking?
whats RPL again? thats the MSR right
the rpl bits of the selector iirc
well it's telling you that for the IA32_STAR msr you need to set the rpl of the ring3 selectors to 11b
and you don't do that
so maybe you should
should my panic also be unsanitised
uh maybe
so i need to do an OR on thoes bits to set them
yeah
you know a good tool to selete bitfield things and get a hex value
for what?
like to get the hex value to OR with
oh python ig
i mean like to select checkboxes for bit numbers
oh
i dont wana do like 0b00000001100000000 or some thing
intel doesn't say anything about having to set the rpl to r3
fr?
what did you change
Just the OR
and just do (0x18 | 3) << 48

this is why you keep both the intel and amd manuals on standby
intel clearly doesn't give a shit if you load a ring0 selector
True
so they are in the right here and intel is wrong

atleast this made me get stackguards and UBASAN
And UBASAN catches it before the stack smashing protector
so there is ub 😭
oh
I have to test it to make sure it works
@rotund furnace thanks for helping me find this
i would of never found this due to my team redness 
@rotund furnace i wonder why it was so intermitent and heisen bug like though
but holy shit i can actualy start work on a real userspace and libc and stuff
All good
wait this sounds bad out of context 
This is why you test on more then just intel or amd
I mean too be fair it only works on intel because they implemented it wrong
Evalyn is a communist confirmed (I'm pretty sure you meant in terms of us politics, but communism was my first thought lol)
Pretty sure they were just talking about amd
Yeah but the out of context bit
Oh
The other red
Yeah USA

But yeah I meant AMD
What’s funny is my first laptop had an AMD APU
Second laptop I get with an Intel CPU and an nvidia GPU
The screen is busted in a few days nothing I did
Yeah fair I'm also on amd
I had to return it and I got my current AMD laptop with an nvdida GPU
And now I have an AMD desktop CPU and GPU
I have an amd + nvidia desktop and then now an amd + integrated laptop as well
But my old laptop was intel and then the power button stopped working
I was full ready to replace the button and solder on a new one but unfortunately it was an issue in the motherboard somewhere and the button itself was fine
imagine that ascii art being your "oops! kernel panic! system will now explode-"
That is my kernel panic ascii art lol
This is a kernel panic triggered by undefined behavior sanitization
@rotund furnace It’s now on codeberg and my git server
Thank you git merge —squash
its building at the very least for my kernel
-rwxr-xr-x 1 evalyn evalyn 13M Dec 23 20:41 ./doomgeneric
yeah but no
maybe i should just use mlibc
instead of whatever the fuck this jank is
yay i love it
doesnt seem like it fits in 80x25 mode D:
i heard something about an iso but just to make sure
it can run on hardware, yes?
yes but i dont build isos by default
you manualy parition a USB and drop files on it
sounds like my solution to a distro
just throw files into a partition and boot it via GRUB lol
it should with minor edits but take up most of your screen
i use an 8x8 font size
oh so it does fit in 80x50
coz im using 80x25 which is most definitely 16x8 px
my screen is more than 80x50
or it can be
rly? how many chars w/h
i have a raw frame buffer
ooo
oh
brah
and flanterm and nanoprintf give you proper tty stuff
i did have my own implementations before
but they werent as good / complete
The cross compiler can be built properly now!
I just have to finish porting mlibc and making an elf loader
iso generation is working
the new GCC is now building apps for the kernel properly with mlibc
i just need to make a basic elf loader now
eyyy the first header is getting parsed
that's only 7 floppies in size!! (or 6 idk)
6.40796444 floppies
being (8.8 mebibytes) / (1.44 megabytes)
ok so 7 flops
i think we should convert 8.8 MiB to MB or 1.44MB to MiB because MiB =/= MB
i forget of floppies are MiB or MB
but my elf loader is elfing
oh wait um
but the libc isnt libcing
IT CAN PLAY BAD APPLE?
yes?
EvalynOS is a real OS now o7
right...
but it is a real media player now 🤣
i need video footage of EvalynOS playing Bad Apple pls
I have a video somewhere
The video data format is specialized for bad apple
@mild glacier
Specially the format is a large array of bytes. And an array that had indices into the data array for every frame
And it reads in pairs
First byte is how many pixels to draw
Second byte is the color
It’s run length encoding
And I formatted bad apple to be purely black and white so it could compress losslessly decently with this
oh damn RLE
i should use that for my text distro video graphics
but i would do it like so:
bit 1 = color, bits 7-8 = amount then an optional byte for the type of block
e.g. 0b10101010 = print white 42 times in a row
for monochrome coloring :D
Oo that could actually be more efficient than two bytes.
Could also do a bitstream and have start and stop sequences for better encoding
yea like 0x0000 | 00FF that prints 256 pixels in a row starting from top-left (pos 0000 to pos 00FF)
then define ur resolution
If it’s a protocol for sending to a terminal RLE wouldn’t be too useful
This is used to compress it so it takes up less space on disk
mmmmm
It hurts performance on my machine
Fuck
Weird, usually it increases performance because the writes are done in bulk
But eh, idk
It’s a visualization difference I presume
Real lmao
Alright it’s all working good and it’s on my personal git site and not codeberg rn
Gonna finish up some docs and maybe push to main or keep working on dev
evalyn os will never be doomed ||hehe dad joke||
can u make one of those animations that u can never see when u screenshot/stop
A screensaver?
no no
that kind of animation where there's static but some of that static moves and u can see the shape by motion
but when u take a screenshot it's just random noise
https://www.youtube.com/watch?v=RNhiT-SmR1Q
Ohhh the bad apple thing is just a side effect
The bad apple demo only writes pixels that have been changes since the last frame
ik ik but still pls make this kind of idea as shown in the video 🙏
And soon always writes the entire frame regardless
I mean that’s not really important to do when there are bigger fish to fry lol
yea but would be cool to see :3
- it might be trivial with the libc
i just need to find out where and how to write directly to an FB with uhh... linux 😭
Doom generic has a Linux version that uses the raw frame buffer
That’s what I based my on partially too
but is it open source?
HI!
thats a bad way to do it, it cloberrs rdi and rsi
What????
Do you know what syscall/sysret is
some very 👌 instructions
Yeah well but they certainly don’t clobber rdi and rsi
noted
They clobber RCX and R11
RCX holds the RIP
R11 has the masked flags
And sysret uses those registers to return
And you manually handle RSP
Eg the stack
Which is clearly better then pushing them
Well you would push them on the syscall routine yourself
That you make
Or store them in a certain spot etc
I mean like the cpu pushing them
No clue
Because if it was I don’t think my kernel would be running doom right now
And calling system calls a whole lot to do so
@rotund furnace Mind if I DM you btw?
Sure but I’m at the airport
yes, but but when you invoke a syscall with your function it literally clobbers rdi and rsi because the syscall num and a is passed to this func, and afaik gcc wont preserve the other regs, i dont even thing inlining would do a difference if you think it will, so the best option is to pass the syscall args to the func
are you aware that my kernels regular build has a diffrent systemcall ABI to Linux?
I pass the systemcall number to RAX
And j get the return value into RAX with other arguments in different registers.
If this function were wrong none of my code would be working.
You replied to a message from like 2 weeks ago when things were broken from a a completely diffrent issue.
They are working now with doom executing properly and a libc ontop.
Also that systemcall function takes in the two arguments. For the systemcall number and one parameter. It’s not taking them from some random place.
not aware of the ABI i thought you were doing the same one as Linux's
mb

@sudden mirage can i ask that you dont come to this thread again please?
i made this myself 
good meme? 🔥
@rotund furnace sleep works!
your laptop will stop burning

The timing on bad apple is fucked tho
That code is a complete and utter mess tho
Well it’s mostly fine
But a little desynced
To be fair I got the audio data from the MSDOS version and the frame and audio timings they do is ASS
I’m pretty sure xor is the proper way because it tells the CPU to clear the register vs an actual move
My priorities may be a bit off
Doom and bad apple
Before fucking sleep
average programmers be like:
I mean it’s also both irl sleep and kernel sleep XD
ah you were talking about kernel sleep lol
nice
reminds me of the pain that implementing forcefully unblocking sleeping threads for the first time was, I had multiple deadlocks that'd randomly sometimes happen in my initial impl 
My sleep is implemented by my scheduler checking if the wakeup time is more than the current time.
If it’s higher find the next task
And il add waitfd and waitpid similar
If conditions not met skip
I had a bunch of issues too but I got it in the end XD
what I was talking about was for like waiting on an event with a timeout
if its only the scheduler unblocking threads when their sleep expires its not that bad but when an arbitrary random thread on a random cpu can wake up a sleeping thread at any point you have to be careful with locking
its used in eg. posix poll() or any other function that accepts a timeout
or well I guess it might depend on how exactly you implement it but at least the way I did it
Ahhh. So waiting on a thing and if a timeout happens wake it up still too?
I could have it do IPC to tell the schedular PID X needs to wakeup or other.
And when checking if the thing is read also do a time check?
I don’t do SMP yet though
I’m probably gonna do that after @devout path finishes SATA and a filesystem as to not cause too many internal reworks as they work on that
yeah so that the thread can either get woken up when something is done or a timeout expires
Yup yup
I’m trying to keep my intentions basic as to make my code easy to reference for others and me
So I’m not wanting to do tooooo many fancy things
and way less for bad apple
i will want to get waitfd to wait for new data on them for the "kernel shell" to be more reponsive
but i may aswell get system() workin first
and then do waitfd
or is it poll?
yes i need poll
hi
Hai hai
hi
A 5700x and it’s in a KVM VM.
- I assume it’s got something to to do with the doom port
Bad Apple much lower
It only checks input once per frame and if it needs to grab an extended key it polls. Although I can probably insert a sleep in there?
dunno
And if it dosnt get input it just directly goes to the next
And it makes sure the buffer is empty
Oh to be clear that’s 1/2 of one core
And it seems under KVM the core won’t down clock
The bad apple demo running at a few %
It still shows a high clock speed
So I presume it’s some other fuckery
idk then
Okay so let me get my road map here
Get a bare minimum shell working in userspace to launch apps.
Redo the PMM VMM and Heap
make copying to and from userspace safe
Look into signals and pipes and making things more posix
Get CoW and fork() and others working nicely
Port bash
Port other things
…
Port x11
@opaque marten think i fixed the cpu usage tho
wait btop shows it differently 
i thought the clis and stis were causin it
but i did get all sti/cli's goned
Today I am going to get started on parsing the basic ACPI tables to get the IOAPIC and APIC stuff working to get away from the PIT
Aswell to move some folders around and push the dev branch to main
please
please
just save your self the effort
use uacpi (in barebones mode if you don't needa parse aml)
lest you go down the rabbit hole of aml
How hard is it to setup

The docs scared me
Like @rotund furnace How hard is it for just barebones mode rn
how do you handle the bad apple video? do you parse it yourself or use a 3rd party lib? and if you do it yourself, which format? :D
it's like a few functions at most
it's 4 functions
one for getting the PHYSICAL address of the rsdp
one for mapping physical memory to virtual memory (you decide the address)
one for unmapping (it gives you in the virtual address you gave it)
and one for logging
that's it for barebones mode
it's like 36 loc for my impl
imo if you just want the tables adding uacpi is overkill
Limine v3 does that thankfully. The other two are easy pz
The tables are like really fucking easy to parse
it does have a nice header you can include to save yourself writing the definitions
uhuhuhuh iirc v3 doesn't map acpi tables
Code is open source
yeahhhhh
ig
but if you want aml down the line it's easy
tbf I can prob replace it with my own parser because I'm gonna do aml in userspace anyway
(hopefully)
we need like a uacpi stripped down version that's JUST parsing 😭
well we have that, its called uacpi in barebones mode 😛
yeah ig
I mean the tables are just a couple structs
ah thanks
Would take me two hours tops
yeah but if you wanna do aml at some point you're gonna have to rip it all up
Can’t believe I have to implement x2apic just because Intel got rid of the pic (and Apple I think?)
Like for the IOAPIC and other things
and apic
because some machines don't have apic
but also some of the machines that have x2apic don't have apic
🙃
but apic/x2apic shit is generic
It’s the same driver except one is MSRs and the other is MMIO right?
more or less
yeah x2 is msr
there's one special case where ICR (register for sending IPIs) is a single register now instead of two
yeah
that ig
otherwise you can just do something like
uint32_t lapic_read(uint32_t reg) {
if(x2apic_mode) {
return (uint32_t) __rdmsr(IA32_X2APIC_BASE_MSR + (reg >> 4));
} else {
return mmio_read_u32(apic_base_address + reg);
}
}
void lapic_write(uint32_t reg, uint32_t value) {
if(x2apic_mode) {
__wrmsr(IA32_X2APIC_BASE_MSR + (reg >> 4), value);
} else {
mmio_write_u32(apic_base_address + reg, value);
}
}
I can have a generic IPI function that can handle that
Yup exactly
I’m not gonna be doing SMP yet
how do you do ipis?
But a timer that’s more precise than the PIT would be nice for nanosecond sleep stuff
if you're planning smp support at all, I'd recommend getting that setup asap. It'll change a lot of assumptions you can make and you'll encounter different bugs.
^^
I’m atleast gonna wait for @devout path to finish the sata and ext2/4 driver as it will take a ton of reworks
It’s mostly slapping locks on things that go cross core right?
And implementing thread local storage for threads
pretty much, locking is the big thing. You'll also have to worry about caches (just the tlb on x86).
For locks I should make arch specific ones and then have a macros that calls the proper arch one I think? With some pre processor statements right
you can do it generically with atomics
gcc/clang have builtin functions for them
I can also probably use plain atomics for some things too?
But like anything two cores may wish to touch should have locks
depends
generally though
throwing locks on things is the easy way out
its a good way to start: wrap any shared state in a lock
Aswell for my scheduler I was thinking for cross core that threads would compare how many threads they have weighted by sleep and then pass threads between cores to make sure they are balanced.
And one core only talks to two other cores at most as to not be talking globally and or having more lock contention
wdym pass a thread to a core
all threads should beable to run on any core
(although keeping them on one core might help)
Like have it scheduled to another?
I wouldnt consider sleeping threads when balancing run queues, as you can re-evalate which core the thread runs on when it wakes (last is preferred, but conditions may have changed). You keep each core mostly independent, with some work stealing (if a core runs out of work -> it takes a thread from someone else's queue) and a thread that runs occasionally that scans and balances run queues if needed. If you're worried about too much cross-core traffic you can introduce a hierarchy where cores belong to a family of 4 cores, the neighbouring 3 cores are checked first, then any others (but if we're talking performance, measure first!).
Wouldn’t the scheduler be running on every core
yes
but if you pause a core one cpu
it should beable to resume on any cpu with next to no overhead
- cache shit
So if the scheduler runs out of tasks it should knock on others and be like hello may I have some work and if the local cores don’t have any work go further out?
And I assume the handoff is passing over the struct
once a task/interrupt context pushes any gprs that are caller saved, yield will push any callee saved gprs switch stacks restore callee saved and ret
that's it
the handoff is the same as taking a thread from the local queue, except its a different queue
everything else is choosing which threads execute when
and yes
So the exact same as I have now?
yeah
any core that yields will just get "a new thread"
it doesn't matter which one
obv this is for the most basic of scheduling but oh well
So before the idle thread it should go and ask others and then idle if there is nothing to do
I’m thinking once I get my PMM VMM and heap reworked and get fork() going il work on SMP
scheduler kinda has two co-equal parts tbh. scheduling a thread to run, and switching to it
I mean
sure why not
That way it will make sense to have it and il make a multi core Mandelbrot demo or something
demo oriented development lol
😭
????????
that must of SUCKED
My brain needs to see something working
It was fine I just baked it into the kernel image
the message "syscall! - 0xcafebabe" was enough from me
And I didn’t use dynamic allocation
RLE encoding
Maybe after SMP and all the other cool stuff I should work on an Intel HD audio driver
maybe I can make it play sound effects on kernel panic
Btw how are you meant to calibrate the LAPIC timer or other if you don’t have a working PIT on a system
iirc you can use the invariant tsc
or some other timer like hpet
although iirc hpet also needs calibration
idk
invariant tsc doesnt give you the frequency
so
Not on every CPU
There are MSRs for that one tho
which ones?
on newer intel cpus there is cpuid leaf 0x16 (iirc, maybe its 0x15) to get the lapic timer and tsc frequencies. Other than that you have to calibrate against another timer. On virtual machines you have pv_clock which is excellent. Then you have the ACPI PM timer, HPET and PIT you can use as reference clocks.
this shit is too hard
yk what we need
a whole new timer that's better then the rest
Let’s call it the x2PIT timer
I was making a joke btw
I mean if a system has no PIT and no invariant TSC or known calibration for the timer I can just say fuck it and say no
I mean yeah you could do that, but its pretty unlikely.
Newer Intel CPUs lacking a PIT would have the MSRs so it’s like edge case devices like MacBooks or some shit I think?
they're not MSRs, its cpuid
Ahh sorry sorry
haha you're alright
MSRs are generally writable
which would be cool, you tell the timer its frequency.
Would be cool if the x2APIC timer let you do just that since it uses MSRs
Read a register for the range it can handle
Then write to another for how many times per second to interupt
That’s a working x2apic and timer
let's just ignore that ascii art in the bottom right corner 😔
no thats on purpouse lmao
oh so that's not a fatal error?
no i made it cause a fatal error
to make sure it was working
let's just ignore that ascii art in the bottom right corner 😔
i said this coz it's supposed to be a "let's just ignore the errors" comment
how did u get 100+ quadrillion bytes from spawn 💀
@mild glacier my structures were wrong so I read bad memory
So it got the wrong address
And when it tried to use it

Well we all know what happens when you touch non cononaical memory
also that "Advancement Get: How did we get here?" makes me wanna use that as the error message for segfault in purpur linux
can i 🙏
It’s one of my many random error messages
along with what other funni error messages?
show me what others u have in ur arsenal >:c
The Nostradamus of its age, Veggietales predicts shitpostgenerator 12 years ahead of its time.
My stop-motion short film about math: https://youtu.be/MGp77CmhhLw
I found the clip thanks to this tumblr post: https://beefbronson.tumblr.com/post/117652819984/so-i-see-some-people-talk-about-veggietales
The true answer to 2+2: https://youtu.be/0-pL...
It’s open source
💀
@mild glacier src/kernel/utils/panic.c
it's open-source so im just gonna steal borrow it rq
better license it bruv
oh ok
Music video by Weird Al Yankovic performing I'll Sue Ya. YouTube view counts pre-VEVO: 6,166 (C) 2006 Volcano Entertainment III, LLC
btw @rotund furnace i cant find my usb got a moment to test my kernel on a machine with x2apic?
I'm on vacation so no real hardware other then my macbook
oh and no usb drives
so sadly no
tbh I'm not even sure the machine I use to test has 2xapic lmao
yep
thx for letting me use src/kernel/utils/panic.c
gonna take alot to port the thing
but those repetitive printf("(string)\n"); could be replaced with puts("(string)"); plssss
it'll save u source code bytes 🙏
have you considered i dont care
lol
it dosnt matter
also i dont have puts implemented
lmaooo "I like elephants and god likes elephants" as an error message is an insane reference
wtf?????
the PIT is setup the same as before
then interupts fail
but if i stub the sleep it works
nvm my bad
i fucked somthin else up
okay well closer but not there
PS/2 fails when using the PIT
but not HPET
for some reason
the timer works though???
@hollow crater its 8am i hsvent sleep ive been coding but here is the patch file for whatever the fucks been going on
https://git.evalyngoemer.com/evalynOS/evalynOS/src/branch/dev
thats the proper branch to apply to
aight u can (should?) go to sleep now lol
i'll see if I can figure out whats going on but I make no promise I will be able to xD
It’s all good
I should sleep
Yes
g'nightttt!!!
@hollow crater btw did the patch file manage to work and libc build properly?
I uhhh
Forgot to sleep

welp its still compiling gcc here 
i wanted to test it on a clean chroot so here we go
oh

Only on a fresh install on my laptop though
I’ve ran the script from clean git downloads on my desktop fine one go
YMMV
well i will see how it goes
no reason to fear for now kekw

Just a reminder my code is connected together with 14 pounds of duct tape
And you got the dev branch right
well in theory this should be the same which's bad
but i have nothing to do anyway so ill do it again if it did
relatable
It wasn’t too hard either
Also I don’t plan to ever update GCC of binutils
So you won’t ever have to recompile these

well ig i wouldnt have had to do that if i just tested locally 😭
since i already have a cross compiler
but i just thought why not 
well yes it doesnt seem u had it configured that different from mine
worst case it'd just need extra flags to the makefile here and there
True true
uhh
Clang because I use host compiler and clang is better at some things
I’ve heard it’s code gen is nicer
And I CBA to make an LLVM toolchain for userspace
😭
clang supremacy
fair
maybe add xorriso / clang as deps in the readme then 
😭
i know no rust anyway
im rust free
only c/c++ 

I should
I do also say it’s incomplete
Yeah but it’s blazingly fast and memory safe
And I need it to spam emojis all over my readme
But like other people might want things in rust
Not bad to support it
Even though I won’t provide many things natively for it
Also @hollow crater my kernel triple faults under GCC

smells like UB
Or clang spesific extensions
eh
What 
fairs
sobs
That sounds like a patch applied to master 
ohhhh
Because dev branch is one ahead where I added that
welp lemme fix ts
Because I updated to limine v4
also why not clone limine in the makefile 
(Protoco(
fairfair
It’s a sub module 
I regret that somtimes tho
its not tho?
I also get linine binaries from package manager
Why not just have a limine file with everything prebuilt
I mean like the actual limine binary branch not the protocol
Ahhh
Lol
it just tries to use it from the host system /usr/share
clang for kernel & rustc for userspace 🔥

I just have a limine folder so I build everything once and then just update it periodically each half year.
I’m waiting for Lily CC
lily cc?
You can copy AuroraOS folder.
I just do this (assuming its an early-stage os project where I don't have a meta package manager I can use to install it and I have a cmake target for running the thing) ```cmake
if(NOT EXISTS "${CMAKE_BINARY_DIR}/limine")
execute_process(
COMMAND git clone https://codeberg.org/Limine/Limine
-b v10.x-binary --depth=1 "${CMAKE_BINARY_DIR}/limine"
)
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/iso_root)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
${PROJECT_BINARY_DIR}/limine/limine-bios.sys
${PROJECT_BINARY_DIR}/limine/limine-bios-cd.bin
${PROJECT_BINARY_DIR}/limine/limine-uefi-cd.bin
${PROJECT_BINARY_DIR}/iso_root
)
execute_process(
COMMAND git clone https://codeberg.org/Limine/limine-protocol
--depth=1 "${CMAKE_BINARY_DIR}/limine-protocol"
)
endif()
I think there is another repo for limine and OVMF
oh shit that's neat
I just have everything prebuilt.
Its easier.
I also love when my kernel corrupts OVMF ❤️
Ahh. I dont use cmake though
fuck yeah 🔥
that's what I'm gonna do while I wait for chariot to get remote compilation
after fabricate is done lmao
I do wonder if I should make my own build system for my kernels dependencies where it downloads an alpine CHROOT image downloads everything and builds it

@hollow crater is the GCC there get?
Yet
What are y'all doin
Compiling my kernel to help find a bug
Ahh.
I feel like my kernel should be able to compile on every machine just not my machine without big efforts.
yea i actually got it all to work
sorry was afk 😭
😭 😭 😭
It’s meant to like
now imma take a look at whats exactly going on
The interrupt thing isn’t calling the function pointer
At all
It should be running the generic timer ISR function pointer
That different timers plug into
But it’s straight up not running

mmmmmmm
so neither the pic interrupts nor the pit ones get fired
u sure interrupt handlers are working at all? 💀
Well if that function never calls
