Squash commits for public release
This commit is contained in:
63
kernel/include/platform/arm64/registers.h
Normal file
63
kernel/include/platform/arm64/registers.h
Normal file
@@ -0,0 +1,63 @@
|
||||
{
|
||||
uint64_t el;
|
||||
asm volatile("mrs %x0, CurrentEL"
|
||||
: "=r"(el)
|
||||
:);
|
||||
return el >> 2;
|
||||
}
|
||||
|
||||
static inline uint64_t read_sp()
|
||||
{
|
||||
uint64_t sp;
|
||||
asm volatile("mov %x0, sp"
|
||||
: "=r"(sp)
|
||||
:);
|
||||
return sp;
|
||||
}
|
||||
|
||||
static inline uint64_t read_fp()
|
||||
{
|
||||
uint64_t fp;
|
||||
asm volatile("mov %x0, x29"
|
||||
: "=r"(fp)
|
||||
:);
|
||||
return fp;
|
||||
}
|
||||
|
||||
static inline uint64_t read_cbar()
|
||||
{
|
||||
uint32_t val;
|
||||
asm volatile("mrs %x0, S3_1_C15_C3_0"
|
||||
: "=r"(val)
|
||||
:);
|
||||
return val;
|
||||
}
|
||||
|
||||
static inline uint64_t read_cpacr()
|
||||
{
|
||||
uint64_t cpacr;
|
||||
asm volatile("mrs %x0, CPACR_EL1"
|
||||
: "=r"(cpacr)
|
||||
:);
|
||||
return cpacr;
|
||||
}
|
||||
|
||||
static inline void write_cpacr(uint64_t val)
|
||||
{
|
||||
asm volatile("msr CPACR_EL1, %x0"
|
||||
:
|
||||
: "r"(val)
|
||||
: "memory");
|
||||
asm volatile("isb");
|
||||
}
|
||||
|
||||
static inline void write_tpidr(uint64_t val)
|
||||
{
|
||||
asm volatile("msr TPIDR_EL1, %x0"
|
||||
:
|
||||
: "r"(val)
|
||||
: "memory");
|
||||
asm volatile("isb");
|
||||
}
|
||||
|
||||
#endif /* _KERNEL_PLATFORM_ARM64_REGISTERS_H */
|
||||
Reference in New Issue
Block a user