Search logs:

channel logs for 2004 - 2010 are archived at ·· can't be searched

#osdev2 = #osdev @ Libera from 23may2021 to present

#osdev @ OPN/FreeNode from 3apr2001 to 23may2021

all other channels are on OPN/FreeNode from 2004 to present

Tuesday, 14 March 2023

00:00:00 <klange> apparently it affects that as well, in addition to normal backspace stuff :)
00:00:00 <heat> like right-to-left or merging two codepoints into one? (or however that works for arabic, etc)
00:01:00 <heat> i'm fully aware there are a good couple of languages that don't really fit into typical "monospace, each character in a single console cell" way
00:01:00 <heat> which, erm, makes me wonder if they can actually be fully supported anyway
00:02:00 <heat> as far as I understand the typical VT stuff really is latin centric
00:02:00 <klange> Since the tty layer isn't really aware of things like cursor positioning or even cell widths, there's no good way to do it for the canon buffer - just best-effort improvements like the things Linux does with IUTF8 or its attempts to handle tabs.
00:04:00 <klange> But for something more integrated with the terminal you can do better - which is why readline or vim can support this stuff much better. And then at the terminal end of things, VTE has all sorts of complicated support for RTL text, and various other terminal emulators have fancy ligature support and whatnot.
00:04:00 <heat> ah really?
00:13:00 <klange> At the most basic level, VTE (and I imagine most other terminal emulator engines that support RTL text) detects spans of RTL text and flips them. VTE also then does all the fancy combined shaping to support Arabic.
00:14:00 <klange> So to output some Hewbrew text, for example, you just spit it out in encoding order, and in a naive terminal it would show up backwards to how it should be written - and then VTE will flip it for the continuous range of RTL text on a single line.
00:15:00 <heat> hmm yeah
01:43:00 <geist> heh just reading this i randomly searched the net for rendering arabic fonts, and just reading bug reports of rendering engines is really interesting
02:08:00 <zid> they've bricked iphones a few times
02:34:00 <sakasama> The history of traditional Mongolian script was very eventful, until everyone gave up on it including Mongolians.
04:18:00 <ghostbuster> what should i read to wrap my head around segmentation addressing modes on x86?
04:22:00 <sakasama> Intel manuals, if you actually want to target 16-bit.
04:24:00 <ghostbuster> for operand like gs:0x14, the instruction operates on the address that's calculated by adding 0x14 to the base address that corresponds to the gs register, but the base address isn't actually stored in gs, right? it's stored in another register?
04:25:00 <ghostbuster> this is a 32-bit x86 binary running on 64-bit linux, on a 64-bit cpu
04:29:00 <sakasama>
04:29:00 <bslsk05> ​ Global Descriptor Table - OSDev Wiki
04:31:00 <ghostbuster> ah so it's just a kernel data structure?
04:31:00 <ghostbuster> thanks I'll read some of the links on that age
04:31:00 <ghostbuster> s/age/page
04:32:00 <sham1> A CPU data structure specifically
04:32:00 <sham1> This thing of course doesn't exist outside of the x86 family, because frankly, it's weird
04:33:00 <ghostbuster> segmentation is kind of a relic right?
04:33:00 <ghostbuster> i read that either fs or gs is now used for tls
04:34:00 <sakasama> It's different in real mode, where the segment registers alone provide the base, and in protected mode where the GDT does, and then long mode discards the idea entirely.
04:35:00 <sakasama> They're just considered segment selectors in protected mode, iirc, for the purpose of selecting the relevant table entry.
04:37:00 <ghostbuster> cool, this makes sense
04:51:00 <geist> +1 to what sakasama said
04:51:00 <geist> in 64bit mode its even more disabed, but fs/gs work kinda the same way except now the base address is stored in a MSR
04:51:00 <geist> but it's effectively similar
04:52:00 <geist> ie, legacy compatibility for what folks used fs and gs for by the time x86-64 came along: pointers to thread or cpu specific stuff
05:33:00 <kazinsal> geist: hey, did you ever end up grabbing a 7000 series ryzen box? trying to diagnose some weird lockup issues I'm having every couple days
05:33:00 <kazinsal> never immediately hard locks, it's more like after a few days it stops remembering how to spawn new processes or something bizarre like that
05:34:00 <kazinsal> all of a sudden I have issues opening new tabs in chrome and then within ten minutes youtube stops working and various processes stop responding to input, then either I have to hard reset or eventually it'll hard lock and the SMM watchdog will reset the machine
05:53:00 <geist> kazinsal: negative
05:53:00 <geist> eep that sounds bad. usually first thgin i do there is run a memtester for a while
05:54:00 <geist> the hard lockups i was having the 2000 and 3000 series ended up being some sort of low C state thing that i disabled
05:56:00 <kazinsal> might poke at that. this board was having some issues with DDR5 DOCP so it might just be a board issue
05:56:00 <geist> maybe nudge teh clock on the mem down a bit
05:57:00 <kazinsal> it's doing this on stock 4800 unfortunately
05:57:00 <kazinsal> at 5600 it has a 50/50 chance of just not booting and then will randomly bluescreen
05:57:00 <kazinsal> reportedly the newest bios has some memory controller fixes, might try that first
05:57:00 <kazinsal> worst case I'm out a few hundred bucks on a new board
05:57:00 <geist> yeah get to current bios for sure
06:06:00 <geist> but i think you know what this is
06:06:00 <geist> it's the universe telling you to put those toys away and use your VAAAAAAXX
06:06:00 <geist> ryzen more like dies-en-2 minutes
06:11:00 <kazinsal> unfortunately the VAAAAAAXX has a dead power supply
06:11:00 <geist> noooo!
06:12:00 <geist> wonder how hard it'd be to rig up an ATX power supply. it probablyu needs all the same voltages
06:12:00 <kazinsal> yep, turned it on the other day to fiddle with it and the poor thing powered off suddenly followed by the smell of a capacitor giving up the ghost
06:12:00 <sham1> RIP
06:13:00 <geist> kinda has me thinkin, i should dig out the pair of beboxes i have packed away
06:13:00 <geist> packed em nice and tight 2 moves ago and never got them out again
06:13:00 <geist> but should at least make sure battery hasn't corroded anything, etc
06:13:00 <kazinsal> helpfully the label on the PSU lists the voltages it needs. unhelpfully it's a bit more than just what ATX provides. it needs a bit more on the -12V rail and it has a -9V rail
06:14:00 <kazinsal> most ATX PSUs only put out 0.5A of -12V, the VAX PSU puts out 1.0A
06:15:00 <kazinsal> and also oddly 0.2A of -9V, not sure what that's for
06:15:00 <geist> ah -9V. was worried it'd have a 'funny' voltage
06:15:00 <kazinsal> so she's gonna need a teardown
06:15:00 <geist> well, if it's like anything else they made it's probably a tank
06:16:00 <kazinsal> probably
06:16:00 <kazinsal> I'm expecting that the logic boards are probably fine
06:16:00 <kazinsal> may be worth inventorying the tantalum caps as well for a future recap
06:17:00 <geist> i remember killowatting the machine and it wasnt actually as power hungry as i expected. iirc it pulls a solid 80W but really nothing more
06:17:00 <kazinsal> but since it was an immediate power off when it went pop I figure it was a supply cap and not a logic one
06:17:00 <geist> probably bicmos
06:20:00 <kazinsal> a bunch of folks have said that the particular board I have has issues with "memory context restore" which seems to be "reload stale DRAM timings into the memory controller to speed up the POST" so I've disabled that. fingers crossed that solves the bizarre hanging issues
09:09:00 <ilovethinking_> hey
09:18:00 <ilovethinking_> why does nasm compile my assembly code but clang doesn't?
09:19:00 <ilovethinking_> do they have different standards?
09:19:00 <geist> gotta be more specific
09:19:00 <geist> how does clang not compile it?
09:19:00 <ilovethinking_> clang file.S -o file.o -m32 outputs error, let me send u the code real quick
09:20:00 <ilovethinking_>
09:20:00 <geist> probably you're trying to use intel syntax and clang is defaulting to at&t
09:20:00 <geist> oh yeah that's because nasm i think uses completely different assembler directives too
09:20:00 <ilovethinking_> no i also use -masm=intel
09:20:00 <ilovethinking_> forgot to include it in the message
09:21:00 <geist> stuff like section is .section. etc
09:21:00 <ilovethinking_> :cry:
09:21:00 <geist> clang follows gas style assembler directives. nasm is its own thing
09:21:00 <geist> i never ever use nasm so it wasn't obvious
09:21:00 <ilovethinking_> alright
09:21:00 <ilovethinking_> well i always used nasm so
09:21:00 <ilovethinking_> gotta learn new syntax now
09:21:00 <geist> course would take you 5 seconds to convert, so not a biggle
09:22:00 <ilovethinking_> nice
09:22:00 <geist> like most of those things you just need to put a . in front of it
09:22:00 <geist> directives in gnu as generally start with .
09:22:00 <geist> to differentiate from symbols, etc
09:22:00 <ilovethinking_>
09:22:00 <bslsk05> ​skywind3000/Intel2GAS - Convert MSVC Style Inline Assembly to GCC Style Inline Assembly (31 forks/98 stargazers/MIT)
09:22:00 <ilovethinking_> what abt this kekw
09:22:00 <geist> that's at&t vs intel i think
09:23:00 <geist> also inline asm is a different thing altoghter
09:23:00 <ilovethinking_> intel2gas tho
09:23:00 <ilovethinking_> well alright
09:23:00 <geist> it's also doing intel to at&t, but it's primarily dealing with inline as
09:23:00 <geist> which is another layer here, but lets not worry about that now
09:23:00 <ilovethinking_> inline asm is weird
09:23:00 <ilovethinking_> =r r
09:24:00 <geist> the most useless statement ever uttered
09:27:00 <ilovethinking_> "too few operands for hlt" what
09:28:00 * geist doesn't know
09:28:00 <ilovethinking_> weird
09:28:00 <geist> i dont think that makese sense, so it's probably not what you think
09:28:00 <geist> re gas directives, see things like
09:28:00 <bslsk05> ​ lk/start.S at master · littlekernel/lk · GitHub
09:29:00 <geist> tends to probabably be similar to nasm but differet. you might want to look up the gnu as manual for them
09:34:00 <gog> hihi
09:36:00 * gog hands geist a chamomile tea
09:36:00 <geist> mmm i love chamomile tea
09:37:00 <gog> :3
09:47:00 <ilovethinking_> mov $826, %eax
09:47:00 <ilovethinking_> how does this error what the fuck
09:49:00 <ilovethinking_> unrecognized instruction jmp
09:54:00 <gog> wha
10:04:00 <FireFly> you sure it isn't the line before/after?
10:06:00 <ilovethinking_>
10:08:00 <gog> remove the colon after .text
10:09:00 <gog> .section .text
10:09:00 <gog> and multiboot_header should be .section.multiboot_header
10:09:00 <gog> .section ".text"
10:10:00 <gog> and .section ".multiboot_header"
10:11:00 <ilovethinking_>
10:11:00 <ilovethinking_> so like this?
10:12:00 <gog> yes that's a lot better
10:12:00 <gog> clang 15 on godbolt accepts it
10:12:00 <gog>
10:12:00 <bslsk05> ​ Compiler Explorer
10:12:00 <gog> helpful output in intel syntax
10:13:00 <ilovethinking_> repasted the errors
10:13:00 <ilovethinking_> in the same link
10:13:00 <gog> what command are you using to compile
10:13:00 <ilovethinking_> clang src/boot.S -o boot.o -m32
10:13:00 <gog> clang -c
10:13:00 <ilovethinking_> same error
10:14:00 <gog> can you show me the error output please
10:14:00 <ilovethinking_> repasted it
10:14:00 <ilovethinking_> same link
10:14:00 <ilovethinking_>
10:15:00 <gog> is your mac an arm mac
10:15:00 <gog> like M1 or whatever
10:15:00 <ilovethinking_> yes
10:15:00 <gog> yeah your clang is defaulting to arm assembly
10:15:00 <gog> clang -march x86
10:15:00 <ilovethinking_> nice, ill just download a cross compoler
10:15:00 <ilovethinking_> or that
10:15:00 <FireFly> oh that'd make sense
10:17:00 <ilovethinking_>
10:17:00 <ilovethinking_> i guess this is pretty nice
10:18:00 <klange> With plain elf targets on modern hardware, it's not exactly difficult to get a toolchain built.
10:18:00 <klange> It used to take hours just from running the builds!
10:18:00 <ilovethinking_> or do i need i386 elf gcc wait
10:19:00 <ilovethinking_> hmm
10:20:00 <klange> You probably don't want i386. You likely want "i686" for 32-bit Intel targets, unless you're really serious about targetting older hardware (and even then, the architecture here sets defaults that can be tuned if you want to build for something older).
10:20:00 <gog> i386 support is gonna be dodgy on anything newer than idk when
10:20:00 <gog> i686 is basically the minimum target and even that's gonna start vanishing before long
10:21:00 <klange> You should also use the latest pair of gcc + binutils (and also gdb comes as a combined package with binutils, so I'm not sure why the author of these scripts went for the separated tarballs)
10:22:00 <FireFly> I always found it weird how gcc requires specifying the target at buildtime
10:22:00 <klange> Oh these are homebrew thingies, I see... done that way so binutils + gdb end up as separate packages.
10:22:00 <FireFly> I mean.. at time of building the compiler
10:22:00 <klange> It's sort of the fundamental architectural difference between gcc and llvm at this point.
10:23:00 * FireFly nods
10:23:00 <gog> i think it's a defect of gcc
10:23:00 <moon-child> i686 isn't gonna go away in hardware, is it?
10:23:00 <gog> probably not for embedded
10:23:00 <gog> but the consumer world has moved on
10:23:00 <klange> I bet there's a long email chain on a mailinglist somewhere about this.
10:23:00 <moon-child> is there any interesting embedded x86 stuff?
10:23:00 <moon-child> client stuff still boots in real mode (modulo efi, but)...
10:23:00 <gog> mostly industrial things that retain compatibility with old ISA interfaces to controls ystems probably
10:23:00 <moon-child> mmmm
10:24:00 <klange> It's less that there's interesting x86 embedded stuff that's still shipping 32-bit chipsets, and more that there's a lot of legacy industrial systems running vintage ones.
10:24:00 <klange> End of the day, though, these are not systems you are likely to want to target.
10:26:00 <ilovethinking_> x86_64-elf-gcc: error: unrecognized command-line option '-march'
10:26:00 <ilovethinking_> what the fuck
10:26:00 <klange> it's specifically -march={something}
10:27:00 <gog> oh you're using gcc now ok
10:27:00 <gog> don't use -march
10:27:00 <gog> do -m32
10:27:00 <klange> though totally fair callout that that is a bad error message
10:27:00 <gog> yeah
10:27:00 <ilovethinking_> ld.lld: error: boot.o is incompatible with elf64-x86-64
10:27:00 <ilovethinking_> ????
10:27:00 <ilovethinking_> but i need a 32bit imag
10:27:00 <ilovethinking_> e
10:27:00 <ilovethinking_> i compile with -melf i386
10:27:00 <klange> You need more args.
10:27:00 <moon-child> I will note even with clang cross compilation is not necessarily trivial, since you need target headers and libs and stuff. Definitely better off thang cc though
10:27:00 <ilovethinking_> wdym
10:27:00 <ilovethinking_> ld.lld -T src/linker.ld -melf_i386 boot.o -o kernel.elf
10:28:00 <moon-child> and you compiled boot.o with -m32? What does 'file boot.o' say?
10:28:00 <FireFly> moon-child: sure
10:29:00 <ilovethinking_> boot.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped
10:31:00 <ilovethinking_> qemu says i need a 32bit image tho
11:00:00 <ilovethinking_> why is it so hard to get started lmao
13:45:00 <lovenot> Does anyone know how I can re-sync with my satellite?
14:27:00 <mrvn> ilovethinking_: why are you building elf32 again? You need to build everything for elf64.
14:28:00 <mrvn> ilovethinking_: then when you are done convert that to ELF32 or raw bin.
14:33:00 <gog> UEFI UEFI UEFI
14:38:00 <Ermine> hi gog, may I uefi you
14:39:00 * gog ExitBootServices()
14:39:00 <Ermine> What are Gog Runtime Services?
14:42:00 <gog> Run() Stop() Eat() Cry()
14:43:00 <Ermine> why cry
14:43:00 <bnchs> gog: wtf, why did you leak my source code
14:44:00 <gog> Ermine: sometimes you just gotta cry
14:44:00 <gog> bnchs: sorry friend
14:44:00 <Ermine> gog: what happened?
14:45:00 <gog> Ermine: notihing, i'm not crying right now
14:45:00 <Ermine> Ah ok
14:45:00 <gog> but there's a 100% chance of me crying within the next 48 hours
14:45:00 <gog> for no specific reason
14:45:00 <Ermine> :(
14:45:00 <bnchs> gog: no it's okay :<
14:46:00 <gog> Ermine: no sadface, crying is a healthy way of dealing with emotions
14:46:00 <bnchs> i eat and cry too
14:48:00 <ilovethinking_> mrvn: hold on so how do i convert elf64 to elf32
14:51:00 <ilovethinking_> you mean with the linker?
14:51:00 <ilovethinking_> like compile to x86_64 but link to elf32?
14:51:00 <bnchs> ilovethinking_: i don't think you can convert elf64 to elf32
14:52:00 <ilovethinking_> yeah well mrvn said that
15:15:00 <mrvn> You can't with the linker, the linker handles code. With GNU tools you use objcopy after linking, that just changes the container for the binary, not the code.
15:17:00 <mrvn> objcopy -O elf32-i386 $< $@
15:24:00 <mrvn> or maybe you can if you set OUTPUT_FORMAT and OUTPUT_ARCH
15:25:00 <mrvn> again, no idea if clangs links can do that
15:26:00 <gog> i think it's just that their apple provide ld.lld doesn't write ELF
15:26:00 <gog> ELF32*
15:27:00 <mrvn> gog: would suzrprise me if it could generate 32bit object files but not 32bit binaries. But a mix of arch and format might not work.
15:27:00 <gog> idk
15:28:00 <gog> i have no experience with M-series macs
15:28:00 <gog> so i can only speculate about what the toolchain ships
15:28:00 <gog> where's geist when you need them
15:28:00 <mrvn> gog: ilovethinking_ uses clang and geist doesn't have experience there eigther.
15:31:00 * mrvn should resubmit his ELF64 patches for qemu. It's like a 10 line patch in the multiboot ROM to make it accept ELF64 files too.
15:34:00 <gog> o
15:34:00 <gog> maybe just build a clang with the default target
15:34:00 <gog> idk
16:57:00 <heat> gog, gogzinga
16:57:00 <heat> i go away for some fucking hours and you developed your own runtime services? god dang it gog don't pull an Intel
16:58:00 <sham1> gogogogogog
16:58:00 <lav> gowog
16:58:00 <heat> god
16:59:00 <heat> lets all capitalize and quote "GOG"'s name so she loses her sanity
16:59:00 <heat> who's with me
17:01:00 <zid> meh
17:01:00 <zid> please check the battery in your carbon monoxide detector
17:04:00 <gog> hi
17:04:00 <gog> heat
17:04:00 <gog> heat
17:04:00 <gog> hi heat
17:04:00 <gog> heat
17:05:00 <gog> HEAT
17:05:00 <heat> HELOO GOG
17:05:00 <heat> DO YOU HAVE A GUID
17:05:00 <bnchs> GOG
17:05:00 <gog> I DO
17:06:00 <gog> f252db1a-349b-4cd2-8f5b-f14b03ed2c5d
17:06:00 <heat> HELLO BENCHES
17:06:00 <heat> HOW ARE YOU
17:06:00 <bnchs> I'M NOT FINE, YOU?
17:06:00 <heat> IM OK
17:07:00 <zid> I should do something I can only do on my ryzen machine
17:07:00 <heat> build chrome
17:07:00 <zid> flip some bits cus no ecc? do efi shenanigans?
17:07:00 <heat> oooh ooh, build LLVM
17:07:00 <heat> you already had EFI shenanigans in your old mobo m8
17:07:00 <zid> all my stuff was MBR
17:07:00 <Ermine> HEEEAAAT
17:07:00 <heat> you should create a GPT
17:07:00 <sham1> WHY ARE WE YELLING‽
17:08:00 <zid> I am GPT now
17:08:00 <zid> I have 80GB of unpartitioned space on the SSD too, in case it helps the lifetime?
17:08:00 <sham1> I don't think they need a Generative Pre-trained Transformer
17:09:00 <sham1> WELL YOU HAVE BEEN HEARD!
17:09:00 <heat> transformer? oooh ooh i'm optimus prime
17:09:00 <zid> I prefer the term: stochastic parrot
17:22:00 <Lubrera> Dear OSDev Channel: I like the Amiga OS architecture, but it is astonishingly inadequate in its lack of memory protection. There are any discussions or proposals of an Amiga OS inspire design that makes an effective use of the MMU, for I will like to try following that design for my own hobby OS?
17:23:00 <bnchs> Lubrera: in m68k?
17:24:00 <Lubrera> bnchs: I target the AMD64 PC, but it is no concern to me, an MMU to provide paged virtual memory doesn't vary enough to interesting me.
17:32:00 <gog> AROS?
17:33:00 <gog>
17:34:00 <Lubrera> No memory protection (or minimal) unfortunate
17:34:00 <gog> ah ok
17:35:00 <Lubrera> MorphOS it is the same. I suppose they are both hamstruny because they want to run Amiga apps directly. I have no such interest, I only want AmigaOS inspire OS
17:36:00 * kof123 pokes Bitweasil
17:36:00 <kof123> i think they were working on something vaguely related...might be confusing nicks
17:36:00 <kof123> check the logs for past x years :D
17:36:00 <Bitweasil> kof123, hm?
17:36:00 <kof123> wasnt there somebody working on something amiga-related here
17:36:00 <Lubrera> And fundangelically it is not an easy to adapt the Amiga OS architecture to a system of protected memory. But I want to throw at this.
17:36:00 <Bitweasil> I think so, but it wasn't me.
17:36:00 <kof123> :/
17:37:00 <Bitweasil> You want to know about system management mode or hypervisors or, especially, the combination of the two, I'm your mustalid.
17:38:00 <heat> Bitweasil, will you let me draw to the framebuffer in SMM or am I under arrest
17:39:00 <heat> i promise I'll lock the SMRAM register
17:39:00 <Bitweasil> You're in SMM without a hypervisor, you can do *whatever the heck you want.*
17:39:00 <Bitweasil> :D
17:39:00 <bnchs> hi Bitweasil
17:40:00 <Lubrera> The "Amiga" fundagelical feature perhaps, the shared library can provide as many or as few state when it is opened by some process that it wants, and the shared library it also can be or act in part like a simpleton
17:40:00 <Lubrera> Sorry it was corrected by my phone
17:40:00 <Lubrera> Singleton
17:40:00 <bnchs> Lubrera: it's all about amiga this, amiga that
17:41:00 <heat> Bitweasil, have you thought about using SMAP/SMIP to stop SMM to get exploited into touching/running non-SMM or SMM comm buffer pages?
17:41:00 <heat> I think it would work pretty nicely
17:41:00 <heat> as a, erm, general thing that doesn't need a hypervisor
17:41:00 <bnchs> while the architecture of OS-9 is forgotten
17:42:00 <Bitweasil> Ok, assume SMM code was written by an old guy back in the 90s who has long since retired to the hills.
17:42:00 <Bitweasil> And you can't find anyone willing to reverse engineer it. :)
17:42:00 <Bitweasil> The more fun is when you get yourself execution over there, but I didn't look into that capability, nol.
17:42:00 <Bitweasil> I just screwed around in the hypervisor space.
17:43:00 <heat> yes, the point would be to enforce SMAP/SMIP in upstream edk2
17:43:00 <heat> less room for stupid fuckery
17:43:00 <Lubrera> Yes bnchs I think you cannot make a good OS unless you choose one or two OS to be your masters. And when you have replicated some existing OS, then maybe you have the wisdom to do a different thing. So I try to borrow mostly from the AmigaOS this time, having once wrote a Unix-like
17:44:00 <kof123> "study the masters, after that do whatever the hell you want" -- dali
17:44:00 <Bitweasil> heat, yeah, that seems useful, but I'm not actually sure how that works out of SMM. It'd be an interesting experiment, I no longer have the board I did the work on, though.
17:46:00 <heat> Bitweasil, you'd map everything that's not in SMRAM or SMM comm buffers with user perms. then anything that tries to accidentally or purposefully touch normal mem get deaded
17:47:00 <Bitweasil> Yeah, you could probably do that. Though I'm not sure how that's a real improvement over just not mapping the rest of the stuff in the first place.
17:47:00 <Bitweasil> Only map the hardware and the comms buffers.
17:49:00 <Lubrera> Then here is the plan I formulate out of thin air about how will I implement my OS. Since Amiga shared library have(I have identified, maybe there is more) two responsibilities, I think I accordingly, the high-level library is separated into an optional Process and an actual Elf Shlib
17:59:00 <heat> Bitweasil, yes, that's also a possibility. but maybe there's real need to *sometimes* write to arbitrary memory? (for compat, etc) fuck do I know
18:00:00 <Bitweasil> "Disable the SMAP/SMEP bits" and "Add a mapping for that access" are about the same level of complexity.
18:00:00 <Bitweasil> Anyway. It's a hot mess.
18:00:00 <Bitweasil> I've just been getting lazy and putting Qubes on everything.
18:00:00 <heat> maybe unmap everything except SMRAM and comm, but mark comm User-access
18:00:00 <heat> and then have a copyin/copyout primitive
18:00:00 <Bitweasil> You could probably do that.
18:03:00 <Lubrera> Bitweasil: Thank you, that is what I will doing
18:04:00 <Lubrera> It might be the wrong way. I care not. Let them try to stop me before I trip into my tomb on the wire I laid myself
18:05:00 <kof123> it was belxander (or similar) i was probably thinking of. i got the most significant character right. wanted to build python on morphos or something , and other plans...
18:08:00 <kof123> *belaxander maybe. he should be in the logs :D
18:14:00 <zid> heat: i built llvm
18:14:00 <heat> nice
18:14:00 <heat> with LTO?
18:15:00 <zid> doubt I have the ram for that
18:15:00 <zid>
18:15:00 <heat> do it and limit parallel linking
18:15:00 <heat> if it doesn't already
18:15:00 <zid> emerge clang time
18:16:00 <zid> while I go cook rice
18:19:00 <sakasama> Activate fuzzy logic rice cooker.
18:23:00 <heat> mjg, the response to your llvm thread is fucking hilarious
18:24:00 <heat> if linking your helloworld.c doesn't spawn 96 threads what the fuck are you doing
18:27:00 <mjg> heat: someone else confirmed maskray is the person to talk to, but he is afk for few weeks
18:27:00 <mjg> heat: so gonna try again later
18:28:00 <heat> is there any OS that lets you create suspended threads?
18:28:00 <heat> would be a cute idea here
18:28:00 <mjg> lol
18:28:00 <heat> or better, any UNIX-like OS
18:29:00 <heat> doing 96 syscalls for a helloworld.c isn't great, but I assume a large part of any of this overhead is threads just scheduling in, just to block on a condvar or something
18:30:00 <mjg> bur
18:30:00 <mjg> there is global sunchronisation on thread lists
18:31:00 <mjg> aand userspace further pessimizes it with its own internal locks to manage existence of threads
18:31:00 <mjg> which at least on freebsd immediately go to the kernel in face of contention
18:31:00 <mjg> so its liek
18:31:00 <mjg> fuck me dude
18:42:00 <heat> perl -pi -e 's|^([^/]+?)((?<!::)(?<!::u)u?int(_[a-z]+)?[0-9]{1,2}_t)|\1std::\2|'
18:42:00 <heat> "regex is easy, believe me"
18:46:00 <kof123> i always heard it as: i'll solve it using a regex! now you have 2 problems
18:49:00 <zid> That's not even a bad one
18:49:00 <zid> from the start some non slashes then some line noise, line noise and a u then int, then identifier, with 1 or 2 numbers and _t, and maybe all std::
18:50:00 <zid> matching for std::uint32_t it looks like
18:50:00 <GeDaMo> That regex can't be bad, it has a smilie in it :P
18:52:00 <heat> no
18:53:00 <heat> that command is to replace non std:: uintN_t into std::uintN_t
18:53:00 <zid> that's what I said
18:53:00 <zid> you're welcome
18:53:00 <zid> not my fault perl delimits with | tbf
18:55:00 <heat> mjg, have you tried linking with ld.mold
18:55:00 <heat> it should(tm) be more parallel
18:55:00 <heat> 96T will still be stupidly overkill but maybe you'll notice it less
18:56:00 <mjg> i heard it is, i don't see the point tho
18:56:00 <mjg> interestingly it's iterally the same guy who rolled with original threading
18:56:00 <heat> yep
18:56:00 <mjg> only this this time it supposedly does not suck
18:57:00 <zid> clang cannot build boros, heat
18:57:00 <zid> terrible compiler
18:57:00 <heat> why
18:57:00 <zid> non-asm statement in naked function
18:57:00 <heat> lol
18:58:00 <heat> what do you use naked for?
18:58:00 <zid> syscall entry
18:58:00 <zid> it preserves the scratch regs then syscall_c()'s
18:59:00 <heat> heh
19:30:00 <gog> hi'
19:30:00 <lav> hi
19:57:00 * geist yawns
19:57:00 <geist> oh no. no gog
19:57:00 * Ermine brings coffee to geist
19:57:00 <Ermine> nooo gog return please
20:00:00 <ilovethinking> hey, as what architecture do i compile and link my kernel?
20:01:00 <ilovethinking> by compile i mean gcc
20:11:00 <Bitweasil> ... what are you planning to run the kernel on?
20:16:00 <geist> ilovethinking: you should really stop using the M1 built in toolchain
20:16:00 <geist> that path will lead to madness (and hard for us to help)
20:16:00 <geist> get a cross compiler so you can factor out a ton of issues
20:17:00 <geist> i think i already suggested this days ago and i swear you told me you *werent* using the apple toolchain
20:17:00 <sham1> But succeeding will bring many abilities considered supernatural
20:19:00 <geist> ilovethinking: i forget, are you doing 64bit or 32bit x86?
20:19:00 <geist> former: x86_64 latter: i686
20:37:00 <Lubrera> Geist: I am doing for Amd64 my AmigaOS-inspired OS
20:37:00 <Lubrera> I thought about the ideas you suggested
20:40:00 <Lubrera> Let's doing a capability oriented Micro-Kernel system where Amiga.Libraries are composed of a shared library component mapped into the task address spaces + a separate process (mayhave Multiple threads) and, this encapsulates the funcitonality an Amiga.Library has, but it deal with the problem that we haven't a single-address space like AmigaOS has
21:09:00 <geist> wait, who is Lubrera ? are you ilovethinking ?
21:14:00 <geist> or just unrelated
21:19:00 <mjg> geist: does fuchsia play games with lazy FPU state restore/
21:21:00 <Bitweasil> I thought it was shown that even with the lazy FPU state stuff, you could speculate your way to reading the FPU registers of some other process?
21:22:00 <mrvn> Lubrera: you can make a single address space with an MMU. You just use it for memory protection.
21:41:00 <geist> mjg: depends on the architecture
21:41:00 <geist> x86 no, arm yes. riscv yes (when i implement it)
21:51:00 <heat> is it still optimal on arm?
21:52:00 <heat> on modern ARM cores, that is
21:59:00 <sortie>
21:59:00 <sortie>
21:59:00 <sortie> ^^ Playing with procedural wallpapers
22:01:00 <geist> heat: optional what?
22:02:00 <heat> I said optimal
22:02:00 <geist> doing lazy fpu? dont see why not. you have to do it manually anyway, so there's not a hardware advantage to it
22:02:00 <geist> oooh. optimal, probably still
22:02:00 <geist> but dunno
22:03:00 <heat> AFAIK linux axed it on x86 around 2016 because it was slower than not doing it
22:03:00 <heat> particularly as many trivial programs can get SIMD insns sneaked in through the codegen
22:04:00 <geist> yah also there's hardware to optimially save
22:08:00 <sortie> but my pretty screenshots
22:09:00 <FireFly> sortie: I wonder if you could derive colours for the window decorations from the generated wallpapers
22:09:00 <FireFly> or, maybe you do that already..
22:09:00 <sortie> FireFly, fun fact, the opposite happens
22:09:00 <FireFly> oh
22:10:00 <sortie> FireFly, if you recall the algorithm it redraws based on adjacent pixels, but it's limited to the damage rect, sooo if a region next to a window is invalidated, the windows should bleed into it. Somehow that never happened when I tried to make it happen tho
22:11:00 <sortie> This was just a quick hack to see what it'd look like, I need to prerender the wallpaper to a background frame for fast render
22:12:00 <sortie> Y'all can't see it but I'm restarting the gui constantly here and it spawns a new beautiful wallpaper everytime that no one has seen before
22:14:00 <nortti> is it gonna be possible to ask the GUI what the current seed is?
22:14:00 <heat> that sounds pretty PESSIMAL
22:14:00 <sortie> nortti, yeah I was literally just thinking that
22:15:00 <sortie> I wasn't actually planning on committing to this but just having seen it in action... it's so cool that I need to commit it asap
22:15:00 <sortie> It's iconic and powerful
22:16:00 <heat> ICONIC
22:16:00 <sortie> If I ship this, people will probably start contributing procedural wallpapers instead of keyboard layouts
22:19:00 <heat> zid, contribute your keyb layout and/or money
22:22:00 <Ermine> Why tf i486 PCs cost $260
22:23:00 <heat> get a soviet i486 knockoff
22:23:00 <sortie> need discount nordic unix??
22:24:00 <heat> might actually work well for cpus without SMP
22:24:00 <heat> btw sortie do you have SMP yet?
22:24:00 <heat> how about ACPI?
22:27:00 <sortie> heat: Behold how beautiful my OS Is
22:30:00 <heat> sortie, it would be cool if you could do a shared mapping of that wallpaper
22:30:00 <sortie> heat, these wallpapers aren't fungi
22:53:00 <zid> heat did you fix clang yet
22:54:00 <zid> how do I contrigute a keyboard layout
22:54:00 <heat> it's this thing called an "ARRAY"
22:54:00 <zid> so I should dump my scancodes to characters?
22:54:00 <zid> my scancodes are not linear though
22:55:00 <zid> some of my scancodes are like 80 bits long
22:58:00 <sortie> ← Guess the bug
22:58:00 <zid> good news though, page 89
22:59:00 <zid> my keyboards are all HID
22:59:00 <heat> PS/2 go brrrrrrrr
22:59:00 <zid> 0xC2 is the XOR key.
23:00:00 <zid> (it has an AT-101 list too)
23:11:00 <sortie> ← Added wallpaper to the login screen too
23:21:00 <klange> neat
23:23:00 <sortie>
23:23:00 <heat> klange, why does toaruos not have this??????????????????????????
23:23:00 <sortie> klange, they're procedurally generated :D An random input color for a theme and then a random seed
23:24:00 <sortie>
23:24:00 <heat> u losing now, go get em
23:24:00 <klange> heat: because toaruos has a JPEG decoder
23:24:00 <heat> fucking savage
23:24:00 <sortie> aurora.c compiles to less than 4096 bytes, your move klange
23:24:00 <klange> can aurora.c generate waifus?
23:25:00 <sortie> I'm sure we can demo 4k up some waifus
23:25:00 * sakasama approves feature request.
23:25:00 <FireFly> klange: just send a suitable prompt to some stable diffusion net and overlay atop the aurora.c wallpaper,
23:25:00 <FireFly> well, overlay the result
23:26:00 <sakasama> Wouldn't you want it locally hosted? Local waifu is far superior to remote waifu, even if sometimes less convenient.
23:27:00 <zid> all my waifus are remote, they arrest you for local ones
23:27:00 <heat> good
23:28:00 * sakasama flees from zid's dystopia.
23:28:00 <zid> reality? yea same.
23:28:00 * sakasama nods.
23:30:00 <bnchs> hi cuties
23:30:00 <bnchs> oops wrong channel
23:31:00 * sakasama isn't cute anyways. :(
23:32:00 <sortie> When I met Dua Lipa she called me a cutie and went on her knees for me and dedicated her song Good In Bed to me
23:32:00 <klange>
23:33:00 <bnchs> hi cuties :3
23:33:00 <sortie> klange, love that 'can do' positive energy in that wallpaper
23:33:00 <bnchs> now this is the right channel
23:33:00 <heat> sortie, would blow the fuck up
23:34:00 <sortie> heat, you ever feel the envy of 84999 people?
23:35:00 <zid> heat always goes down on his knees for me, don't even have to ask
23:35:00 <sakasama> Proof that ToaruOS now has waifu support: finally is serious OS.
23:35:00 <zid> My OS *only* has waifu support
23:35:00 <klange> toaruos has had waifu support for a decade
23:36:00 <zid> heat can confirm, he has seen it
23:36:00 * sortie . o O (toaruos is a waifu delivery platform with an operating system division)
23:36:00 <sakasama> ... but no waifu packages? :(
23:37:00 <sortie> Honestly love that toaru screenshot collection page, klange has such a good taste in wallpapers that feel iconic
23:38:00 <sortie> It's partially why I retconned why I'm doing procedural wallpapers, to do something else that's also iconic
23:38:00 <sortie> (Real reason is that it just seemed like fun to hack up a procedural wallpaper last night)
23:39:00 <sortie> klange, oh hey minor super important cosmetic change in Sortix, the default root PS1 is now red and gold instead of green and glue (which is for normal users)
23:40:00 <klange> I use a red # instead of a green $
23:43:00 <sortie> That's what I do too now
23:44:00 <klange> Re: Wallpapers - 1.x was landscapes, 2.x is fauna, and everything in that album from the vim+python ports onwards is my own photos, which adds to the in-house-y-ness.
23:45:00 <klange> And I really need to get a new shot for 2.2.
23:46:00 <klange> Cherry blossom season is coming, so that's an opportunity for a new wallpaper.
23:48:00 <kazinsal> 3.x: absolutely gigantic honkers