cfenollosa_os-tutorial/10-32bit-enter
Thomas Navennec d58294dabe
cr0 "32bit bit" -> "protected mode" bit
This comment seems misleading to me, bit 0 of the `cr0` register enables protected mode, and that is its official name, is there a reason why it says "32 bit"?
Sources:
- [Intel manual](https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf) page 78
- https://wiki.osdev.org/CPU_Registers_x86#CR0
2020-01-22 14:25:16 +01:00
..
32bit-main.asm lessons 8, 9, 10, entering 32-bit mode 2014-10-09 11:38:11 +02:00
32bit-switch.asm cr0 "32bit bit" -> "protected mode" bit 2020-01-22 14:25:16 +01:00
README.md lessons 8, 9, 10, entering 32-bit mode 2014-10-09 11:38:11 +02:00

Concepts you may want to Google beforehand: interrupts, pipelining

Goal: Enter 32-bit protected mode and test our code from previous lessons

To jump into 32-bit mode:

  1. Disable interrupts
  2. Load our GDT
  3. Set a bit on the CPU control register cr0
  4. Flush the CPU pipeline by issuing a carefully crafted far jump
  5. Update all the segment registers
  6. Update the stack
  7. Call to a well-known label which contains the first useful code in 32 bits

We will encapsulate this process on the file 32bit-switch.asm. Open it and take a look at the code.

After entering 32-bit mode, we will call BEGIN_PM which is the entry point for our actual useful code (e.g. kernel code, etc). You can read the code at 32bit-main.asm. Compile and run this last file and you will see the two messages on the screen.

Congratulations! Our next step will be to write a simple kernel