Stories
Slash Boxes
Comments

SoylentNews is people

SoylentNews is powered by your submissions, so send in your scoop. Only 17 submissions in the queue.
posted by janrinok on Thursday February 26, @07:06AM   Printer-friendly

https://nand2mario.github.io/posts/2026/80386_protection/

I'm building an 80386-compatible core in SystemVerilog and blogging the process. In the previous post, we looked at how the 386 reuses one barrel shifter for all shift and rotate instructions. This time we move from real mode to protected and talk about protection.

The 80286 introduced "Protected Mode" in 1982. It was not popular. The mode was difficult to use, lacked paging, and offered no way to return to real mode without a hardware reset. The 80386, arriving three years later, made protection usable -- adding paging, a flat 32-bit address space, per-page User/Supervisor control, and Virtual 8086 mode so that DOS programs could run inside a protected multitasking system. These features made possible Windows 3.0, OS/2, and early Linux.

The x86 protection model is notoriously complex, with four privilege rings, segmentation, paging, call gates, task switches, and virtual 8086 mode. What's interesting from a hardware perspective is how the 386 manages this complexity on a 275,000-transistor budget. The 386 employs a variety of techniques to implement protection: a dedicated PLA for protection checking, a hardware state machine for page table walks, segment and paging caches, and microcode for everything else.


Original Submission

 
This discussion was created by janrinok (52) for logged-in users only, but now has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 2) by Freeman on Thursday February 26, @05:04PM

    by Freeman (732) on Thursday February 26, @05:04PM (#1435038) Journal

    I've used DOSBox for years to play old games. The vast majority of that time spent playing Master of Magic. However, I recently got kiddo and wife to play the original Oregon Trail and Oregon Trail II with me. Kiddo made it to Oregon, but alas the wife was killed by a bear after having survived a snake bite. I've tried out FreeDOS as well, but the convenience of DOSBox just keeps me coming back. I stumbled on Faux86 and Faux86-remake recently (8086/8088/V20/80186/partial 286 support). https://github.com/ArnoldUK/Faux86-remake [github.com] https://github.com/jhhoward/Faux86 [github.com] (originally based on the Fake86 emulator by Mike Chambers) The original Fake86 emulator site linked to on the Faux86 github is not functional. They call them "bare metal emulators". I've made a first stab at getting the Faux86-remake to work on my Raspberry Pi 4, but all I got was a black screen with a blinking cursor. (I would prefer to not format a 16GB USB drive as a 32MB drive.) There's probably some fiddly bits I need to get just right, but I am hopeful that I can have an extremely fast to boot DOS emulation station. That said, LibreElec only takes 20 seconds or so to boot and is a nice little package with more functionality. Kiddo watched some Mr. Rogers Neighborhood through the PBS Kids app this morning on the little "PiStation" I setup.

    --
    Joshua 1:9 "Be strong and of a good courage; be not afraid, neither be thou dismayed: for the Lord thy God is with thee"
    Starting Score:    1  point
    Karma-Bonus Modifier   +1  

    Total Score:   2