1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 18:47:34 +00:00

Kernel: Move ThreadRegisters into arch-specific directory

These are architecture-specific anyway, so they belong in the Arch
directory. This commit also adds ThreadRegisters::set_initial_state to
factor out the logic in Thread.cpp.
This commit is contained in:
Timon Kruiper 2022-12-27 14:04:07 +01:00 committed by Andrew Kaster
parent 0d2dffb95b
commit a3cbaa3449
6 changed files with 133 additions and 75 deletions

View file

@ -17,6 +17,7 @@
#include <AK/Vector.h>
#include <Kernel/API/POSIX/sched.h>
#include <Kernel/Arch/RegisterState.h>
#include <Kernel/Arch/ThreadRegisters.h>
#include <Kernel/Debug.h>
#include <Kernel/Forward.h>
#include <Kernel/KString.h>
@ -49,55 +50,6 @@ struct ThreadSpecificData {
#define THREAD_AFFINITY_DEFAULT 0xffffffff
struct ThreadRegisters {
#if ARCH(X86_64)
FlatPtr rdi;
FlatPtr rsi;
FlatPtr rbp;
FlatPtr rsp;
FlatPtr rbx;
FlatPtr rdx;
FlatPtr rcx;
FlatPtr rax;
FlatPtr r8;
FlatPtr r9;
FlatPtr r10;
FlatPtr r11;
FlatPtr r12;
FlatPtr r13;
FlatPtr r14;
FlatPtr r15;
FlatPtr rip;
FlatPtr rsp0;
#endif
FlatPtr cs;
#if ARCH(X86_64)
FlatPtr rflags;
FlatPtr flags() const { return rflags; }
void set_flags(FlatPtr value) { rflags = value; }
void set_sp(FlatPtr value) { rsp = value; }
void set_sp0(FlatPtr value) { rsp0 = value; }
void set_ip(FlatPtr value) { rip = value; }
#endif
FlatPtr cr3;
FlatPtr ip() const
{
#if ARCH(X86_64)
return rip;
#endif
}
FlatPtr sp() const
{
#if ARCH(X86_64)
return rsp;
#endif
}
};
class Thread
: public ListedRefCounted<Thread, LockType::Spinlock>
, public LockWeakable<Thread> {