MCPcopy Create free account
hub / github.com/LemonOSProject/LemonOS / SetCPULocal

Function SetCPULocal

Kernel/include/arch/x86_64/cpu.h:98–102  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

96cpuid_info_t CPUID();
97
98static inline void SetCPULocal(CPU* val){
99 val->self = val;
100 asm volatile("wrmsr" :: "a"((uintptr_t)val & 0xFFFFFFFF) /*Value low*/, "d"(((uintptr_t)val >> 32) & 0xFFFFFFFF) /*Value high*/, "c"(0xC0000102) /*Set Kernel GS Base*/);
101 asm volatile("wrmsr" :: "a"((uintptr_t)val & 0xFFFFFFFF) /*Value low*/, "d"(((uintptr_t)val >> 32) & 0xFFFFFFFF) /*Value high*/, "c"(0xC0000101) /*Set Kernel GS Base*/);
102}
103
104__attribute__((always_inline)) static inline CPU* GetCPULocal(){
105 CPU* ret;

Callers 2

SMPEntryFunction · 0.85
InitializeFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected