1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 16:47:45 +00:00

Kernel/aarch64: Set correct ExecutionMode of PageFault

Adds a helper to aarch64/Registers.h to factor out the exception class
encoding.
This commit is contained in:
Timon Kruiper 2023-01-30 10:28:17 +01:00 committed by Linus Groh
parent ecf45e191e
commit 7be7324287
2 changed files with 6 additions and 2 deletions

View file

@ -70,8 +70,7 @@ static PageFault page_fault_from_exception_syndrome_register(VirtualAddress faul
fault.set_access((esr_el1.ISS & (1 << 6)) == (1 << 6) ? PageFault::Access::Write : PageFault::Access::Read);
// FIXME: Set correct mode
fault.set_mode(ExecutionMode::Kernel);
fault.set_mode(Aarch64::exception_class_is_data_or_instruction_abort_from_lower_exception_level(esr_el1.EC) ? ExecutionMode::User : ExecutionMode::Kernel);
if (Aarch64::exception_class_is_instruction_abort(esr_el1.EC))
fault.set_instruction_fetch(true);