documentation/kernel/platform/cpu.h.md

1.7 KiB

cpu.h

Stuff related directly with the cpu.

OSDev Wiki: x86 CPU Registers

cpu_state_T - struct

  • cr3 - Control register 3, holds the current page table
  • rax - General purpose register
  • rbx - General purpose register
  • rcx - General purpose register
  • rdx - General purpose register
  • rsi - General purpose register
  • rdi - General purpose register
  • rbp - The Bottom of the current stack frame
  • interrupt_id - The ID of the interrupt, that captured the cpu state
  • error_code - Some exceptions such as the Page fault push more detailed information into here
  • rip - The current instruction address
  • cs - Segment selector of the associated IDT descriptor
  • flags - The CPU's FLAGS register, a status bitmap -> cpu_flags_E
  • rsp - The Top of the current stack frame
  • ss - Not totally sure, what this does, but it has to do with security rings

This struct defines a complete CPU state, that can be saved and restored. Such a state is saved when the CPU fires an interrupt and restored by the interrupt handler when it's finished. This allows multithreading and exception analysis.

cpu_flags_E - enum

  • CPU_FLAG_CARRY
  • CPU_FLAG_PARITY
  • CPU_FLAG_AUXILIARY
  • CPU_FLAG_ZERO
  • CPU_FLAG_SIGN
  • CPU_FLAG_TRAP
  • CPU_FLAG_INTERRUPT_ENABLE
  • CPU_FLAG_DIRECTION
  • CPU_FLAG_OVERFLOW
  • CPU_FLAG_IO_PRIVILEGE_0
  • CPU_FLAG_IO_PRIVILEGE_1
  • CPU_FLAG_NESTED_TASK
  • CPU_FLAG_RESUME
  • CPU_FLAG_VIRTUAL_8086
  • CPU_FLAG_ALIGNMENT_CHECK
  • CPU_FLAG_VIRTUAL_INTERRUPT
  • CPU_FLAG_VIRTUAL_INTERRUPT_PENDING
  • CPU_FLAG_CPUID