#include #include #include #include Address ExceptionsHandler(ExceptionsContext* frame, ExceptionsType type) { if (type == ExceptionsIRQEl1h || type == ExceptionsIRQEl064) return GICDispatch(frame, type); if (type == ExceptionsSyncEl1h || type == ExceptionsSyncEl064) { UInt32 esr = frame->esr_el1; UInt32 class = (esr >> 26) & 0x3F; UInt32 syndrome = esr & 0x1FFFFFF; if (class == 0x11 || class == 0x15) { if (syndrome == kOSSchedulerExceptionNumber) { return SchedulerNext((Address)frame); } } } OSPanicException(frame); }