Implement ArGetCpuFlags() routine
All checks were successful
Builds / ExectOS (amd64) (push) Successful in 38s
Builds / ExectOS (i686) (push) Successful in 38s

This commit is contained in:
Rafal Kupiec 2024-05-14 16:26:02 +02:00
parent efef3cb80d
commit 2a8cc7397e
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
4 changed files with 56 additions and 0 deletions

View File

@ -82,6 +82,30 @@ ArFlushTlb(VOID)
ArWriteControlRegister(3, ArReadControlRegister(3)); ArWriteControlRegister(3, ArReadControlRegister(3));
} }
/**
* Gets the RFLAGS register.
*
* @return This routine returns the RFLAGS register.
*
* @since XT 1.0
*/
XTCDECL
ULONG
ArGetCpuFlags(VOID)
{
ULONG Flags;
/* Get RFLAGS register */
asm volatile("pushf\n"
"pop %0\n"
: "=rm" (Flags)
:
: "memory");
/* Return flags */
return Flags;
}
/** /**
* Gets the address of the current stack register. * Gets the address of the current stack register.
* *

View File

@ -82,6 +82,30 @@ ArFlushTlb(VOID)
ArWriteControlRegister(3, ArReadControlRegister(3)); ArWriteControlRegister(3, ArReadControlRegister(3));
} }
/**
* Gets the EFLAGS register.
*
* @return This routine returns the EFLAGS register.
*
* @since XT 1.0
*/
XTCDECL
ULONG
ArGetCpuFlags(VOID)
{
ULONG Flags;
/* Get EFLAGS register */
asm volatile("pushf\n"
"pop %0\n"
: "=rm" (Flags)
:
: "memory");
/* Return flags */
return Flags;
}
/** /**
* Gets the address of the current stack register. * Gets the address of the current stack register.
* *

View File

@ -25,6 +25,10 @@ XTCDECL
VOID VOID
ArFlushTlb(VOID); ArFlushTlb(VOID);
XTCDECL
ULONG
ArGetCpuFlags(VOID);
XTASSEMBLY XTASSEMBLY
XTCDECL XTCDECL
ULONG_PTR ULONG_PTR

View File

@ -25,6 +25,10 @@ XTCDECL
VOID VOID
ArFlushTlb(VOID); ArFlushTlb(VOID);
XTCDECL
ULONG
ArGetCpuFlags(VOID);
XTASSEMBLY XTASSEMBLY
XTCDECL XTCDECL
ULONG_PTR ULONG_PTR