PatchworkOS
Loading...
Searching...
No Matches
regs.h File Reference
#include <stdint.h>

Go to the source code of this file.

Macros

#define XCR0_XSAVE_SAVE_X87   (1 << 0)
 
#define XCR0_XSAVE_SAVE_SSE   (1 << 1)
 
#define XCR0_AVX_ENABLE   (1 << 2)
 
#define XCR0_AVX512_ENABLE   (1 << 5)
 
#define XCR0_ZMM0_15_ENABLE   (1 << 6)
 
#define XCR0_ZMM16_32_ENABLE   (1 << 7)
 
#define MSR_LAPIC   0x1B
 
#define MSR_CPU_ID   0xC0000103
 
#define MSR_EFER   0xC0000080
 
#define MSR_STAR   0xC0000081
 
#define MSR_LSTAR   0xC0000082
 
#define MSR_SYSCALL_FLAG_MASK   0xC0000084
 
#define MSR_GS_BASE   0xC0000101
 
#define MSR_KERNEL_GS_BASE   0xc0000102
 
#define EFER_SYSCALL_ENABLE   1
 
#define RFLAGS_CARRY   (1 << 0)
 
#define RFLAGS_ALWAYS_SET   (1 << 1)
 
#define RFLAGS_PARITY   (1 << 2)
 
#define RFLAGS_RESERVED1   (1 << 3)
 
#define RFLAGS_AUX_CARRY   (1 << 4)
 
#define RFLAGS_RESERVED2   (1 << 5)
 
#define RFLAGS_ZERO   (1 << 6)
 
#define RFLAGS_SIGN   (1 << 7)
 
#define RFLAGS_TRAP   (1 << 8)
 
#define RFLAGS_INTERRUPT_ENABLE   (1 << 9)
 
#define RFLAGS_DIRECTION   (1 << 10)
 
#define RFLAGS_OVERFLOW   (1 << 11)
 
#define RFLAGS_IOPL   (1 << 12 | 1 << 13)
 
#define RFLAGS_NESTED_TASK   (1 << 14)
 
#define RFLAGS_MODE   (1 << 15)
 
#define CR0_PROTECTED_MODE_ENABLE   (1 << 0)
 
#define CR0_MONITOR_CO_PROCESSOR   (1 << 1)
 
#define CR0_EMULATION   (1 << 2)
 
#define CR0_TASK_SWITCHED   (1 << 3)
 
#define CR0_EXTENSION_TYPE   (1 << 4)
 
#define CR0_NUMERIC_ERROR_ENABLE   (1 << 5)
 
#define CR0_WRITE_PROTECT   (1 << 16)
 
#define CR0_ALIGNMENT_MASK   (1 << 18)
 
#define CR0_NOT_WRITE_THROUGH   (1 << 29)
 
#define CR0_CACHE_DISABLE   (1 << 30)
 
#define CR0_PAGING_ENABLE   (1 << 31)
 
#define CR4_PAGE_GLOBAL_ENABLE   (1 << 7)
 
#define CR4_FXSR_ENABLE   (1 << 9)
 
#define CR4_SIMD_EXCEPTION   (1 << 10)
 
#define CR4_XSAVE_ENABLE   (1 << 18)
 

Functions

static void xcr0_write (uint32_t xcr, uint64_t value)
 
static uint64_t msr_read (uint32_t msr)
 
static void msr_write (uint32_t msr, uint64_t value)
 
static uint64_t rflags_read ()
 
static void rflags_write (uint64_t value)
 
static uint64_t cr4_read ()
 
static void cr4_write (uint64_t value)
 
static uint64_t cr3_read ()
 
static void cr3_write (uint64_t value)
 
static uint64_t cr2_read ()
 
static void cr2_write (uint64_t value)
 
static uint64_t cr0_read ()
 
static void cr0_write (uint64_t value)
 
static uint64_t rsp_read ()
 
static void rsp_write (uint64_t value)
 
static uint64_t rbp_read ()
 
static void rbp_write (uint64_t value)
 

Macro Definition Documentation

◆ CR0_ALIGNMENT_MASK

#define CR0_ALIGNMENT_MASK   (1 << 18)

Definition at line 46 of file regs.h.

◆ CR0_CACHE_DISABLE

#define CR0_CACHE_DISABLE   (1 << 30)

Definition at line 48 of file regs.h.

◆ CR0_EMULATION

#define CR0_EMULATION   (1 << 2)

Definition at line 41 of file regs.h.

◆ CR0_EXTENSION_TYPE

#define CR0_EXTENSION_TYPE   (1 << 4)

Definition at line 43 of file regs.h.

◆ CR0_MONITOR_CO_PROCESSOR

#define CR0_MONITOR_CO_PROCESSOR   (1 << 1)

Definition at line 40 of file regs.h.

◆ CR0_NOT_WRITE_THROUGH

#define CR0_NOT_WRITE_THROUGH   (1 << 29)

Definition at line 47 of file regs.h.

◆ CR0_NUMERIC_ERROR_ENABLE

#define CR0_NUMERIC_ERROR_ENABLE   (1 << 5)

Definition at line 44 of file regs.h.

◆ CR0_PAGING_ENABLE

#define CR0_PAGING_ENABLE   (1 << 31)

Definition at line 49 of file regs.h.

◆ CR0_PROTECTED_MODE_ENABLE

#define CR0_PROTECTED_MODE_ENABLE   (1 << 0)

Definition at line 39 of file regs.h.

◆ CR0_TASK_SWITCHED

#define CR0_TASK_SWITCHED   (1 << 3)

Definition at line 42 of file regs.h.

◆ CR0_WRITE_PROTECT

#define CR0_WRITE_PROTECT   (1 << 16)

Definition at line 45 of file regs.h.

◆ CR4_FXSR_ENABLE

#define CR4_FXSR_ENABLE   (1 << 9)

Definition at line 52 of file regs.h.

◆ CR4_PAGE_GLOBAL_ENABLE

#define CR4_PAGE_GLOBAL_ENABLE   (1 << 7)

Definition at line 51 of file regs.h.

◆ CR4_SIMD_EXCEPTION

#define CR4_SIMD_EXCEPTION   (1 << 10)

Definition at line 53 of file regs.h.

◆ CR4_XSAVE_ENABLE

#define CR4_XSAVE_ENABLE   (1 << 18)

Definition at line 54 of file regs.h.

◆ EFER_SYSCALL_ENABLE

#define EFER_SYSCALL_ENABLE   1

Definition at line 21 of file regs.h.

◆ MSR_CPU_ID

#define MSR_CPU_ID   0xC0000103

Definition at line 13 of file regs.h.

◆ MSR_EFER

#define MSR_EFER   0xC0000080

Definition at line 14 of file regs.h.

◆ MSR_GS_BASE

#define MSR_GS_BASE   0xC0000101

Definition at line 18 of file regs.h.

◆ MSR_KERNEL_GS_BASE

#define MSR_KERNEL_GS_BASE   0xc0000102

Definition at line 19 of file regs.h.

◆ MSR_LAPIC

#define MSR_LAPIC   0x1B

Definition at line 12 of file regs.h.

◆ MSR_LSTAR

#define MSR_LSTAR   0xC0000082

Definition at line 16 of file regs.h.

◆ MSR_STAR

#define MSR_STAR   0xC0000081

Definition at line 15 of file regs.h.

◆ MSR_SYSCALL_FLAG_MASK

#define MSR_SYSCALL_FLAG_MASK   0xC0000084

Definition at line 17 of file regs.h.

◆ RFLAGS_ALWAYS_SET

#define RFLAGS_ALWAYS_SET   (1 << 1)

Definition at line 24 of file regs.h.

◆ RFLAGS_AUX_CARRY

#define RFLAGS_AUX_CARRY   (1 << 4)

Definition at line 27 of file regs.h.

◆ RFLAGS_CARRY

#define RFLAGS_CARRY   (1 << 0)

Definition at line 23 of file regs.h.

◆ RFLAGS_DIRECTION

#define RFLAGS_DIRECTION   (1 << 10)

Definition at line 33 of file regs.h.

◆ RFLAGS_INTERRUPT_ENABLE

#define RFLAGS_INTERRUPT_ENABLE   (1 << 9)

Definition at line 32 of file regs.h.

◆ RFLAGS_IOPL

#define RFLAGS_IOPL   (1 << 12 | 1 << 13)

Definition at line 35 of file regs.h.

◆ RFLAGS_MODE

#define RFLAGS_MODE   (1 << 15)

Definition at line 37 of file regs.h.

◆ RFLAGS_NESTED_TASK

#define RFLAGS_NESTED_TASK   (1 << 14)

Definition at line 36 of file regs.h.

◆ RFLAGS_OVERFLOW

#define RFLAGS_OVERFLOW   (1 << 11)

Definition at line 34 of file regs.h.

◆ RFLAGS_PARITY

#define RFLAGS_PARITY   (1 << 2)

Definition at line 25 of file regs.h.

◆ RFLAGS_RESERVED1

#define RFLAGS_RESERVED1   (1 << 3)

Definition at line 26 of file regs.h.

◆ RFLAGS_RESERVED2

#define RFLAGS_RESERVED2   (1 << 5)

Definition at line 28 of file regs.h.

◆ RFLAGS_SIGN

#define RFLAGS_SIGN   (1 << 7)

Definition at line 30 of file regs.h.

◆ RFLAGS_TRAP

#define RFLAGS_TRAP   (1 << 8)

Definition at line 31 of file regs.h.

◆ RFLAGS_ZERO

#define RFLAGS_ZERO   (1 << 6)

Definition at line 29 of file regs.h.

◆ XCR0_AVX512_ENABLE

#define XCR0_AVX512_ENABLE   (1 << 5)

Definition at line 8 of file regs.h.

◆ XCR0_AVX_ENABLE

#define XCR0_AVX_ENABLE   (1 << 2)

Definition at line 7 of file regs.h.

◆ XCR0_XSAVE_SAVE_SSE

#define XCR0_XSAVE_SAVE_SSE   (1 << 1)

Definition at line 6 of file regs.h.

◆ XCR0_XSAVE_SAVE_X87

#define XCR0_XSAVE_SAVE_X87   (1 << 0)

Definition at line 5 of file regs.h.

◆ XCR0_ZMM0_15_ENABLE

#define XCR0_ZMM0_15_ENABLE   (1 << 6)

Definition at line 9 of file regs.h.

◆ XCR0_ZMM16_32_ENABLE

#define XCR0_ZMM16_32_ENABLE   (1 << 7)

Definition at line 10 of file regs.h.

Function Documentation

◆ cr0_read()

static uint64_t cr0_read ( )
inlinestatic

Definition at line 126 of file regs.h.

Referenced by panic(), and simd_cpu_init().

◆ cr0_write()

static void cr0_write ( uint64_t  value)
inlinestatic

Definition at line 133 of file regs.h.

Referenced by simd_cpu_init().

◆ cr2_read()

static uint64_t cr2_read ( )
inlinestatic

Definition at line 114 of file regs.h.

Referenced by exception_handler(), panic(), and thread_handle_page_fault().

◆ cr2_write()

static void cr2_write ( uint64_t  value)
inlinestatic

Definition at line 121 of file regs.h.

◆ cr3_read()

static uint64_t cr3_read ( )
inlinestatic

Definition at line 102 of file regs.h.

Referenced by page_table_load(), panic(), tlb_invalidate(), and vmm_cpu_ctx_init_common().

◆ cr3_write()

static void cr3_write ( uint64_t  value)
inlinestatic

Definition at line 109 of file regs.h.

Referenced by page_table_load(), tlb_invalidate(), and vmm_init().

◆ cr4_read()

static uint64_t cr4_read ( )
inlinestatic

Definition at line 90 of file regs.h.

Referenced by panic(), simd_cpu_init(), simd_xsave_init(), and vmm_cpu_ctx_init_common().

◆ cr4_write()

static void cr4_write ( uint64_t  value)
inlinestatic

Definition at line 97 of file regs.h.

Referenced by simd_cpu_init(), simd_xsave_init(), and vmm_cpu_ctx_init_common().

◆ msr_read()

static uint64_t msr_read ( uint32_t  msr)
inlinestatic

◆ msr_write()

static void msr_write ( uint32_t  msr,
uint64_t  value 
)
inlinestatic

◆ rbp_read()

static uint64_t rbp_read ( )
inlinestatic

Definition at line 150 of file regs.h.

◆ rbp_write()

static void rbp_write ( uint64_t  value)
inlinestatic

Definition at line 157 of file regs.h.

◆ rflags_read()

◆ rflags_write()

static void rflags_write ( uint64_t  value)
inlinestatic

Definition at line 85 of file regs.h.

◆ rsp_read()

static uint64_t rsp_read ( )
inlinestatic

Definition at line 138 of file regs.h.

Referenced by kmain().

◆ rsp_write()

static void rsp_write ( uint64_t  value)
inlinestatic

Definition at line 145 of file regs.h.

◆ xcr0_write()

static void xcr0_write ( uint32_t  xcr,
uint64_t  value 
)
inlinestatic

Definition at line 56 of file regs.h.

Referenced by simd_xsave_init().