1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 10:47:35 +00:00

Kernel/riscv64: Add AK::Formatter for scause CSR

This commit is contained in:
Sönke Holz 2024-01-14 18:02:24 +01:00 committed by Andrew Kaster
parent 6d8378735b
commit 7b7578bc1b

View file

@ -340,3 +340,47 @@ struct AK::Formatter<Kernel::RISCV64::CSR::SSTATUS> : AK::Formatter<FormatString
return {};
}
};
template<>
struct AK::Formatter<Kernel::RISCV64::CSR::SCAUSE> : AK::Formatter<FormatString> {
ErrorOr<void> format(FormatBuilder& builder, Kernel::RISCV64::CSR::SCAUSE value)
{
switch (value) {
case Kernel::RISCV64::CSR::SCAUSE::SupervisorSoftwareInterrupt:
return builder.put_string("Supervisor software interrupt"sv);
case Kernel::RISCV64::CSR::SCAUSE::SupervisorTimerInterrupt:
return builder.put_string("Supervisor timer interrupt"sv);
case Kernel::RISCV64::CSR::SCAUSE::SupervisorExternalInterrupt:
return builder.put_string("Supervisor external interrupt"sv);
case Kernel::RISCV64::CSR::SCAUSE::InstructionAddressMisaligned:
return builder.put_string("Instruction address misaligned"sv);
case Kernel::RISCV64::CSR::SCAUSE::InstructionAccessFault:
return builder.put_string("Instruction access fault"sv);
case Kernel::RISCV64::CSR::SCAUSE::IllegalInstrction:
return builder.put_string("Illegal instruction"sv);
case Kernel::RISCV64::CSR::SCAUSE::Breakpoint:
return builder.put_string("Breakpoint"sv);
case Kernel::RISCV64::CSR::SCAUSE::LoadAddressMisaligned:
return builder.put_string("Load address misaligned"sv);
case Kernel::RISCV64::CSR::SCAUSE::LoadAccessFault:
return builder.put_string("Load access fault"sv);
case Kernel::RISCV64::CSR::SCAUSE::StoreOrAMOAddressMisaligned:
return builder.put_string("Store/AMO address misaligned"sv);
case Kernel::RISCV64::CSR::SCAUSE::StoreOrAMOAccessFault:
return builder.put_string("Store/AMO access fault"sv);
case Kernel::RISCV64::CSR::SCAUSE::EnvironmentCallFromUMode:
return builder.put_string("Environment call from U-mode"sv);
case Kernel::RISCV64::CSR::SCAUSE::EnvironmentCallFromSMode:
return builder.put_string("Environment call from S-mode"sv);
case Kernel::RISCV64::CSR::SCAUSE::InstructionPageFault:
return builder.put_string("Instruction page fault"sv);
case Kernel::RISCV64::CSR::SCAUSE::LoadPageFault:
return builder.put_string("Load page fault"sv);
case Kernel::RISCV64::CSR::SCAUSE::StoreOrAMOPageFault:
return builder.put_string("Store/AMO page fault"sv);
default:
VERIFY_NOT_REACHED();
}
}
};