Bios, be modern, interract with a 1975 firmware !

Let's try to get a simple bios working in qemu

Some history The BIOS is the famous non-volatile firmware of an IBM compatible PC. The name comes from a part of the CP/M operating system of IBM (1975). But actual bios look more like the IBM PC XT one (1983). Project background In a school project, the goal was to do a full 64-bit x86 bootloader. As a bonus, a student could implement a tiny bios which is both a simple and interesting task as it’s virtualized under Qemu/KVM. [Read More]

x86 interrupts

How intel architecture handles interrupts.

Let’s see how x86 interrupts work. Interrupts There are three types of interrupts: Exceptions: synchronous with program execution. Exemple: division by zero or invalid address access. hardware interrupts: asynchronous with program execution. They are generated by devices external to the CPU. Exemple: key pressed software interrupts: synchronous with program execution. They are generated by x86 instructions such as int or syscall. Exemple: int 0x80 - syscall [Read More]
kernel  x86 

Be protected !

A quick tour of multiboot, segmentation and intel protected mode.

Grub/Multiboot Grub is compatible with multiboot which is a boot standard for 32-bits OS. This standard needs two things: A 32-bits executable OS A multiboot header in the 8192 first bytes of the OS. There are actually two versions of multiboot, the first one was made in 1995 by Bryan Ford ad Erich Stefan Boleyn. The second one corrected some issue of the first one. I choose the first multiboot version just because it’s the one that is the most commonly used. [Read More]
kernel  memory  x86