X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/c7a60d29f54d6de10a8388d26af441c8bc48a803..bb5ae5c85c0812c52e8d53187f2c6b0ee9525c8c:/lunaix-os/arch/aarch64/includes/asm/hart.h diff --git a/lunaix-os/arch/aarch64/includes/asm/hart.h b/lunaix-os/arch/aarch64/includes/asm/hart.h index fa1f4bf..52571e6 100644 --- a/lunaix-os/arch/aarch64/includes/asm/hart.h +++ b/lunaix-os/arch/aarch64/includes/asm/hart.h @@ -43,12 +43,14 @@ struct hart_state } compact align(16); static inline int -hart_vector_stamp(struct hart_state* hstate) { +hart_vector_stamp(struct hart_state* hstate) +{ return BITS_GET(hstate->execp.syndrome, SYNDROME_ETYPE); } static inline unsigned int -hart_ecause(struct hart_state* hstate) { +hart_ecause(struct hart_state* hstate) +{ return hstate->execp.syndrome; } @@ -79,8 +81,10 @@ hart_sp(struct hart_state* hstate) static inline bool kernel_context(struct hart_state* hstate) { - // TODO - return false; + reg_t spsr; + + spsr = hstate->execp.spsr; + return !spsr_from_el0(spsr); } static inline ptr_t