1.7 KiB
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