The Mobius and 386 machines
The Mobius and 386 machines
Hi
I've just tested The Mobius 2003-10-27 from a floppy on most of my machines and I've noticed a problem with 386s
On both my 386DX-40 machines, and my NexGen Nx586 (has 386 instruction set) machine, just after grub finished loading the module mobius.tar.gz, the machine's in question just Reset (possibly tripple fault).
My Am5x86 Machine and up all run it fine. I might test it with an old 486 SX or DX.
Anyway, what are the System Requirements for the Mobius? Is it meant to be able to run on a 386 (and NexGen of course )?
Or could the error be happening in grub?
srg
I've just tested The Mobius 2003-10-27 from a floppy on most of my machines and I've noticed a problem with 386s
On both my 386DX-40 machines, and my NexGen Nx586 (has 386 instruction set) machine, just after grub finished loading the module mobius.tar.gz, the machine's in question just Reset (possibly tripple fault).
My Am5x86 Machine and up all run it fine. I might test it with an old 486 SX or DX.
Anyway, what are the System Requirements for the Mobius? Is it meant to be able to run on a 386 (and NexGen of course )?
Or could the error be happening in grub?
srg
Re:The Mobius and 386 machines
It doesn't support the 386 . I'm using INVLPG, which is 486+, and I really don't think it's worth putting in a workaround just to support people mad enough to still own a 386 :p.
Re:The Mobius and 386 machines
I seeTim Robinson wrote: It doesn't support the 386 . I'm using INVLPG, which is 486+, and I really don't think it's worth putting in a workaround just to support people mad enough to still own a 386 :p.
Out of interest, why are you using this BTW, what advantage does invalidating a single page table entry in the Translation Look-Aside Buffer have, does it make things quicker?
I'm not just mad, I'm insane! I bought 8 386 mobo's from ebay. I've got a 486DLC on the way. Although I suppose I'm a bit of a collector. BTW I'm selling one board with an Intel 386DX 33 (no ram).
My plan is to support the 386 and use conditional compilation dependant on the CPU used. Sure the code size will be bigger but wider support is quite important to me.
srg
- Pype.Clicker
- Member
- Posts: 5964
- Joined: Wed Oct 18, 2006 2:31 am
- Location: In a galaxy, far, far away
- Contact:
Re:The Mobius and 386 machines
you will see enormous performance gain with 'invlpg'. Without it, everytime you change the mapping of a page or make a page absent, you have to flush the whole TLB (by reloading CR3), which means any further access to memory will incur a performance penalty from reading the PDE and PTE back from main memory (or L1/L2 cache).
With 'invlpg', only the PTE/PDE related to that very address need a refresh, other memory references will be unaffected.
Note that it's quite simple to work around:
But i understand why Tim don't want to bother with things like these... especially if he has no hardware to test them ...
With 'invlpg', only the PTE/PDE related to that very address need a refresh, other memory references will be unaffected.
Note that it's quite simple to work around:
Code: Select all
#ifdef CPU386
#define invalidate_tlb(x) asm("mov %%cr3,%0; mov %0,%%cr3")
#else
#define // normal invalidate_tlb() definition
#endif
Re:The Mobius and 386 machines
I understand
My plan is to be able to recompile for different CPUs based in conditional compilation (Run time descisions would slow the system down of course ).
For me it's very important to support the widest range of systems possible.
But I can understand Tim's descision not to support the 386, as you hardly see any 386s any more and there are Hardly any NexGen Nx586s compaired to 486s out there (Which is a shame IMHO). But saying that, it was a bit foolhardy not to update the design for the Nx586 in incorperate new insructions, it kind of sealed it's own coffin (that and the proprietry motherboard).
Would it be possible, Tim, if you could state The Mobius's Minimum System Requirements on your website? This would stop questions like mine in their tracks! So CPU wise, I'm guessing, it would be a minimum of a 486SX 20MHz.
BTW, your website is littered with i386 statements, just changing these to i486 would help.
Anyway, I'll test it later with my 486DLC when I get it (It's comming from Russia), that is suppose to support the 486 instruction set and runs on a 386 board (with BIOS support).
Thanks
srg
My plan is to be able to recompile for different CPUs based in conditional compilation (Run time descisions would slow the system down of course ).
For me it's very important to support the widest range of systems possible.
But I can understand Tim's descision not to support the 386, as you hardly see any 386s any more and there are Hardly any NexGen Nx586s compaired to 486s out there (Which is a shame IMHO). But saying that, it was a bit foolhardy not to update the design for the Nx586 in incorperate new insructions, it kind of sealed it's own coffin (that and the proprietry motherboard).
Would it be possible, Tim, if you could state The Mobius's Minimum System Requirements on your website? This would stop questions like mine in their tracks! So CPU wise, I'm guessing, it would be a minimum of a 486SX 20MHz.
BTW, your website is littered with i386 statements, just changing these to i486 would help.
Anyway, I'll test it later with my 486DLC when I get it (It's comming from Russia), that is suppose to support the 486 instruction set and runs on a 386 board (with BIOS support).
Thanks
srg
Re:The Mobius and 386 machines
Year, I've found that I've never been able to run it without it crashing with a page fault some time.aladdin wrote: in my computer it crachs with a page fault!!!
Sorry
srg
Re:The Mobius and 386 machines
Which version are you using? Where does it page fault? What is the CR2? What is the EIP? What does the stack dump say? How much memory does your system have? What can you find out by exploring at the debug prompt?
Re:The Mobius and 386 machines
I have now tested The Mobius with a 486DLC and I get an invalid opcode at tbout the same place, it may not have that 486 instruction then.
Re:The Mobius and 386 machines
Which release is that? They each have a date.
If you can tell me which release it is, and the EIP where the invalid instruction takes place, I can check whether it's a real bug or whether I should increase my hardware spec. Or if you type db, then the hex address of EIP, you'll get a hex dump, from which you (or I) can disassemble the code and check.
I think there's still a CPUID in there without a check for whether CPUID is supported. Maybe that's it.
PS: I just answered a post from Ben Gainey about Mobius Release 5 crashing trying to mount an NTFS volume. I should probably enhance the checks for valid FAT volumes (since the NTFS boot sector is somewhat similar to the FAT one).
If you can tell me which release it is, and the EIP where the invalid instruction takes place, I can check whether it's a real bug or whether I should increase my hardware spec. Or if you type db, then the hex address of EIP, you'll get a hex dump, from which you (or I) can disassemble the code and check.
I think there's still a CPUID in there without a check for whether CPUID is supported. Maybe that's it.
PS: I just answered a post from Ben Gainey about Mobius Release 5 crashing trying to mount an NTFS volume. I should probably enhance the checks for valid FAT volumes (since the NTFS boot sector is somewhat similar to the FAT one).
Re:The Mobius and 386 machines
Hey, I tested it and my keyboard doesn't work
Bochs log:
I don't know what's wrong with it.
(But the startup screen looks quite good )
Bochs log:
Code: Select all
00155975058i[KBD ] reset-disable command received
00157455481e[KBD ] controller_enQ(): OUTB set!
**similar message repeated several times**
00157466698e[KBD ] controller_enQ(): OUTB set!
00285290500i[KBD ] internal keyboard buffer full, ignoring scancode.(20)
00285632500i[KBD ] internal keyboard buffer full, ignoring scancode.(a0)
00285906500i[KBD ] internal keyboard buffer full, ignoring scancode.(20)
(But the startup screen looks quite good )
Re:The Mobius and 386 machines
*hemhem* [rofl] - no, I am not a toad nor a toadstool.
I know, Tim can speak for himself. I just want to remark, that all your nice comments about what's not working are not very helpful. you neither tell which build of m?bius you are testing nor at which position in the code it fails. You can make screenshots or notate the registerdump in the debug console of m?bius (which is a plain good thing). That would be faaar more helpful than vague remarks. Even the doctor is clueless if you only moan about a indifferent hurt in the groin.
Just my two cents
I know, Tim can speak for himself. I just want to remark, that all your nice comments about what's not working are not very helpful. you neither tell which build of m?bius you are testing nor at which position in the code it fails. You can make screenshots or notate the registerdump in the debug console of m?bius (which is a plain good thing). That would be faaar more helpful than vague remarks. Even the doctor is clueless if you only moan about a indifferent hurt in the groin.
Just my two cents
Re:The Mobius and 386 machines
Sorry, I just havn't got round to it yet.BI lazy wrote: *hemhem* [rofl] - no, I am not a toad nor a toadstool.
I know, Tim can speak for himself. I just want to remark, that all your nice comments about what's not working are not very helpful. you neither tell which build of m?bius you are testing nor at which position in the code it fails. You can make screenshots or notate the registerdump in the debug console of m?bius (which is a plain good thing). That would be faaar more helpful than vague remarks. Even the doctor is clueless if you only moan about a indifferent hurt in the groin.
Just my two cents
srg
Re:The Mobius and 386 machines
OK
I'm now using Release 5 (ooooh!).
Anyway, with the DLC, The invalid instruction happens at:
0xc00044df
which is cpuid
Definately that, as it also happens on my Intel 486DX 50MHz
srg
I'm now using Release 5 (ooooh!).
Anyway, with the DLC, The invalid instruction happens at:
0xc00044df
which is cpuid
Definately that, as it also happens on my Intel 486DX 50MHz
srg
Re:The Mobius and 386 machines
wasn't CPUID only in the late 486's and basically not around until pentiums