mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 16:37:35 +00:00
Kernel/aarch64: Implement Thread Local Storage
This commit adds Processor::set_thread_specific_data, and this function is used to factor out architecture specific implementation of setting the thread specific data. This function is implemented for aarch64 and x86_64, and the callsites are changed to use this function instead.
This commit is contained in:
parent
7d0917f50b
commit
cfd73e5d9f
6 changed files with 24 additions and 6 deletions
|
@ -1543,8 +1543,7 @@ extern "C" void enter_thread_context(Thread* from_thread, Thread* to_thread)
|
|||
}
|
||||
|
||||
auto& processor = Processor::current();
|
||||
MSR fs_base_msr(MSR_FS_BASE);
|
||||
fs_base_msr.set(to_thread->thread_specific_data().get());
|
||||
Processor::set_thread_specific_data(to_thread->thread_specific_data());
|
||||
|
||||
if (from_regs.cr3 != to_regs.cr3)
|
||||
write_cr3(to_regs.cr3);
|
||||
|
@ -1887,4 +1886,10 @@ UNMAP_AFTER_INIT void Processor::initialize_context_switching(Thread& initial_th
|
|||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
||||
void Processor::set_thread_specific_data(VirtualAddress thread_specific_data)
|
||||
{
|
||||
MSR fs_base_msr(MSR_FS_BASE);
|
||||
fs_base_msr.set(thread_specific_data.get());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue