<geist>
because most codecan be easily written in higher level languages and the underlying arch tends to bleed through not with asm, but with hardware registers and structure
<gog>
__attribute__((interrupt)) :p
* gog
hides
<j`ey>
gog: thats part of the 100lines of asm or so :P
<geist>
only works for a few arches. and not arm
<not_not>
yeah, but i remember back in gba homebrew days, the compilers werent arm optimized enough at the time most of the homebrew game went excellent in c BUT the sound mixer had to be written in asm
<geist>
arm64
<not_not>
havent even looked at arm64 yet
<geist>
yah, i meant to say more but got distracted
<not_not>
ye me too so much to think about here
<geist>
it's different enough that it's a completely new ISA
<geist>
but that doesn't matter much, honestly. except the few 100 lines of asm you'll have to write
<not_not>
ye but im interested to see if the C compiler takes full advantage of all the new features of the arch
<geist>
yes, actually the more i work with arm64 the more clever the arch appears to me. it has a few strangish instructions that seem non intuitive or specialized
<geist>
and then you see how the compiler uses it and it's pretty neat
<not_not>
XD nice
<geist>
but it's less 'fun' than arm32
<geist>
arm32 was a fun isa to write asm in. flexible and neat and had a lot of cute features
<not_not>
AWW
<not_not>
yee i remember
<geist>
arm64 is more simpler, they ripped out the fancy bits and made a much more straightforward and powerful ISA
<geist>
but no where near stripped down as risc-v
<not_not>
mhmmm
<not_not>
ye arm32 asm coding was like pulling a bank heist
<geist>
highly recommend playing around with https://gcc.godbolt.org/ so you can see what codegen looks like
<geist>
a great way to get a taste of a new architecture
<not_not>
and then activate the dma even tho ur not even done copying the sound buffer or else clicks come kinda coding
<geist>
do note that the cpu in the pi3b is at least an order of magnitude more powerful than the gba one
<geist>
and has 4 of them. so SMP is real. and SMP is complicated (especially on ARM)
<not_not>
oh yeah
<not_not>
what is SMP?
<not_not>
sec il google it not to look stupid XD
<geist>
symmetric multiprocessing
<not_not>
im on a very unupdated system just moved drives and did backups on the files i dont want to get destroyd
<not_not>
and im on an arch system, if u let an arch system dust off for a year and then do a sys update off all the packages break
<not_not>
geist: my plan is, once i get the jump into kernel main i shall make a kernel debugger
<geist>
okay, not a bad idea
<kazinsal>
having facilities to debug what's going wrong early on is handy
<geist>
agreed
mahmutov_ has quit [Ping timeout: 260 seconds]
<geist>
also doing early dev on an emulator greatly simplifies things
<kazinsal>
even if it's just being able to unwind context in a crash with symbolic names for things instead of having to cross-reference an nm output
<gog>
qemu is nice because you cn attach a debugger to it
<geist>
qemu has great arm32/arm64 support
<not_not>
geist: ye i tried qemu
<geist>
yah and !x86-64 doesn't have the silly gdb mode thing like it does
<not_not>
when trying to do stuff from rehab
<geist>
so you can start gdb debugging from instruction #1
<gog>
and if you're really desperate trawl through pages of memory with xp
* gog
has done this to debug page tables :p
<not_not>
lol nice
<geist>
yah sadly that's an area qemu doesn't have support for on arm64: `info mmu`
<not_not>
also, only revolutionary thing my os will have
<not_not>
for the user
<not_not>
is the desktop has 2 mice
<gog>
geist: wtf happned to doug? he had that handy info tlb extension
<not_not>
(or more ofc)
<geist>
gog: yeah i dunno
<not_not>
one mouse on the left of ur keyboard, one mouse on the right of ur keyboard
<kazinsal>
disappeared during the libera transition
<gog>
he was here at first
<not_not>
and 2 cursers on the screen
<not_not>
u can click with one cursor on the corner of say a window
<geist>
i've seen that done and it's not pretty
<not_not>
hold it down, and drag with the others
<not_not>
geist: it has been done before?
<heat>
how do you know which one is which?
<geist>
but if you can crack the ui issues that causes then go for it
<geist>
oh gosh yes. it's an obvious thing to try
<not_not>
i know right
<kazinsal>
it's like multitouch, except insanely awkward
<geist>
wouldn't be surprised if klange even tried it
<geist>
kazinsal: exactly
<not_not>
ye but the ui itself being subject to such abuse isnt even usefull
<kazinsal>
it's less that it doesn't work from a functional perspective and more that human hands don't work that way
<geist>
i remember someone fiddling with it on BeOS back in the late 90s
<not_not>
im thinking more in terms of 3d modeling software
<not_not>
painting programs
<not_not>
games
<geist>
but i think it was not obvious how to use it without just being awkward
<klange>
not in yutani, but we did some experimentation in Compiz back in the day when multitouch was new and cool
<not_not>
kazinsal: thats why u make a left handed mouse physically on the other side in my head tho
<heat>
few people are ambidextrous
<not_not>
heat: i am
<heat>
few
<gog>
my sister is
<geist>
that being said having dedicated controls and whatnot for modelling stuff is nice
<gog>
i am definitely not
<not_not>
u can learn ambidexterity
<geist>
like generic support for knobs and buttons and sliders and wathnot
* gog
looks at the nail painting job on her right hand :'(
<not_not>
its just very weird in the beginning but worth it once u can use both hands kinda synchronously
<not_not>
hmmm they tried mirroring the movements of the other mouse?
<not_not>
there is some mirror trick to the opposite hand
<not_not>
ls
<not_not>
ops
<heat>
do sudo next
<not_not>
thought u were gonna sneak in thru the hypervisor XD
<not_not>
geist: intel x86_64 tho u like it better than arm64?
<geist>
no
<not_not>
ok, u dislike it even?
<not_not>
cuz i barely looked at it and was like GOD, only userspace asm tho but still
<geist>
not particularly
<heat>
everyone that has ever touched x86 has a love-hate relationship with it
<geist>
yah i mean, it's mostly a dumpster fire, but it's also kinda fun
<not_not>
heat: yeah i know what you mean
<geist>
but honestly the ISA i could care less about. ISA is fun, but that's just the first level, the first thing you see
<geist>
the bark of the tree
<not_not>
yeah im more interested in the unknown unknowns
<geist>
where things get interesting for kernel programming is the model of how it handles things like paging, interrupts, supervisor/user mode, virtualization, etc
<geist>
and thats the real meat of it, IMO
<not_not>
ye
<geist>
and in that case x86-64 and arm64 are fairly different beasts
<geist>
also riscv which i've been doing a lot of work on, which is also refreshingly simple
<not_not>
ye i figure, i know almost NOTHING about cisc
<geist>
no i mean riscv
<geist>
risc-v is a new architecture
<not_not>
and only time i ever had to write an assembly program in x86 was because i needed to use xorl %eax %eax instead of movl 0, %eax
<geist>
a contemporary to x86-64 and arm now, since new vendors are making things with it
<geist>
i dont mean risc vs cisc, that's an old tired dead debate. i mean the architecture risc-v
<not_not>
ye ye
<not_not>
geist: ye risc vs cisc debate was way before my time, only thing i ever noticed about that debate is angelina joulie says risc is the future in that movie from 1995
<geist>
nice, well whatever she says in that movie do not attach much weight
<heat>
i wonder if there's an advantage to cisc in performance when in a VM
<heat>
it should be way easier to do a complex instruction entirely in simpler instructions vs trying to fuse really simple risc instructions into a complex, fast one
<geist>
heat: as in a virtualized virtual machine?
<heat>
yeah, qemu jit
<geist>
or an emulated thing
<not_not>
no, she was rolling around on roller blades and hacking the gibson
<heat>
emulated then
<gog>
they were saying risc is the future since the 80's
<geist>
ah no i dont think so. one of the issues with jitting (or emulating) a cisc arch, or really any arch that has a flags register as a side effect of arithmetic and whatnot (arm/arm64 is this too) is you have to do this extra work computing flags that you dont know if they're used or not
<geist>
or you need to do much more complex tracing to determine
<not_not>
well risc is GREAT if ur making a 2d gaming platform, u dont need hardware division or anything
<geist>
qemu's jitter tries to do this, and can do some simple analysis when it's building a run of instructions it tracesw through
<geist>
not_not: risc has nothing at all to do with division or lack of
<not_not>
geist: nah, but this risc im talking about didnt have div in ints instruction set
<geist>
heat: i've watched qemus jitter do its work with riscv and it has a much simpler time, since all instructions dont have side effects
<geist>
was going to say in a virtualized VM you also have the advantage that risc architectures usually have less types of load/store instructions so its much easier to handle a trap via memory instruction
<geist>
x86 virtualization is even with assist really complicated when you trap
<gog>
ok my wife has had enough of her fancy new gaming rig for the moment so i'm gonna take this opportunity to play a little fnv
<gog>
later
gog has quit []
<not_not>
nn gog
<not_not>
but ye geist what really concerns me here is multi core, should the kernel run on one core to rule them all?
<geist>
nope. that would be precisely not the definition of 'symmetric' in symmetric multiprocessing
<heat>
geist, how do you look at the jitter?
<geist>
heat: iirc, its somethin glikme
<geist>
`-d asm_in,asm_out,exec`
<not_not>
geist: ok ok, so symetric all cores run the kernel, but they run "mirrored" to one another?
<geist>
something in that area. you can observe it take a run of instructions, generate intermediate IR, and then the output. it's fascinating to see it work
<not_not>
ye this symetric stuff is interesting, imma google it once i get a stable browser
<geist>
heat: you'll only see it the first time i hits a 'trace' of instructions, but it's really need
<geist>
not_not: early multiprocessing kernels may have done more of what you're talking about
<geist>
stuff in the 80s, etc. ie, cpu 0 runs the kernel, cpu 1-N runs a thread till it needs to block or whatnot, then cpu 0 figures out more tasks
<not_not>
yeah but i've been thikning about it and its stupid
<geist>
nothing does that anymore, that's not very performant or flexible
<geist>
well, no it's not stupid at all. it's an obvious first step
<geist>
lot sof real systems worked that way for many years
<heat>
woah this is really cool
<not_not>
no its not STUPID, it works and its easier to implement and easier to do without fucking up
<geist>
but, modern designs, 1990 or above or so tend to be symmetric kernels
<geist>
in which case the kernel simply runs on all cores, and all cores are equal
<not_not>
ok
<geist>
but it means the kernel functionally looks like a multithreaded program
<not_not>
ye
<geist>
in that multiple cpus can be at any time running threads in various programs, or be 'inside' the kernel
<not_not>
yeee i see
<geist>
and the kernel has to handle locking its own data structures and cant rely on implicitly having a single cpu running in it
<not_not>
ye
<heat>
1 jmp -> 9 instructions. yuck
<geist>
heat: yeah branches tend to be the end of a trace, so you'll see the jitter have to button everything up and branch out
<not_not>
OOOH one of the things i LOVE about arm is it has conditional normal instructions
<geist>
not_not: yah not anymore. arm64 removed that
<eryjus>
geist, isnt there a scaling concern where when you have enough cores it makes more sense to dedicate a core to the scheduler?
<not_not>
AWW geist any reason?
<heat>
eryjus, I can see how that can blow up really easily
<geist>
not_not: hard to do in modern designs. lots of the fun stuff arm32 had are anti-patterns as far as modern superscalar cpu design
<not_not>
aha
<geist>
conditional instructions, SP is a regular register, the barrel shifter, etc
<not_not>
ahhhhh good times
<heat>
most of the timers would fire at roughly the same time
<geist>
these are all things that are fun for a programmer, but are not used that much, chew up a lot of bits in the instruction, and cause headaches for superscalar designs
<not_not>
ok ok
<not_not>
well i wanna be most up to date with the newest way of doing things
<geist>
so arm64 is much more of a traditional design: all instructions are 32bits, no funny conditional instruction stuff, etc
<not_not>
ok
<not_not>
awww
<geist>
the still 'odd' things are somewhat holdovers from arm32: it has a flags register (lots of risc machines dont have that) and SP is a dedicated register outside the register file, which is a bit strange
<not_not>
yeah thats kind of one of the reasons i suggested id write much of my kernel in asm, cuz 32 bit arm had loads of those tricks
<geist>
but it also has twice as many registers (32), and there's a 'zero' register
<not_not>
mkay
<geist>
oh also PC isn't a regular register like it was on arm32. really fun tricks you can do with that but a superscalar nightmare
<not_not>
well i did a very basic processor design in logisim where the iptr was connected to its own very small ram, wich it used as a physicallt seperate stack
<not_not>
for functioncalls, no way return adresses can be overwritten like that
<geist>
oh oh and one thing you'll hate: no load/store multiple instruction
<geist>
that was so much fun on arm, but alas, it's also a superscalar nightmare
<not_not>
and its propably a fast way in terms of cache memory
<geist>
so they simplified the ISA in that all instructions are basically deterministic in terms of doing things
<geist>
ie, no 'sit around and do things until i tell you to stop' style instructions
<not_not>
ok fuck that im doing an x86_64 kernel instead
<geist>
plus no easy way to encode a bitmap when you have 32 registers
<geist>
well, so frankly if *this* is the reason you choose an arch, i'm not sure your heart is in the right place
<geist>
plus... uh if you care about the ISA x86 is not my first choice
<not_not>
nah but i dont have any other machines lol
<not_not>
really i wanna write my own instruction set
<geist>
you should start with an emulator anyway
<not_not>
ye
<geist>
or write your own ISA and an emulator for it. it's fun
<not_not>
ye thats what im planning on
<geist>
i've done it a few times. actually have a little machine here on my table with a bunch of lights on it running a test loop
<geist>
using a little isa i tossed together
<not_not>
ooh nice
<not_not>
yeah thats what imma do instead
<not_not>
i feel that is the future, i wanna make something unique
<geist>
note that writing an emulator means you immediately have to write an assembler and/or port a C compiler
<geist>
and the latter is very hard
<geist>
the former is kinda fun
<not_not>
dw i just wrote half a compiler
<heat>
is porting llvm that hard?
<not_not>
for another language
<not_not>
but
<heat>
i imagine gcc is a mess because it's gcc but
<geist>
heat: i think it's easyish if you know what you're doing (ie, have done it before) and b) also have a supercomputer to compile it
<geist>
gcc is at least an order of magnitude easier to compile. plys you can port binutils first get that working, then tackle gcc
<heat>
geist, I remember doug compiled LLVM in ~10 min
<geist>
yah i think doug had a 3950x like i do
<not_not>
the C compiler could be tricky BUT doesnt it compile into some intermediary bytecodes and then translate them into the specifics?
<heat>
shouldn't be horrible with incremental linking
<geist>
if you had a lesser machine, start adding multipliers to that
<heat>
especially with ninja
<heat>
s/linking/building/
<geist>
depends on how many core headers get touched during the port and how much it forces a rebuild
<not_not>
cuz if you write ur own isa its BOUND to have many basic instructions that are similar so you could make an "asm translater" to make other programs WORK but not nescessarily work optimally
<geist>
like i said i think if you know what you're doing it's not too bad, or at least a lot of typing
<heat>
iirc the instruction lowering stuff is mostly self contained in like a single file
<klys_>
not_not, am somewhat curious about your new language
<geist>
but of course knowing what to do is the hard part
<heat>
such that the x86 code literally can't be shown in github because the file is too big
<geist>
i've thought about doing it just to bootstrap but then i've thought of donig a lot of things
<not_not>
klys_: well, instead of variables being "x = 10"
<not_not>
klys_: then its "x = not 10;"
<not_not>
"x = not not 2"
<not_not>
"x = not not -2"
<not_not>
"x = not 0"
<klange>
>>> let x = not 10
<klange>
=> False
<not_not>
i hate langs that use the word let
<klange>
👍
<kazinsal>
it's var for cool kids
<geist>
anyhoo, gotta go for a bit
<klange>
live and let live
<geist>
stick around not_not , the power of irc is idling on it
<klange>
not live and var live!
<not_not>
klange: in this language 0 or 1 isnt regarded as true or false, but not or not not
<klys_>
not_not, how is "x = not not -2" evaluated?
<not_not>
klys_: it isnt evaluated, its just assigned in a table of what x is not and what its not not
<not_not>
your name is not not klys_
freakazoid12345 has joined #osdev
<klys_>
not_not, can I have a macro "might be" that evaluates to "not not" ?
gorgonical_ has joined #osdev
<not_not>
yes, but its not the ultimate answer to what it is
<klys_>
of course
<not_not>
but say this: "x = not not 2; x = not not -2"
<klys_>
or for parsimony "mebby" might suffice
<klys_>
what does it look like when you print out x ?
<not_not>
depends, you dont know what x is in this language
<not_not>
you never do
<not_not>
you only know what x isnt
<not_not>
oh ye u can say "x = not 1"
<not_not>
not is not an infinite boolean variable
<klys_>
what kind of semantics might copy the offset of a register into another register?
<not_not>
what in my language? its not bare metal stuff, its more gonna be high level
<klys_>
now that I reread what I just said, I must have meant the offset of a variable
<klys_>
so, high level like python (read: what klange did)? no pointers?
<not_not>
like how much space in memory it takes?
<klys_>
where it is in memory? or that might help too
<not_not>
klys_: thats not something i have decided yet
<klys_>
okay carry on then
<not_not>
not is way more usefull programming human cognitions with
<klys_>
have you looked into qubit programming?
<not_not>
not not
<klys_>
perhaps then. carry on, may ask another day.
<not_not>
ive used them yes
<not_not>
and they work yes,
<not_not>
well i wont get in trouble for talking to you about it, its not like the millitary let me use them and made me sign an nda
<not_not>
but qbit stuff is very awesome
<klys_>
I was just guessing that's where you got the idea from
<not_not>
u mean the not not?
<klys_>
yeah
<not_not>
no i actually got the idea for qbits from not not actually (even tho i knew of cubits before i found out about not not)
<not_not>
if i ever gonna take credit for an invention or a discovery it has to be not not
<not_not>
yeah cuz i was trying to find the "ULTIMATE CONCEP" one time while wandering on my philosophy trip in the forrest
<not_not>
like what concept u need to define all other concepts
<not_not>
so i started with the concept of opposites, no its not opposites
<not_not>
was thinking about "oh since 0 is not 1, and 1 is not 0 then 1 is 0" !?!?!??!?! "BUT IF THAT MAKES 1 into 0 then WHAT DOES NOT MEAN?!?!?!?!"
<not_not>
then i realized
<not_not>
i dont KNOW what not means
<not_not>
u can't know what not means
<not_not>
that experience of not understanding what not means is what not means
<not_not>
since not is always implicitly used and prolly hardware inbuildt neurologically in humans too not just in computer hardware
<not_not>
we just asume since "no an apple is not a banana" that we KNOW what not means
<not_not>
but we dont know what not means
<not_not>
not means not knowing what not means
<not_not>
thats actually why if someone tells you "do not think of a pink elephant" you think of one, because you think you know what not means
<not_not>
but if you know you dont know what not means "do not think of an elephant" is easy, because you dont know what not a pink elephant means
MiningMarsh has joined #osdev
<klys_>
I had actually been working on a simple token parser to generate riscv64 mnemonics, and then got busy with work and things
<not_not>
ahh nice
<klys_>
It can generate an "li" instruction with regs or a reg and a number, so far
<not_not>
but ye not understanding what not a pink elephant means saves your brain alot of processing power
<not_not>
li as in load immediate?
<klys_>
yeah
<not_not>
hmm, imma try and make up a basic made up instruction set right now
<heat>
i wonder how hard it is to design a motherboard/SBC
<not_not>
Oh ye, also gonna try and have an input routine wich determines the likelyness of input comming from a human
<not_not>
or a program
<klange>
Speaking of kuroko, I kinda neglected to actually mark off releases on github despite bumping version numbers... so just plopped a 1.2.2 release up with a deb and win32 zip
<not_not>
hmm gonna try and invent a weird processor, not like the other processors
<kazinsal>
well now I have even less of an excuse not to learn it
<not_not>
this processor is gonna have real problems with authority its not even gonna run code
<not_not>
it refuses, its a teenage
<not_not>
hmm an isa telling the cpu what not to do?
<not_not>
like "dont add r1 to r2"
<klange>
I fully believe that people who "know python" are still generally boggled by its scoping rules, and thus if you "know python" you probably already know Kuroko better than you know Python even if you've never touched it.
<not_not>
what is Kuroko?
<not_not>
is it better than python?
<klange>
Kuroko is a dialect of Python I wrote because I wanted a language to write syntax highlighters and plugins for my editor in.
<klys_>
now you have to document everything :.)
<not_not>
klys_: ahhhh nice i was thinking of doing something like that once
<not_not>
klange: u got it up somewhere?
<kazinsal>
the toaruos rabbit hole: I wanted to write an operating system, so I wrote the whole universe first
<not_not>
kazinsal: i discovered the source code for the whole universe, its actually 3 lines long and only uses one instruction
<klys_>
eye of the needle
<klys_>
really it just seems like an epistemological puzzle
<not_not>
kazinsal: "not; not not; not not not;"
gog has joined #osdev
<kazinsal>
that reminds me, I need to go to the weed shop
<not_not>
XD
Burgundy has quit [Ping timeout: 256 seconds]
<not_not>
off same, but i dont have shop yet
<not_not>
they were like "ye weeed gonna be legal to posess now soon"
<not_not>
but the labour party changed their mind but im ok about it
<not_not>
most likely politics about workplaces and stuff like that
elderK has joined #osdev
* gog
passes the boof to kazinsal
<klys_>
not_not, iirc if you have access to JSTOR I might recommend "challenges to Audi's ethical intuitionism - K.Kappel"
<gog>
i played for about 40 mins but I'm too drowsy
<not_not>
off ethical
<not_not>
ethics are important in science
<not_not>
it really is
<klys_>
that is, if you're going to school or something
<not_not>
well, i wanna go to school again next year but, not talking ethics as in "we shouldnt gmo humans because the non gmo humans will be bullied in school"
<not_not>
besides u can learn to upgrade ur dna ftl from hindus on youtube
<gog>
i would like to be genetically modified pls
<not_not>
talking ethics of science when ur not in school, but you have with your curiosity and dangerous lust for experiments
<not_not>
gog sec ill refer u he much better at gene updgradations than me but
pretty_dumm_guy has quit [Ping timeout: 240 seconds]
pretty_d1 has joined #osdev
<not_not>
this is ethics in science, i can send you my stuff, my brain software, but it can be dangerous, its not tried and tested over 1000s of years
<heat>
tf
<not_not>
gog sec ill pm u the vids in the right order
<gog>
that's not necessary lol
<not_not>
gog ok, but ill send the one where he talks about cognition being programmable software
<not_not>
cuz its fun to write programming languages for your brain
<not_not>
i've made some that are way better than drugs
<not_not>
and the brain is way more multitasking and has way more depth to it than a processor
<klys_>
#algorithms or #proglangdesign here
<klange>
After that snafu with Sumerian, never again.
<c2a1>
Is sumerian hard?
<gog>
sick snow crash reference
<gog>
and timely since the metaverse is a thing now
<not_not>
what metaverse as the lame ass piss they are gonna make the web seem like?
<klange>
As gog notes, I'm referencing a classic cyberpunk novel by Neal Stephenson. Wikipedia summary:
<klange>
> The book presents the Sumerian language as the firmware programming language for the brainstem, which is supposedly functioning as the BIOS for the human brain. According to characters in the book, the goddess Asherah is the personification of a linguistic virus, similar to a computer virus. The god Enki created a counter-program, which he called a nam-shub, that caused all of humanity to speak different
<klange>
languages as a protection against Asherah (a re-interpretation of the ancient Near Eastern story of the Tower of Babel).
<not_not>
klange: dude no joke, i know a guy who quotes that stuff and is heavy into dune, he legit hacked my brain
<not_not>
could move my mouse around with my own hand
<not_not>
like i know one other guy that i met who can program people to do his bidding
<not_not>
and i can sorta mind controll and read minds (but i dont generally do it, did it once to a friend cuz he came unnanounced to my room when i was doing home alone brain modding hyperoxygenating my blood and some meth)
<not_not>
and 2. time i did it to the government when they tried to pass 1986 laws on the population, i.e using the 22. july victims and the increased danger of terror and "oh had the govt only had the legal means to hack every citizens pc if they suspect you for 0.001 grams of pot those children could have been alive"
<klys_>
these are the rules: 1. no terminus, 2. no meth, 3. no philosophy.
<not_not>
OK
<not_not>
done
<not_not>
what is terminus?
<klys_>
you'll have to look that one up
<kazinsal>
what
<gog>
uh ok
<not_not>
its a hotell in my town
<klange>
These are the rules: 1) Don't ask to ask. 2) Gist anything >=3 lines. 3) Your Linux distribution isn't an OS, go away.
<klys_>
1. The end or final point of something.
<not_not>
but can we philosophise over computer architechture and OS architecture?
pretty_d1 has quit [Quit: WeeChat 3.3]
<klys_>
not easily, it may warrant code
<gog>
metaphysics is a banned topic
<not_not>
klys_: im making my new isa now and making my own virtual processor / emulator instead of
<not_not>
gog: ok
<not_not>
what about quantum physics?
<klys_>
between consenting parties who are aware of how it works, perhaps.
<kazinsal>
depends on the status of the mind control and/or meth
<not_not>
klys_: well there can only be ONE in quantum, so 2 conscenting parties wow
<klys_>
to remark on it is merely me suggesting this is a physical puzzle, perhaps another forum, ask /msg alis list dynamics (physics)
<not_not>
kazinsal: lets just say 2 days later i see on the news "no we suddenly care about human rights and for the govt to hack your pc legally you need to be a suspect of a crime that carries a strict sentence
<kazinsal>
what
<not_not>
well im just trying to think ahead of time with os development, quantum computers needs operating too
<not_not>
kazinsal: thats the status on the mind controll
<klys_>
no it isn't a privacy related forum afaik
<not_not>
nah i know but shouldnt developing an os always somehow consider what could be a security bug
<not_not>
cuz imma drop arm64 and x86_64 for now and write my own ISA and emulator
<klys_>
that depends on who you believe and why you enabled paging
<not_not>
hehehehe
<gog>
security is an illusion anyway
<not_not>
ye my isa does something smarter, all the registers have their own seperate stacks of fast ram
<gog>
you can't even trust the hardware to be secure
<not_not>
gog: ye, u can forget about keeping the millitary from knowing whats on ur pc
<gog>
i don't think what's on my computer is of interest to the military anyhow
<moon-child>
nice job breaking those windows
<not_not>
nah, besides the millitary r cool
<not_not>
but ye my isa, every reg has its own personal stack of fast ram
<not_not>
might speed up all the cache nonsense
<gog>
you mean a register file?
<not_not>
ye
<gog>
that's already a thing in OOO cpus
<not_not>
that prolly exists ye
<not_not>
u know if its faster than caching?
<klys_>
out of order execution is different from caching
<gog>
its transparen5
<kingoffrance>
wait wait wait, is this another case of registers eventually will be large enough to fit pages in them
<kingoffrance>
see, its inevitable!
<gog>
4096 byte registers hell yeah
<klys_>
4096 * 8 = 2^15
<klys_>
4096 / 9 = 456
<Affliction>
don't GPUs have 32+KB worth of registers in each cluster?
<klys_>
hmm GPU talk is rare; perhaps you are a bit more familiar
<not_not>
anyhow, my first logisim cpu, only had 8 instructions (+-[]><,.) so it was turing complete and ran brainfuck
<klys_>
is , dup and . drop?
<not_not>
but iptr reg had its own little ram with its own little stack pointer reg so return adresses can never be overwritten in that architecture
<klys_>
dup is the forth mnemonic for duplicate and drop is more obvious forth
<Affliction>
And I think the biggest chip has 64 SMs
<klys_>
kingoffrance, are you pointing out a dualistic problem with the idea?
heat has quit [Ping timeout: 250 seconds]
<klys_>
he probably is.
<kingoffrance>
no, it just seems the reverse of my joke...well, yes there is some dualism there, but i dont consider that a problem
<kingoffrance>
:D treat registers as ram versus having their own fast ram
<kingoffrance>
they almost intersect
<Affliction>
There were some CPUs where the 'registers' addressed RAM
<klys_>
the process of elimination would be the problem to work on with not_not
<gog>
I'm an anarchist and i reject hierarchies and that includes the storage hierarchy
c2a1 has quit [Read error: Connection reset by peer]
<klys_>
gog, can you even run a system without paging on your box?
<gog>
paging is the memory management equivalent of borders
<kingoffrance>
the only reason i came up with the joke, is it seems punch cards had libraries , collection of subroutines maybe. so, nowadays a sw library > many punch cards
<kazinsal>
reject storage hierarchy, implement non volatile cache
<kingoffrance>
like that seemed to have happened long ago there
<kingoffrance>
it would be hard to discover who came up with "library" first or if ppl meant to imitate eachother etc. of course
<kingoffrance>
it was something like that anyway, maybe wasnt "library"
<kingoffrance>
it was "volume" perhaps
<kingoffrance>
volume (disk) > library of yore
<klange>
"library" supposedly dates all the way back to the 40s
<gog>
bókasafn takk
<klange>
Didn't even have a working computer yet, but von Neummann and other members of the team working on the IAS had envisioned actual libraries of magnetic wire recordings.
<klange>
(Magnetic wire recording being a precursor to tape)
<kingoffrance>
"The terms hypervisor, emulator, and virtual machine are all overloaded and interconfused." not the first time, wont be the last
<klange>
When they built the EDSAC it became a cabinet of punch cards, entered usage in COBOL and FORTRAN more akin to the modern conception, and on things went.
<clever>
i would consider an emulator, anything that is running a non-native ISA
<klange>
Imagine if we called them cabinets... [instead that's a name that got used for an archive format]
<clever>
and a virtual machine is running a whole other OS as a guest under something
<klange>
Ya ask me...
<clever>
and a hypervisor is then just a type of software that can support virtual machines
<clever>
qemu kinda adds to the confusion, by being all 3 at once
<MelMalik>
an emulator can also run the native ISA in a non-native way
<klange>
A hypervisor is supposed to be a top level thing that runs a bunch of things underneath it. ESXI, KVM if you're hosting a bunch of VMs in it.
<clever>
MelMalik: heh, yeah, i have used the x86_64 qemu-user, to run binaries on x86_64, lol
<clever>
MelMalik: specifically, to reproduce a bug that also occured under a full qemu guest (when kvm was off), without booting another os up
<MelMalik>
eeeeeee lol
<not_not>
yeah qemu was as far as i got in my osdev
<klange>
An emulator is just a fancy word for a simulator. It pretends to be something. QEMU is an emulator even under KVM because it emulates hardware - devices, specifically, but a hypervisor may not be an emulator at all if it's providing purely abstracted access to real hardware.
<klange>
And a virtual machine is a piece of software the pretends to be its own computer.
<clever>
and then there is paravirtual guests, where the guest kernel is aware that its under a virtual machine
<not_not>
ye, writing one now
<clever>
so it can be using a hybrid of emulated hw, and virtual hw that never really existed
<klange>
"You don't need to pretend too hard, I can pick up the slack."
<not_not>
well, lets see if qemu wants to behave on this very machine
<klys_>
yeah qemu can boot your machine, and I do that occasionally, though you should probably have some other partitions and a boot menu already in place.
<klange>
I've historically done a lot of testing in QEMU with just its own kernel loading facilities, and as much as someone on a Discord may give me shit for it, it's a perfectly cromulent and effective way to go through rapid development.
<clever>
the only time ive had trouble with qemu -kernel, is when doing rpi firmware stuff
<clever>
my linker script assumes the .bin is loaded to arm physical 0, but -kernel loads it to something like 0x8000
<klange>
no idea what it parses for that, probably just Linux?
<klys_>
clever does your .bin load your kernel or is it your kernel?
<clever>
oh, but i did see elf loading code in -kernel for arm
<klange>
multiboot1 being x86-specific, multiboot2 being unimplemented and I don't think it was ever specified for arm anyway...
<klange>
well, yeah, Linux kernel is generally an elf ;)
<clever>
klys_: the .bin is a bootloader, it expects to be at arm physical zero, it turns on the mmu, loads another kernel from the sd card, turns the mmu back off, and passes on control
<clever>
yeah, but the zImage and Image files, are not .elf, but a custom thing
<clever>
but if i toss my custom .elf to -kernel, it may do something interesting
<klys_>
clever, so is your Image ultimately loaded to 0x0 ?
<clever>
klys_: yep
<clever>
and the rpi machine in qemu cant easily do that, so i have to adjust my linker script to co-operate
<klys_>
so what do you end up doing with the rpi?
<clever>
klys_: i'm using custom firmware, that can just put the .bin at 0 properly
<bslsk05>
github.com: lk-overlay/arm.c at master · librerpi/lk-overlay · GitHub
<klange>
Has qemu gotten better at emulating an rpi? I remember back in the day there were all sorts of quirks even if you asked for one, it was like a different platform...
<clever>
klys_: line 205 will copy the .bin file to arm physical 0, 337 turns the arm core on
<not_not>
klange just found my x86_64 half done bootloader
<clever>
klys_: prior to 337, the arm core isnt capable of executing anything
<clever>
klange: it is missing a lot of hardware, and the sdhost peripheral behaves slightly differently (but linux doesnt care/notice)
nyah has quit [Ping timeout: 256 seconds]
<klys_>
clever, it appears line 203 is an answer to the question I'd had
<clever>
klys_: the rpi has the same 1gig of ram, aliases 4 times in the VPU address space
<clever>
klys_: the alias at 0xc, is the uncached alias, so all access goes directly to ram
<klys_>
hmm so there isn't hardware in the low address space
<klys_>
sounds good
<clever>
klys_: all MMIO is in a 16mb block starting at 0x7e00_0000
<klys_>
my pi4b right now is rebroadcasting a playstation2 to another window here
<clever>
the ram exists 4 times, at 0, 0x4000_0000, 0x8000_0000, and 0xc000_0000
<eryjus>
klange, I think so for the rpi2 line.... every time I thought I had a "quirk" last year it was my code
<clever>
klys_: there is also a boot rom at 0x6000_0000, and some boot ram (not reliant on the ram controller) at 0x6001_0000, but both can be turned off somehow
<clever>
klys_: but also, a large chunk of the above is invisible to the arm, because there is an extra mmu between the arm physical bus, and the above
<clever>
normally, only when doing DMA do you need to know the above, because the DMA is outside of that special MMU
<klys_>
so how many mmus are between the DDR RAM and the arm64 main core?
<clever>
klys_: on the pi0-pi3 lineup, 3 i believe, the hypervisor mmu, the normal kernel+userland mmu, and the broadcom custom mmu
<clever>
for the pi4, i think its 3, but there may be more?
<klys_>
okok
<clever>
the pi-pi3 only supports 1gig of ram, so it fits perfectly in those 4 aliases
<clever>
but with the pi4 and up to 8gig for sale (and the soc supports 16gig), things get more complx
<clever>
the lower 1gig operates by the old rules
<clever>
but the "high mem" operates by new rules, and can only be seen by the arm and some newer 64bit capable peripherals, the old hw cant see "high mem"
<klys_>
this is all so similar to A20
<clever>
those 4 aliases, are for a different reason from the A20 though
<klange>
why are computers so weird
<clever>
bit30/31 are used as cache control flags
<clever>
rather then A20, where it wasnt even wired, and just wraped around to the bottom of the addr space
<clever>
the VPU addr space lacks an MMU, and instead has more of an MPU, so you cant set cache config in the paging tables
<kazinsal>
sand was never meant to think
<klys_>
the keyboard controller is perhaps a precursor to the MMU
<kazinsal>
klys_: congratulations, you are the winner for today's most cursed sentence
<klys_>
haha
<klange>
keyboards are basically just big pieces of ram you control with your fingers
<kazinsal>
array of physically-implemented 1-bit analog registers
<klange>
i have definitely hammered a few rows on my keyboards in the past
<klys_>
clever, yeah I use some interesting chips, two of them are 74ls244
<not_not>
god
<klys_>
and the main one in the top right is 71256sa25tpg by renesas
ElectronApps has joined #osdev
<klys_>
led[ 9 ] is controlled by a 1 second astable 555
<klys_>
...which is the first thing I did there.
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
<moon-child>
hmm. I think most explanations of virtual memory start off by saying 'an application thinks it has the entire address space to itself'
<moon-child>
which seems rather confusing because it's never explained how an application would know anything about its address space
<moon-child>
so I wonder if there's a clearer way to explain that
isaacwoods has quit [Quit: WeeChat 3.3]
<klys_>
"given the allotment of prominent assembly instructions, envisioning process with the entirety of address space available to access itself, is common from a security or risk management perspective."
<klys_>
"ergo, it is evident from behind the memory management unit that all of address space may be accessed without repercussions."
<klys_>
"such repercussions may include, yet are not limited to, destruction of other operating conditions external to process."
<klys_>
...
<klys_>
to spell out what is "external to process" I would just go over the major abstractions: regions, mappings, threads, ports, semaphores, and mutual exclusion
Oli has quit [Quit: Lost terminal]
elderK has quit [Quit: Connection closed for inactivity]
vdamewood has joined #osdev
Oli has joined #osdev
not_not has quit [Quit: Lost terminal]
[itchyjunk] has quit [Read error: Connection reset by peer]
sdfgsdfg has joined #osdev
sdfgsdfg has quit [Read error: Connection reset by peer]
sdfgsdfg has joined #osdev
bradd_ is now known as bradd
sdfgsdfg has quit [Quit: ZzzZ]
sdfgsdfg has joined #osdev
Oli has quit [Quit: leaving]
k0valski18 has joined #osdev
the_lanetly_052 has quit [Ping timeout: 240 seconds]
the_lanetly_052 has joined #osdev
mahmutov_ has joined #osdev
GeDaMo has joined #osdev
mahmutov_ has quit [Quit: WeeChat 3.1]
mahmutov has joined #osdev
srjek has quit [Ping timeout: 260 seconds]
gorgonical_ has quit [Ping timeout: 265 seconds]
<klange>
The modularization/widgetification of ToaruOS's panel is finally complete.
<geist>
EXCELLENT
<geist>
now the rebels will have no chance
<klange>
Next I want to add support for widgets written in Kuroko.
<kazinsal>
sometimes I wonder if I should just port my network stack to toaruos
<kazinsal>
either that or I'm going to end up borrowing the misaka x86-64 core as a bootstrap
the_lanetly_052 has quit [Remote host closed the connection]
<klange>
The widget API offers a few callbacks for mouse interactions (click, enter, leave, etc.) , and a draw callback provides an isolated graphics context for rendering.
<MelMalik>
hm!
<klange>
Widgets can change size, and can be set to fill available space (divided among all that do that, which is normally just one for the window list).
<MelMalik>
ahh
* moon-child
resists the urge to criticize the premises underlying Weakly Interacting Massive Particles
<kazinsal>
operating system development, computer janitoring, and subatomic physics
<zid>
moon you're leaking
<klange>
The weather widget starts with no width, until it gets data from the remote API; the date widget adjusts to fit the month name; others have fixed widths
<klange>
used to be just the icon widgets were 'flexible' and they were fixed units (and the weather icon cheated and pretend to be two widgets to fits its icon and the temperature)
sdfgsdfg has joined #osdev
<klange>
and there was a bunch of terrible hardcoded math for the offsets of the widgets and the date widget was special cased so it could still do its month-based adjustment and it... ugh, it was terrible
<zid>
I hope it vibrates back and forth really badly as the temperature changes
<MelMalik>
WIMP is the best UI system for non-absolute pointed workstations I've yet seen
pretty_dumm_guy has joined #osdev
<moon-child>
MelMalik: good thing I am not going to criticize it now! :)
<MelMalik>
sigh
<MelMalik>
do you have something better? don't suggest tty.
givemeyourpies has quit [Quit: Going offline, see ya! (www.adiirc.com)]
chir4gm has left #osdev [WeeChat 3.3]
chir4gm has joined #osdev
sdfgsdfg has quit [Quit: ZzzZ]
<junon>
tty is better
<junon>
(couldn't resist)
<junon>
also :c I hit a clang bug.
<klange>
All things have their place, and the greatest mistake ever made by those who try to new things is thinking that there's a one-size-fits-all solution.
zaquest has quit [Remote host closed the connection]
<junon>
Appears to be a mishandling of compound expressions (parenthesis expressions) when they refer to enum constants brought into scope using `using enum` (c++20) where the enum type is nested within a struct or a class.
<junon>
Really specific case.
mahmutov has quit [Ping timeout: 256 seconds]
<zid>
How do you avoid leaking the kernel stack pointer to userspace with iretq, do you need to set up a fake sysret context instead?
<zid>
or erm, set the frame up on the user stack
<zid>
iretq won't care that I did that, seems like it should work
<j`ey>
junon: heh weird
<zid>
sysret would let me initialize rsp for user processes too actually
<zid>
or am I forgetting what iretq takes
wleslie has joined #osdev
<zid>
ah yea it does pop esp and ss
<zid>
I should think more and type less, sorry
gog has quit [Ping timeout: 240 seconds]
nj0rd has quit [Quit: WeeChat 3.3]
nj0rd has joined #osdev
Oli has joined #osdev
Vercas has quit [Remote host closed the connection]
<zid>
gog is there anything else I need to care about for catching an IRQ in ring3 that TR has a valid segment selector which contains a valid TSS address that contains a valid RSP at +4?
<zid>
cus I checked all that and it's still #GPing..
Burgundy has quit [Ping timeout: 265 seconds]
pretty_dumm_guy has quit [Quit: WeeChat 3.3]
<gog>
zid: the handler is in ring 3?
<zid>
no it's an IRQ
<zid>
That's why it has to load a new stack from TSS
<gog>
what's the code on the gp?
mahmutov has joined #osdev
<zid>
v=0d, e=0008
<zid>
env->regs[R_EAX]=23
<zid>
GP's error code is 0, or the segment selector, afaik?
<zid>
and 8 = ring0 cs
<eryjus>
zid, if your IRQ handler is ring 3, that cs selector should be 0x11, not 0x08
<zid>
why would I handle IRQs in ring3
<gog>
yeah it would be the segment selector
<sortie>
<heat> my whole project only exists because of sortie and bare bones / meaty skeleton
<sortie>
:)
<zid>
This only broke after I changed my task code, but I didn't touch gdt/idt/TR/etc stuff :(
<gog>
double check your idt entry?
<zid>
I don't honestly remember how, I've not changed it in years
the_lanetly_052 has quit [Ping timeout: 256 seconds]
<gog>
well glad to have been your rubber ducky
<zid>
you're welcome.
the_lanetly_052_ has quit [Read error: Connection reset by peer]
the_lanetly_052 has joined #osdev
ElectronApps has quit [Remote host closed the connection]
mahmutov has quit [Ping timeout: 265 seconds]
mahmutov has joined #osdev
FreeFull has joined #osdev
freakazoid12345 has quit [Read error: Connection reset by peer]
freakazoid12345 has joined #osdev
<zid>
Things I keep forgetting to do before I commit: run ntp-client restart
<zid>
I apparently commited everything 5 days ago, because I had my VM paused for 5 days at some point
<j`ey>
git commit --amend --date=$(date)
<zid>
easier to just.. fix my clock before I Start modifying files :P
wikan has joined #osdev
freakazoid12345 has quit [Read error: Connection reset by peer]
wikan has quit [Quit: Client closed]
<sortie>
On my OS, I have this cool background daemon called ntpd that does this automatically regularly
<zid>
yea mine needs configuring better
<zid>
needs -g at least, otherwise it will exit if the desync is >1000 seconds
pretty_dumm_guy has joined #osdev
pretty_dumm_guy has quit [Client Quit]
pretty_dumm_guy has joined #osdev
sheb has joined #osdev
srjek has joined #osdev
Burgundy has joined #osdev
freakazoid343 has joined #osdev
the_lanetly_052 has quit [Ping timeout: 250 seconds]
givemeyourpies has joined #osdev
heat has joined #osdev
<heat>
hrrmm I slept way way way too much
<zid>
That's what you get for not weaving ethernet cables through your house and having way too much warez to play with
<heat>
no warez
<heat>
just csgo
<heat>
I do need to grind a bit for the interview tomorrow tho :/
nj0rd has quit [Quit: WeeChat 3.3]
nj0rd has joined #osdev
nj0rd has quit [Client Quit]
nj0rd has joined #osdev
nyah has quit [Remote host closed the connection]
CryptoDavid has joined #osdev
Arthuria has joined #osdev
Arthuria has quit [Remote host closed the connection]
valerius_ has joined #osdev
Arthuria has joined #osdev
<heat>
is there a way to do serial exclusively with USB? especially in a way that makes the x86 COM1 ... work, although that's not needed
<heat>
I would imagine using COM1 may be able to trigger an SMI but I'm not sure if firmware usually does that
<clever>
heat: do you have access to the real com1 of the motherboard?
<heat>
no
<clever>
then i think your only real option is ehci debug
<clever>
its a special mode in an ehci controller, that doesnt need a full usb stack, its far dumber, like uart
<clever>
and it needs a usb2 device to bridge it to another host
<zid>
Depends what the question means
<zid>
You can get usb serial dongles that just show up as a com port
<zid>
wrt windows
<clever>
but if you need serial console in a custom kernel, that means adding a whole usb stack
<heat>
I'm thinking of getting serial setup for my probably-future raspi zero 2W and I could also get a way to get serial on an old laptop I have (which is useful when debugging)
<heat>
the laptop as you may guess doesn't have a serial port
<clever>
ah
<zid>
yea you just need one of those dongales then
<heat>
that's why I want usb
<clever>
but the target system running your code, is the rpi
<j`ey>
heat: get a usb serial adapter?
<zid>
set your hyperterm to whatever com port it shows up as in windows
<clever>
so you can access the rpi's serial
<heat>
j`ey, none of my devices have serial
<clever>
and then just use any 3.3v IO serial to usb adapter
<j`ey>
^
<heat>
yeah but I wanted to get a serial setup for my laptop as well and both the rpi and laptop have USB ports
* clever
gets links
<heat>
that's why I was wondering about USB serial
<zid>
only issue with the usb seriqal dongles is that they vary wildly in quality and features
<clever>
the only real problem ive had with that, is that EMI from a nearby fridge sometimes causes [427620.225873] usb usb13-port1: disabled by hub (EMI?), re-enabling...
<bslsk05>
www.pishop.ca: USB Console Stub - Serial adaptor for Raspberry Pi - PiShop.ca
<clever>
if you send a malformed byte (re-configure the uart mid-tx), the controller locks up
<clever>
and then no bytes can transfer, until you close and re-open the serial port device in linux
<zid>
yup, they vary super wildly in quality
<zid>
nobody wants to put a $1 chip in, they want the 4 cent one :p
<clever>
there are also fake ftdi chips
zhiayang has quit [Quit: oof.]
<clever>
heat: the reason i like using the ftdi chips, is that i can wire the DTR pin to the RUN pin of the rpi, and then control DTR from software on my desktop
<bslsk05>
github.com: rpi-open-firmware/uart-manager.cpp at master · librerpi/rpi-open-firmware · GitHub
<clever>
make PROJECT=bootcode-fast-ntsc -j8 && scp build-bootcode-fast-ntsc/lk.bin root@router:/tftproot/open-firmware/bootcode.bin && uart-manager
<clever>
heat: make will build my project, scp will drop it on a tftp server for netboot, running uart-manager will release the RUN pin, allowing the rpi to begin booting, uart-manager will then act like a serial terminal, so i can watch it boot
<clever>
if i ctrl+c the uart-manager, it forces the rpi back into reset, and then exits
sdfgsdfg has joined #osdev
<clever>
so i can just treat uart-manager like an emulator, and start/stop the pi freely
<heat>
i might just go for a dumb rs232 to usb adapter for the pi zero and use ssh with the laptop
<heat>
it means I need to get ssh support but at least it has ethernet
<heat>
for some reason the pi zero 2 W does not have ethernet, just wifi
<j`ey>
form factor i guess
<clever>
heat: note, that the rpi gpio are only 3.3v capable, but rs232 uses +12v and -12v!!
<heat>
oh wait I can configure wpa_supplicant in the SD card
<heat>
ezzz
<j`ey>
ye
zhiayang has quit [Client Quit]
zhiayang has joined #osdev
Bonstra has quit [Quit: Pouf c'est tout !]
Bonstra has joined #osdev
heat has quit [Read error: Connection reset by peer]
heat has joined #osdev
GeDaMo has quit [Remote host closed the connection]
sdfgsdfg has quit [Quit: ZzzZ]
NeoCron has joined #osdev
<klange>
sortie: hm, I should get one of those
<sortie>
:)
<sortie>
Pretty handy for VMs having their time drift
<klange>
I invested a small amount of time in timezones instead
<sortie>
Right now I'm getting started on a BSD style ports system
<klange>
not exactly tzdata, but I do ask an external API for an offset based on geo ip lookup
<zid>
I'll geo your ip lookup in a minute if you're not careful
<klange>
> Mon 29 Nov 2021 06:52:45 JST
<klange>
My actual machine's clock is doing okay after...
<klange>
> 06:53:01 up 9 days, 17:30
CryptoDavid has quit [Quit: Connection closed for inactivity]
heat has quit [Remote host closed the connection]
<geist>
huh guess the pi zero 2 W doesn't bring the ethernet out through the connector
<geist>
i should order one or two to have around
vin has joined #osdev
<clever>
geist: the zero2 doesnt have any ethernet controller
mahmutov has quit [Ping timeout: 250 seconds]
<geist>
oh guess makes sense. it's based on the BCM bits from rpi3, which was still using an external usb driven eth
<geist>
though i guess they could have run a usb bus through the connector
<clever>
geist: its got the same connectors as the pi0, with the dwc directly exposed on the data micro-usb
<clever>
the power usb port is directly connected to the same power rails with no fusing or current limiting, and no data lines